IMsFormulaTermList.Add

Syntax

Add(Slice: IMsFormulaTransformSlice): IMsFormulaTerm;

Parameters

Slice. Data slice in the variable, to which the term will refer.

Description

The Add method adds a new term to the collection.

Example

Executing the example requires that the repository contains the KONT_MODEL modeling container. This container contains a modeling problem with the NEW_NONLINREG identifier that uses the non-linear regression method for calculation.

Add links to the Metabase and Ms system assemblies.

Sub UserProc;
Var
    MB: IMetabase;
    CrInf: IMetabaseObjectCreateInfo;
    MObj: IMetabaseObject;
    Model: IMsModel;
    Trans: IMsFormulaTransform;
    VarTrans: IMsFormulaTransformVariable;
    Tree: IMsFormulaTransformSlicesTree;
    Slice: IMsFormulaTransformSlice;
    Selector: IMsFormulaTransformSelector;
    Formula: IMsFormula;
    NonLinear: IMsNonLinearRegressionTransform;
    Varr: IMsVariable;
    TransVar: IMsFormulaTransformVariable;
    TermX1: IMsFormulaTerm;
    s: String;
Begin
    MB := MetabaseClass.Active;
    //create a model
    CrInf := Mb.CreateCreateInfo;
    CrInf.ClassId := MetabaseObjectClass.KE_CLASS_MSMODEL;
    CrInf.Id := "New_NonLinReg";
    CrInf.Name := "New_NonLinReg";
    CrInf.Parent := Mb.ItemById("KONT_MODEL");
    CrInf.Permanent := False;
    MObj := Mb.CreateObject(CrInf).Edit;
    Model := MObj As IMsModel;
    Trans := Model.Transform;
    //add an output variable
    Varr := MB.ItemByIdNamespace("Var_1",MB.ItemById("KONT_MODEL").Key).Bind As IMsVariable;
    Model.Output.Add(Varr);
    VarTrans := Trans.Outputs.Item(0);
    Tree := VarTrans.SlicesTree(VarTrans);
    Slice := Tree.CreateSlice(1);
    Selector := Model.Transform.CreateSelector;
    Selector.Slice := Slice;
    Formula := Model.Transform.Transform(Selector);
    Formula.Kind := MsFormulaKind.NonLinearRegression;
    NonLinear := Formula.Method As IMsNonLinearRegressionTransform;
    //add a factor
    Varr := MB.ItemByIdNamespace("Var_Factor",MB.ItemById("KONT_MODEL").Key).Bind As IMsVariable;
    Model.Input.Add(Varr);
    TransVar := Model.Transform.Inputs.Item(0);
    //Compare term with slice in variable
    TermX1 := NonLinear.Operands.Add(TransVar.SlicesTree(VarTrans).CreateSlice(1));
    //change term parameters
    TermX1.Inversion := MsInversion.DLog;
    TermX1.InversionLag :=MsInversionLag.PrecidingYear;
    TermX1.UpdateSlice(TermX1.Slice,"-1");
    //create an equation
    s := "A0+"+ Trans.SliceToTerm(TermX1.Slice, TermX1.Lag.AsString) + "/10 ";
    NonLinear.Expression.AsString:= s;
    MObj.Save;
End Sub UserProc;

After executing the example, a new model is created in the modeling container. The output variable and one factor are added to the created model. To make the equation, create the term that refers to the slice of the first input variable. The way of initial transformation of data and lag is changed for the term. The non-linear regression method will be used for model calculation.

See also:

IMsFormulaTermList