CriterionFunctionResults: Array;
CriterionFunctionResults: System.Array;
Свойство CriterionFunctionResults возвращает результат расчета целевой функции.
Для задания целевой функции используйте свойство IMsOptimizationProblem.CriterionFunction.
Для выполнения примера в репозитории предполагается наличие контейнера моделирования с идентификатором «MS», содержащего настроенную задачу оптимального управления с идентификатором «CONTROL_PROBLEM».
Добавьте ссылки на системные сборки: Metabase, Ms.
Sub UserProc;
Var
mb: IMetabase;
MsObj: IMetabaseObject;
Ms: IMsModelSpace;
Problem: IMsProblem;
CalcSettings: IMsProblemCalculationSettings;
Calc: IMsProblemCalculation;
ControlProblem: IMsControlProblem;
i: Integer;
Begin
// Получаем текущий репозиторий
mb := MetabaseClass.Active;
// Получаем контейнер моделирования
MsObj := mb.ItemById("MS").Bind;
Ms := MsObj As IMsModelSpace;
// Получаем задачу оптимального управления
Problem := mb.ItemByIdNamespace("CONTROL_PROBLEM", MsObj.Key).Bind As IMsProblem;
ControlProblem := Problem.Details As IMsControlProblem;
// Создаем настройки расчета задачи
CalcSettings := Problem.CreateCalculationSettings;
// Создаем объект для расчета задачи
Calc := Problem.Calculate(CalcSettings);
// Выполняем расчет
Calc.Run;
// Получаем рассчитанную задачу
ControlProblem := Problem.Details As IMsControlProblem;
// Выводим в окно консоли результат расчета целевой функции
For i := 0 To ControlProblem.CriterionFunctionResults.Length - 1 Do
Debug.WriteLine(ControlProblem.CriterionFunctionResults[i]);
End For;
End Sub UserProc;
В результате выполнения примера в окно консоли будет выведен результат расчета целевой функции в задаче оптимального управления.
Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.
Imports Prognoz.Platform.Interop.Ms;
…
Public Shared Sub Main(Params: StartParams);
Var
mb: IMetabase;
MsObj: IMetabaseObject;
Ms: IMsModelSpace;
Problem: IMsProblem;
CalcSettings: IMsProblemCalculationSettings;
Calc: IMsProblemCalculation;
ControlProblem: IMsControlProblem;
i: Integer;
Begin
// Получаем текущий репозиторий
mb := Params.Metabase;
// Получаем контейнер моделирования
MsObj := mb.ItemById["MS"].Bind();
Ms := MsObj As IMsModelSpace;
// Получаем задачу оптимального управления
Problem := mb.ItemByIdNamespace["CONTROL_PROBLEM", MsObj.Key].Bind() As IMsProblem;
ControlProblem := Problem.Details As IMsControlProblem;
// Создаем настройки расчета задачи
CalcSettings := Problem.CreateCalculationSettings();
// Создаем объект для расчета задачи
Calc := Problem.Calculate(CalcSettings);
// Выполняем расчет
Calc.Run();
// Получаем рассчитанную задачу
ControlProblem := Problem.Details As IMsControlProblem;
// Выводим в окно консоли результат расчета целевой функции
For i := 0 To ControlProblem.CriterionFunctionResults.Length - 1 Do
System.Diagnostics.Debug.WriteLine(ControlProblem.CriterionFunctionResults.GetValue(i));
End For;
End Sub;
См. также: