Result: IMsFormulaTerm;
Result: Prognoz.Platform.Interop.Ms.IMsFormulaTerm;
Свойство Result возвращает терм, соответствующий моделируемой переменной.
Для получения коллекции термов, используемых для составления уравнения модели, используйте свойство IMsDeterministicTransform.Operands.
Для выполнения примера в репозитории предполагается наличие контейнера моделирования с идентификатором «MS», содержащего модель детерминированного уравнения с идентификатором «MODEL_D».
Добавьте ссылки на системные сборки: Metabase, Ms.
Sub UserProc;
Var
mb: IMetabase;
ModelCont: IMetabaseObjectDescriptor;
Model: IMsModel;
Transform: IMsFormulaTransform;
Formula: IMsFormula;
Determ: IMsDeterministicTransform;
i: integer;
Calc: IMsMethodCalculation;
arr: Array Of Double;
Period: IMsModelPeriod;
Begin
// Получаем текущий репозиторий
mb := MetabaseClass.Active;
// Получаем контейнер моделирования
ModelCont := mb.ItemById("MS");
// Получаем модель коррекции ошибок
Model := mb.ItemByIdNamespace("MODEL_D", ModelCont.Key).Edit As IMsModel;
// Задаем период действия формулы
Model.CalculationPeriod := MsCalculationPeriod.Both;
// Получаем параметры модели
Transform := Model.Transform;
Formula := Transform.FormulaItem(0);
Determ := Formula.Method As IMsDeterministicTransform;
// Создаем объект с параметрами расчета модели
Calc := Transform.CreateCalculation;
// Задаем периоды расчета
Period := Model.Transform.Period;
Calc.Period.IdentificationStartDate := Period.IdentificationStartDate;
Calc.Period.IdentificationEndDate := Period.IdentificationEndDate;
Calc.Period.ForecastStartDate := Period.ForecastStartDate;
Calc.Period.ForecastEndDate := Period.ForecastEndDate;
Calc.CurrentPoint := Period.IdentificationStartDate;
// Получаем данные моделируемой переменной и выводим их в окно консоли
arr := Determ.Result.Serie(Calc);
For i := 0 To arr.Length - 1 Do
Debug.WriteLine(arr[i]);
End For;
(Model As IMetabaseObject).Save;
End Sub UserProc;
В результате выполнения примера в окно консоли будут выведены значения моделируемой переменной.
Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore. Вместо компонентов Fore используйте их Fore.NET аналоги.
Imports Prognoz.Platform.Interop.Ms;
…
Public Shared Sub Main(Params: StartParams);
Var
mb: IMetabase;
ModelCont: IMetabaseObjectDescriptor;
Model: IMsModel;
Transform: IMsFormulaTransform;
Formula: IMsFormula;
Determ: IMsDeterministicTransform;
i: integer;
Calc: IMsMethodCalculation;
arr: System.Array;
Period: IMsModelPeriod;
Begin
// Получаем текущий репозиторий
mb := Params.Metabase;
// Получаем контейнер моделирования
ModelCont := mb.ItemById["MS"];
// Получаем модель коррекции ошибок
Model := mb.ItemByIdNamespace["MODEL_D", ModelCont.Key].Edit() As IMsModel;
// Задаем период действия формулы
Model.CalculationPeriod := MsCalculationPeriod.mcpBoth;
// Получаем параметры модели
Transform := Model.Transform;
Formula := Transform.FormulaItem[0];
Determ := Formula.Method As IMsDeterministicTransform;
// Создаем объект с параметрами расчета модели
Calc := Transform.CreateCalculation();
// Задаем периоды расчета
Period := Model.Transform.Period;
Calc.Period.IdentificationStartDate := Period.IdentificationStartDate;
Calc.Period.IdentificationEndDate := Period.IdentificationEndDate;
Calc.Period.ForecastStartDate := Period.ForecastStartDate;
Calc.Period.ForecastEndDate := Period.ForecastEndDate;
Calc.CurrentPoint := Period.IdentificationStartDate;
// Получаем данные моделируемой переменной и выводим их в окно консоли
arr := Determ.Result.Serie[Calc];
For i := 0 To arr.Length - 1 Do
System.Diagnostics.Debug.WriteLine(arr[i]);
End For;
(Model As IMetabaseObject).Save();
End Sub;
См. также: