Задача моделирования

При создании и работе с задачей моделирования следует учитывать следующие особенности:

Для работы с задачей моделирования через язык Fore предназначен интерфейс IMsProblem. Используя его свойства и методы можно настроить параметры задачи и произвести ее расчет.

Прежде всего, для работы с задачей моделирования необходимо задать рассчитываемую метамодель (свойство IMsProblem.MetaModel) и определить тип задачи (свойство IMsProblem.Details). От выбора типа задачи во многом зависят параметры ее расчета. Для всех типов задач базовым является интерфейс IMsProblemDetails, определяющий периоды прогнозирования и идентификации задачи. Для работы с конкретным типом задачи необходимо использовать один из дочерних интерфейсов IMsProblemDetails:

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

Например, создание объекта «ControlProblem» для определения параметров задачи оптимального уравнения:

Sub Main;

Var

Problem: IMsProblem;

ControlProblem: IMsTransformationProblem;

Begin

ControlProblem := New MsTransformationProblem.Create;

Problem.Details := ControlProblem;

End Sub Main

Программирование параметров расчета задачи зависит от ее типа. Более подробную информацию об этом можно найти в описании соответствующих интерфейсов.

Создание и расчет задачи моделирования

После создания метамодели «Метамодель для расчета сальдо» следует создать задачу моделирования, с помощью которой будет осуществлен расчет цепочки по сценарию «Факт».

Для выполнения модуля по созданию и расчету задачи необходимо добавить ссылки на сборки «Ms», «Metabase».

Sub Main;

Var

MB: IMetabase;

KMDesc: IMetabaseObjectDescriptor;

CrInfo: IMetabaseObjectCreateInfo;

MObj: IMetabaseObject;

Problem: IMsProblem;

TranfProblem: IMsTransformationProblem;

CalcSett: IMsProblemCalculationSettings;

Calculation: IMsProblemCalculation;

Begin

MB := MetabaseClass.Active;

KMDesc := MB.ItemById("MODEL_SPACE");

// Создание задачи моделирования

CrInfo := MB.CreateCreateInfo;

CrInfo.ClassID := MetabaseObjectClass.KE_CLASS_MSPROBLEM;

CrInfo.Id := "PROBLEM_BALANCE";

CrInfo.Name := "Задача расчета сальдо";

CrInfo.Parent := KMDesc;

MObj := MB.CreateObject(CrInfo).Edit;

Problem := MObj As IMsProblem;

// Установка рассчитываемой метамодели

Problem.MetaModel := MB.ItemByIdNamespace("META_MODEL_BALANCE", KMDesc.Key).Bind As IMsMetaModel;

// Настройка типа расчета задачи: задача трансформации

TranfProblem := New MsTransformationProblem.Create;

Problem.Details := TranfProblem;

MObj.Save;

Debug.WriteLine("Создана задача '" + MObj.Name + "' с идентификатором '" + MObj.Id + "'");

// Расчет задачи

CalcSett := Problem.CreateCalculationSettings;

CalcSett.FactIncluded := True;

Calculation := Problem.Calculate(CalcSett);

Calculation.SaveHistory := True;

Calculation.Run;

End Sub Main

После выполнения модуля будет создана задача трансформации «Задача расчета сальдо» с идентификатором «PROBLEM_BALANCE», информация об этом будет выведена в окно консоли. Задача будет рассчитана по сценарию «Факт» в векторном режиме. История расчета будет сохранена.

О выводе результатов расчета рассказано с разделе «Просмотр значений переменной».

См. также:

Общие принципы программирования с использованием сборки Ms