IMsOptimizationProblem.CriterionFunctionResults

Синтаксис Fore

CriterionFunctionResults: Array;

Синтаксис Fore.NET

CriterionFunctionResults: System.Array;

Описание

Свойство CriterionFunctionResults возвращает результат расчета целевой функции.

Комментарии

Для задания целевой функции используйте свойство IMsOptimizationProblem.CriterionFunction.

Пример Fore

Для выполнения примера в репозитории предполагается наличие контейнера моделирования с идентификатором «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.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;

См. также:

IMsOptimizationProblem