IModelling.MaxI

Синтаксис Fore

MaxI(Inputs: Array): Variant;

Синтаксис Fore.NET

MaxI(Context: Prognoz.Platform.Interop.Fore.ForeRuntimeContext; Inputs: System.Array): object;

Параметры

Context. Контекст. Параметр используется только в Fore.NET;

Inputs. Переменная.

Описание

Метод MaxI возвращает максимальное значение среди точек переменной, если она содержит только целые значения.

Комментарии

Для получения максимального значения переменной, содержащей не только целые значения, используйте метод IModelling.Max.

Пример Fore

Для выполнения примера в репозитории предполагается наличие контейнера моделирования с идентификатором «MS». В данном контейнере содержится модель с идентификатором «MODEL_D», рассчитываемая методом детерминированного уравнения и содержащая более одной входной переменной. Первая входная переменная должна содержать только целые значения.

Добавьте ссылки на системные сборки «Metabase», «Ms».

Sub UserMaxI;
Var
    Mb: IMetabase;
    ModelSpace, ModelObj: IMetabaseObject;
    Transf: IMsFormulaTransform;
    Formula: IMsFormula;
    Model: IMsModel;
    Determ: IMsDeterministicTransform;
    Term: 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;
    
// Получаем первую входную переменную
    Term := Determ.Operands.Item(0);
    Inp_1 := Term.TermToInnerText;
    
// Получаем вторую входную переменную
    Term := Determ.Operands.Item(1);
    Expr := Determ.Expression;
    Expr.References := 
"Ms";
    Expr.AsString := Term.TermToInnerText + 
"+MaxI(" + Inp_1 + ")";
    
If Expr.Valid
        
Then ModelObj.Save;
        
Else Debug.WriteLine("Модель не сохранена: ошибка в формуле");
    
End If;
End Sub UserMaxI;

После выполнения примера модель будет рассчитывать значения второй входной переменной, увеличенные на максимальное значение первой входной переменной.

Пример Fore.NET

Необходимые требования и результат выполнения примера 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;
    Term: 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;
    // Получаем первую входную переменную
    Term := Determ.Operands.Item[0];
    Inp_1 := Term.TermToInnerText();
    // Получаем вторую входную переменную
    Term := Determ.Operands.Item[1];
    Expr := Determ.Expression;
    Expr.References := "Ms";
    Expr.AsString := Term.TermToInnerText() + "+MaxI(" + Inp_1 + ")";
    If Expr.Valid
        Then ModelObj.Save();
        Else System.Diagnostics.Debug.WriteLine("Модель не сохранена: ошибка в формуле");
    End If;
End Sub;

Пример использования в выражениях

Выражение 1:

MaxI({Brazil|BCA})

Результат: максимальное значение наблюдений показателя Brazil|BCA. Если показатель содержит вещественные значения, то возникнет ошибка.

Применение: можно использовать в формулах вычисляемых рядов базы данных временных рядов и в формулах моделей контейнера моделирования, являющегося дочерним по отношению к базе данных временных рядов.

Выражение 2:

MaxI(X1)

Результат: максимальное значение точек фактора X1.

Применение: можно использовать в формулах моделей контейнера моделирования.

Выражение 3:

MaxI(1, 2, 3, 4)

Результат: 4.

Применение: можно использовать в формулах вычисляемых рядов базы данных временных рядов и моделей контейнера моделирования.

См. также:

IModelling | База данных временных рядов: Калькулятор | Контейнер моделирования: Редактирование регрессора/формулы