IMsProblemCalculation.VariableStub

Синтаксис

VariableStub(Stub: IVariableStub): IMatrixDataSource;

Параметры

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

Описание

Свойство VariableStub возвращает объект, позволяющий получить доступ к данным переменной контейнера моделирования, передаваемой посредством параметра Stub.

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

Пример

Public Class MCallback: Object, IMsProblemCalculationCallback

Public Calculation: IMsProblemCalculation;

 

Public Sub OnError(Message: String);

Begin

Debug.WriteLine(Message);

End Sub OnError;

 

Public Sub OnFinish;

Begin

Debug.WriteLine("Расчет задачи завершен");

Calculation := Null;

End Sub OnFinish;

 

Public Sub OnMessage(Message: String);

Begin

Debug.Write(DateTime.Now);

Debug.WriteLine(": " + Message);

End Sub OnMessage;

 

Public Sub OnModelCalculation(Model: IMsModel);

Var

Inputs: IMsFormulaTransformVariables;

i, j: Integer;

MatrDS: IMatrixDataSource;

Matr: IMatrix;

MatrIter: IMatrixIterator;

Begin

Debug.WriteLine("Расчет модели: " + (Model As IMetabaseObject).Id);

Inputs := Model.Transform.Inputs;

For i := 0 To Inputs.Count - 1 Do

Debug.WriteLine("Данные входной переменной: " + (Inputs.Item(i) As IMetabaseObject).Id);

MatrDS := Calculation.VariableStub(Inputs.Item(i).VariableStub);

Matr := MatrDS.Execute(Null);

MatrIter := Matr.CreateIterator;

MatrIter.Move(IteratorDirection.First);

While MatrIter.Valid Do

Debug.WriteLine("j = " + j.ToString + "  " + (MatrIter.Value As String));

MatrIter.Move(IteratorDirection.Next);

j := j + 1;

End While;

End For;

End Sub OnModelCalculation;

 

Public Sub OnStep;

Begin

Debug.WriteLine("Выполнено шагов: " + Calculation.PointPassed.ToString + " из " +

Calculation.PointCount.ToString);

End Sub OnStep;

Public Sub OnBreak(Breakpoint: IMsBreakpoint);

Begin

Debug.WriteLine(Breakpoint.Name);

End Sub OnBreak;

End Class MCallback;

Sub Main;

Var

MB: IMetabase;

MObj: IMetabaseObject;

Problem: IMsProblem;

CallBack: MCallback;

CalcSett: IMsProblemCalculationSettings;

Calculation: IMsProblemCalculation;

Begin

MB := MetabaseClass.Active;

MObj := MB.ItemByIdNamespace("PROBLEM_1", MB.ItemById("KONT_MODEL").Key).Edit;

Problem := MObj As IMsProblem;

CallBack := New MCallback.Create;

CalcSett := Problem.CreateCalculationSettings;

CalcSett.Callback := CallBack;

Calculation := Problem.Calculate(CalcSett);

CallBack.Calculation := Calculation;

Calculation.Run;

MObj.Save;

End Sub Main;

После выполнения примера будет осуществлен расчет задачи с идентификатором "PROBLEM_1". Для отслеживания событий, происходящих во время расчета, используется объект пользовательского класса "MCallback". При отработке события OnStep в консоль будет выводиться количество пройденных шагов расчета. При расчете моделей, входящих в задачу, в консоль будут выводиться данные входных переменных, используемые при расчете моделей.

См. также:

IMsProblemCalculation