AbsI(Input: Variant): Variant;
AbsI(Input: object; Context: Prognoz.Platform.Interop.Fore.ForeRuntimeContext): object;
Input. Переменная;
Context. Контекст. Параметр используется только в Fore.NET.
Метод AbsI возвращает абсолютное значение (модуль) точек указанной переменной, если она содержит только целые значения.
Для расчёта модуля точек переменной, содержащей не только целые значения, используйте метод IModelling.Abs.
Для выполнения примера в репозитории предполагается наличие контейнера моделирования с идентификатором «MS». В данном контейнере содержится модель с идентификатором «MODEL_D», рассчитываемая методом детерминированного уравнения и содержащая хотя бы одну входную переменную.
Добавьте ссылки на системные сборки «Metabase», «Ms».
Sub UserAbsI;
Var
Mb: IMetabase;
ModelSpace, ModelObj: IMetabaseObject;
Transf: IMsFormulaTransform;
Formula: IMsFormula;
Model: IMsModel;
Determ: IMsDeterministicTransform;
TransVar: IMsFormulaTransformVariable;
Slice: IMsFormulaTransformSlice;
TermInfo: IMsFormulaTermInfo;
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 := Transf.Inputs.Item(0);
Slice := TransVar.Slices.Item(0);
TermInfo := Transf.CreateTermInfo;
TermInfo.Slice := Slice;
Expr := Determ.Expression;
Expr.References := "Ms";
Expr.AsString := "AbsI(" + TermInfo.TermInnerText + ")";
If Expr.Valid
Then ModelObj.Save;
Else Debug.WriteLine("Модель не сохранена: ошибка в формуле");
End If;
End Sub UserAbsI;
После выполнения примера модель будет рассчитывать абсолютное значение (модуль) точек первой входной переменной, если она содержит только целые значения.
Необходимые требования и результат выполнения примера 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: IMsFormulaTransformVariable;
Slice: IMsFormulaTransformSlice;
TermInfo: IMsFormulaTermInfo;
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 := Transf.Inputs.Item[0];
Slice := TransVar.Slices.Item[0];
TermInfo := Transf.CreateTermInfo();
TermInfo.Slice := Slice;
Expr := Determ.Expression;
Expr.References := "Ms";
Expr.AsString := "AbsI(" + TermInfo.TermInnerText + ")";
If Expr.Valid
Then ModelObj.Save();
Else System.Diagnostics.Debug.WriteLine("Модель не сохранена: ошибка в формуле");
End If;
End Sub;
Выражение 1:
AbsI({Brazil|BCA})
Результат: для каждого наблюдения показателя Brazil|BCA будет рассчитано абсолютное значение. Если показатель содержит вещественные значения, то возникнет ошибка.
Применение: можно использовать в формулах вычисляемых рядов базы данных временных рядов и в формулах моделей контейнера моделирования, являющегося дочерним по отношению к базе данных временных рядов.
Выражение 2:
AbsI(X1)
Результат: для каждой точки фактора X1 будет рассчитано абсолютное значение.
Применение: можно использовать в формулах моделей контейнера моделирования.
Выражение 3:
AbsI(-7)
Результат: 7.
Применение: можно использовать в формулах вычисляемых рядов базы данных временных рядов и моделей контейнера моделирования.
См. также:
IModelling | База данных временных рядов: Калькулятор, Абсолютное значение | Контейнер моделирования: Редактирование регрессора/формулы