IMsInterindustryBalanceTransform.NewFiniteUseMatrix

Синтаксис

NewFiniteUseMatrix: IMsFormulaTerm;

Описание

Свойство NewFiniteUseMatrix определяет терм, соответствующий переменной, в которую будет выгружаться рассчитанная матрица конечного использования. Используется при расчете II квадранта.

Пример

Sub Main;

Var

MB: IMetabase;

CrInf: IMetabaseObjectCreateInfo;

MObj: IMetabaseObject;

Model: IMsModel;

Trans: IMsFormulaTransform;

EndVar, ValVar, AVar, XVar, TwoKvadrVar: IMsVariable;

Dim, Dim1: IDimensionModel;

TransVar: IMsFormulaTransformVariable;

Tree: IMsFormulaTransformSlicesTree;

Slice: IMsFormulaTransformSlice;

Selector: IMsFormulaTransformSelector;

Formula: IMsFormula;

Industry: IMsInterindustryBalanceTransform;

Term: IMsFormulaTerm;

Begin

MB := MetabaseClass.Active;

CrInf := Mb.CreateCreateInfo;

CrInf.ClassId := MetabaseObjectClass.KE_CLASS_MSMODEL;

CrInf.Id := "New_MOB";

CrInf.Name := "New_MOB";

CrInf.Parent := Mb.ItemById("KONT_MODEL");

CrInf.Permanent := False;

MObj := Mb.CreateObject(CrInf).Edit;

Model := MObj As IMsModel;

Trans := Model.Transform;

Model.Kind := MsModelKind.InterindustryBalance;

//Добавляем переменную конечного использования в Outputs модели, и валового выпуска, матрицу А и матрицу Х в Inputs

EndVar := MB.ItemByIdNamespace("EndVar", MB.ItemById("KONT_MODEL").Key).Bind As IMsVariable;

Model.Output.Add(EndVar);

ValVar := MB.ItemByIdNamespace("Val_Prod", MB.ItemById("KONT_MODEL").Key).Bind As IMsVariable;

Model.Input.Add(ValVar);

AVar := MB.ItemByIdNamespace("MatrA", MB.ItemById("KONT_MODEL").Key).Bind As IMsVariable;

Model.Input.Add(AVar);

XVar := MB.ItemByIdNamespace("MatrX", MB.ItemById("KONT_MODEL").Key).Bind As IMsVariable;

Model.Input.Add(XVar);

//Для переменной конечного использования и валового выпуска устанавливаются сквозные измерения

Dim := EndVar.Dimensions.Item(0).Model;

Dim1 := ValVar.Dimensions.Item(0).Model;

Trans.DimensionTransparent(Trans.Outputs.Item(0), Dim) := True;

Trans.DimensionTransparent(Trans.Outputs.Item(0), Dim1) := True;

//Заполнение параметров модели

//Добавляем переменную конечного использования

TransVar := Model.Transform.Outputs.FindById("EndVar");

Tree := TransVar.SlicesTree(Null);

Slice := Tree.CreateSlice(1);

Selector := EndVar.Transform.CreateSelector;

Selector.Slice := Slice;

Formula := Model.Transform.Transform(Selector);

Formula.Kind := MsFormulaKind.InterindustryBalance;

Formula.Level := DimCalendarLevel.Year;

Industry := Formula.Method As IMsInterindustryBalanceTransform;

//Указываем измерение по строкам

Industry.BranchRowDimension := Dim;

//Задаем перменную валового выпуска

TransVar := Model.Transform.Inputs.FindById("Val_Prod");

Tree := TransVar.SlicesTree(Null);

Slice := Tree.CreateSlice(1);

Term := Industry.Operands.Add(Slice);

Industry.Argument := Term;

//Указываем измерение по столбцам

Industry.BranchColumnDimension := Dim1;

//Задаем перменную матрицы A

TransVar := Model.Transform.Inputs.FindById("MatrA");

Tree := TransVar.SlicesTree(Null);

Slice := Tree.CreateSlice(1);

Term := Industry.Operands.Add(Slice);

Industry.NewMatrixA := Term;

//Задаем перменную матрицы X

TransVar := Model.Transform.Inputs.FindById("MatrX");

Tree := TransVar.SlicesTree(Null);

Slice := Tree.CreateSlice(1);

Term := Industry.Operands.Add(Slice);

Industry.MatrixA := Term;

//Второй квадрант

TwoKvadrVar := MB.ItemByIdNamespace("TwoKvadr", MB.ItemById("KONT_MODEL").Key).Bind As IMsVariable;

Model.Input.Add(TwoKvadrVar);

TwoKvadrVar := MB.ItemByIdNamespace("var_11", MB.ItemById("KONT_MODEL").Key).Bind As IMsVariable;

Model.Input.Add(TwoKvadrVar);

TwoKvadrVar := MB.ItemByIdNamespace("var_22", MB.ItemById("KONT_MODEL").Key).Bind As IMsVariable;

Model.Input.Add(TwoKvadrVar);

//Задаем переменную для II квадранта

TransVar := Model.Transform.Inputs.FindById("TwoKvadr");

Tree := TransVar.SlicesTree(Null);

Slice := Tree.CreateSlice(1);

Term := Industry.Operands.Add(Slice);

Industry.SecondQuadrant := Term;

//Задаем переменную на основе которой производится расчет

TransVar := Model.Transform.Inputs.FindById("var_11");

Tree := TransVar.SlicesTree(Null);

Slice := Tree.CreateSlice(1);

Term := Industry.Operands.Add(Slice);

Industry.FiniteUseMatrix := Term;

//Задаем переменную в которую будет выгружаться матрица

TransVar := Model.Transform.Inputs.FindById("var_22");

Tree := TransVar.SlicesTree(Null);

Slice := Tree.CreateSlice(1);

Term := Industry.Operands.Add(Slice);

Industry.NewFiniteUseMatrix := Term;

Industry.GenerateFiniteUse := True;

MObj.Save;

End Sub Main;

После выполнения примера в контейнере моделирования будет создана новая модель межотраслевого баланса. Данная модель решает задачу нахождения конечного использования. В модель будут добавлены переменные конечного использования, валового выпуска, переменные для расчета и выгрузки матрицы А. Так же будет настроен расчет второго квадранта. Структура конечного использования будет рассчитываться на основе переменной с идентификатором "var_11".

См. также:

IMsInterindustryBalanceTransform | IMsInterindustryBalanceTransform.SecondQuadrant | IMsInterindustryBalanceTransform.FiniteUseMatrix