AverageI(Parameters: Array): Variant;
AverageI(Context: Prognoz.Platform.Interop.Fore.ForeRuntimeContext; Parameters: System.Array): object;
Context. Контекст. Параметр используется только в Fore.NET;
Parameters. Переменная.
Метод AverageI возвращает среднее значение точек указанной переменной, если она содержит только целые значения.
Для расчёта среднего значения точек переменной, содержащей не только целые значения, используйте метод IModelling.Average.
Для выполнения примера в репозитории предполагается наличие контейнера моделирования с идентификатором «MS». В данном контейнере содержится модель с идентификатором «MODEL_D», рассчитываемая методом детерминированного уравнения и содержащая более одной входной переменной. Первая входная переменная должна содержать только целые значения.
Добавьте ссылки на системные сборки «Metabase», «Ms».
Sub UserAverageI;
Var
Mb: IMetabase;
ModelSpace, ModelObj: IMetabaseObject;
Transf: IMsFormulaTransform;
Formula: IMsFormula;
Model: IMsModel;
Determ: IMsDeterministicTransform;
TransVar: IMsFormulaTerm;
Inp_1: String;
Expr: IExpression;
Begin
Mb := MetabaseClass.Active;
// Получаем модель
ModelSpace := Mb.ItemById("MS").Bind;
ModelObj := Mb.ItemByIdNamespace("MODEL_D", ModelSpace.Key).Edit;
Model := ModelObj As IMsModel;
Transf := Model.Transform;
Formula := Transf.FormulaItem(0);
Determ := Formula.Method As IMsDeterministicTransform;
// Получаем первую входную переменную
TransVar := Determ.Operands.Item(0);
Inp_1 := TransVar.TermToInnerText;
// Получаем вторую входную переменную
TransVar := Determ.Operands.Item(1);
// Задаём формулу расчёта
Expr := Determ.Expression;
Expr.References := "Ms";
Expr.AsString := TransVar.TermToInnerText + "+AverageI(" + Inp_1 + ")";
If Expr.Valid
Then ModelObj.Save;
Else Debug.WriteLine("Модель не сохранена: ошибка в формуле");
End If;
End Sub UserAverageI;
После выполнения примера модель будет рассчитывать значения второй входной переменной, увеличенные на среднее значение первой входной переменной.
Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.
Imports Prognoz.Platform.Interop.ForeSystem;
Imports Prognoz.Platform.Interop.Ms;
…
Public Shared Sub Main(Params: StartParams);
Var
Mb: IMetabase;
ModelSpace, ModelObj: IMetabaseObject;
Transf: IMsFormulaTransform;
Formula: IMsFormula;
Model: IMsModel;
Determ: IMsDeterministicTransform;
TransVar: IMsFormulaTerm;
Inp_1: String;
Expr: IExpression;
Begin
Mb := Params.Metabase;
// Получаем модель
ModelSpace := Mb.ItemById["MS"].Bind();
ModelObj := Mb.ItemByIdNamespace["MODEL_D", ModelSpace.Key].Edit();
Model := ModelObj As IMsModel;
Transf := Model.Transform;
Formula := Transf.FormulaItem[0];
Determ := Formula.Method As IMsDeterministicTransform;
// Получаем первую входную переменную
TransVar := Determ.Operands.Item[0];
Inp_1 := TransVar.TermToInnerText();
// Получаем вторую входную переменную
TransVar := Determ.Operands.Item[1];
// Задаём формулу расчёта
Expr := Determ.Expression;
Expr.References := "Ms";
Expr.AsString := TransVar.TermToInnerText() + "+AverageI(" + Inp_1 + ")";
If Expr.Valid
Then ModelObj.Save();
Else System.Diagnostics.Debug.WriteLine("Модель не сохранена: ошибка в формуле");
End If;
End Sub;
Выражение 1:
AverageI({Brazil|BCA})
Результат: рассчитано среднее значение наблюдений показателя Brazil|BCA. Если показатель содержит вещественные значения, то возникнет ошибка.
Применение: можно использовать в формулах вычисляемых рядов базы данных временных рядов и в формулах моделей контейнера моделирования, являющегося дочерним по отношению к базе данных временных рядов.
Выражение 2:
AverageI(X1)
Результат: рассчитано среднее значение точек фактора X1.
Применение: можно использовать в формулах моделей контейнера моделирования.
Выражение 3:
AverageI(1, 2, 1, 7)
Результат: 3.
Применение: можно использовать в формулах вычисляемых рядов базы данных временных рядов и моделей контейнера моделирования.
См. также:
IModelling | База данных временных рядов: Калькулятор | Контейнер моделирования: Редактирование регрессора/формулы