sdo.optimize

Решите задачу оптимизации проекта

    Описание

    Решите задачу оптимизации, чтобы найти значения проекта переменных, которые удовлетворяют проект требованиям.

    Использовать sdo.optimize для решения проекта задачи оптимизации следующего вида:

    minpF(p) при условии , что {Cleq(p)0Ceq(p)=0A×pBAeq×p=Beqlbpub

    Здесь:

    • F - стоимость (цель).

    • p является скаляром или вектором проекта переменных.

    • Cleq и Ceq являются нелинейными ограничениями неравенства и равенства, соответственно.

    • A и B являются линейными ограничениями неравенства.

    • Aeq и Beq являются линейными ограничениями равенства.

    • lb и ub являются нижней и верхней границами на p, соответственно.

    [optimParam,optimInfo] = sdo.optimize(optimFcn,param) использование fmincon, метод оптимизации по умолчанию, чтобы найти значения параметров optimParam которые удовлетворяют требованиям, указанным в optimFcn.

    пример

    [optimParam,optimInfo] = sdo.optimize(optimFcn,param,options) решает задачу оптимизации с опциями оптимизации, заданными в options. Использование sdo.OptimizeOptions чтобы задать эти опции.

    [optimParam,optimInfo] = sdo.optimize(prob) решает задачу оптимизации, заданную в структуре prob который содержит функцию, которая будет минимизирована, проект переменные и опции оптимизации.

    Примеры

    свернуть все

    Решите задачу оптимизации, заданную в sdoExampleCostFunction. Пример функции стоимости включен в программное обеспечение Simulink ® Design Optimization™ .

    Эта функция , взятая в качестве примера, вычисляет следующие затраты:

    f(x)=x2

    Функция также включает следующие нелинейные и линейные ограничения неравенства, соответственно:

    x2-4x+10

    2x3-30

    Для оптимизации, f(x) минимизируется, при условии удовлетворения ограничениям. Кроме того, функция , взятая в качестве примера, вычисляет градиенты затрат и ограничений.

    Создайте переменный проект, используя начальное значение 1.

    p = param.Continuous('x',1);

    Задайте опции оптимизации по умолчанию для использования fmincon решатель. Для этого примера включить расчет градиента затрат и ограничений из sdoExampleCostFunction, установите GradFcn опция для 'on'.

    opts = sdo.OptimizeOptions;
    opts.GradFcn = 'on';

    Оптимизируйте параметр.

    [pOptim,optim_info] = sdo.optimize(@(p) sdoExampleCostFunction(p),p,opts);
     Optimization started 22-Apr-2021 20:12:23
    
                                   max                     First-order 
     Iter F-count        f(x)   constraint    Step-size    optimality
        0      3            1            0
        1      5         0.09            0          0.7         0.59
        2      6    0.0716349     0.001047       0.0324       0.0129
        3      7    0.0717968    9.127e-08     0.000302     2.37e-06
    Local minimum found that satisfies the constraints.
    
    Optimization completed because the objective function is non-decreasing in 
    feasible directions, to within the value of the optimality tolerance,
    and constraints are satisfied to within the value of the constraint tolerance.
    

    Оптимизированное значение параметров сохранено в Value свойство возвращенного param.Continuous pOptim объекта.

    pOptim.Value
    ans = 0.2679
    

    Входные параметры

    свернуть все

    Функция стоимости для минимизации, заданная как указатель на функцию. Решатель оптимизации вызывает эту функцию во время оптимизации.

    Функция требует:

    • Один входной параметр, который является вектором param.Continuous объекты, которые будут настроены.

      Чтобы передать дополнительные входные параметры, используйте анонимную функцию. Для примера, new_fcn = @(p) fcn(p,arg1,arg2,...).

    • Один выходной аргумент, который является структурой с одним или несколькими из следующих полей:

      ОбластьЗначение
      F

      Стоимость (цель), оцененная в p. Решатель минимизирует F.

      F является скалярным двойником.

      Cleq

      Нелинейные нарушения ограничений неравенства, оцениваемые в p. Решатель удовлетворяет Cleq (p) ≤ 0.

      Cleq является вектором m двойной точкой -by-1, где m - количество нелинейных ограничений неравенства.

      Ceq

      Нелинейные нарушения ограничений равенства оцениваются в p. Решатель удовлетворяет Ceq (p) = 0.

      Ceq является вектором r двойной точкой -by-1, где r - количество нелинейных ограничений равенства.

      leq

      Линейное неравенство нарушений ограничений оценено в p. Решатель удовлетворяет leq (p) ≤ 0.

      leq является вектором n двойной точкой -by-1, где n - количество линейных ограничений неравенства.

      eq

      Нарушения линейного ограничения равенства оцениваются в p. Решатель удовлетворяет eq (p) = 0.

      eq является вектором s двойной точкой -by-1 или [], где s - количество линейных ограничений равенства.

      Чтобы задать чистую задачу выполнимости, опущите F или установите F = []. Чтобы задать задачу минимизации, опускайте Cleq, Ceq, leq, и eq, или установите их значения [].

      Программа вычисляет градиенты затрат и нарушений ограничений с помощью числового возмущения. Если вы хотите задать, как вычисляются градиенты, включите второй выходной аргумент и установите GradFcn свойство sdo.OptimizeOptions на 'on'. Этот аргумент должен быть структурой с одним или несколькими из следующих полей:

      ОбластьЗначение
      FВектор n Double -by-1, который содержит dF(p)/dp, где n - количество скалярных параметров
      CleqМатрица n -by m, которая содержит dCleq(p)/dp, где m - количество нелинейных ограничений неравенства
      CeqМатрица n -by r, которая содержит dCeq(p)/dp, где r - количество нелинейных ограничений равенства

      Необходимо вернуть производные от всех применимых целей и нарушений ограничений.

    Пример: Для примера функции затрат, которую можно оптимизировать с помощью Simulink® Проектируйте Optimization™ программное обеспечение, вводите edit sdoExampleCostFunction в MATLAB® командное окно.

    Типы данных: function_handle

    Моделируйте параметры для оптимизации, заданные как param.Continuous объект или вектор param.Continuous объекты.

    • Чтобы задать один параметр для оптимизации, используйте param.Continuous объект.

    • Чтобы задать несколько параметров для оптимизации, используйте вектор param.Continuous объекты.

    Опции оптимизации, заданные как объект, созданный с использованием sdo.OptimizeOptions. Используйте этот набор опций, чтобы задать:

    • Метод оптимизации

    • Максимальное количество итераций

    • Допуски

    Структура задачи оптимизации, заданная как структура со следующими полями:

    Имя поляЗначение
    OptFcnФункция затрат для минимизации. См. optimFcn для входов и выходных аргументов этой функции.
    ParametersМоделируйте параметры для оптимизации, задайте как param.Continuous объекты.
    OptionsОпции оптимизации, созданные с помощью sdo.OptimizeOptions.

    Типы данных: struct

    Выходные аргументы

    свернуть все

    Оптимизированные значения параметров, возвращенные как param.Continuous объект или вектор param.Continuous объекты. Размер optimParam совпадает с размером param. Оптимизированные значения параметров хранятся в Value свойство возвращенного param.Continuous объект.

    Информация об оптимизации, возвращенная как структура с одним или несколькими из следующих полей:

    ОбластьЗначение
    FОптимизированная стоимость (целевое) значение.
    Cleq

    Оптимизированные нелинейные нарушения ограничений неравенства.

    Поле появляется, если вы задаете нелинейное ограничение неравенства в optimFcn.

    Значение является вектором m -by-1, где порядок элементов соответствует порядку, указанному в optimFcn. Положительные значения указывают, что ограничение не удовлетворено. Проверьте exitflag поле для подтверждения успешности оптимизации.

    Ceq

    Оптимизированные нелинейные нарушения ограничений равенства.

    Поле появляется, если вы задаете нелинейное ограничение равенства в optimFcn.

    Значение является вектором r двойной точностью -by-1, где порядок элементов соответствует порядку, указанному в optimFcn. Любые ненулевые значения указывают, что ограничение не удовлетворено. Проверьте exitflag поле для подтверждения успешности оптимизации.

    leq

    Оптимизированные нарушения ограничений линейного неравенства.

    Поле появляется, если вы задаете линейное ограничение неравенства в optimFcn.

    Значение является вектором n двойной точностью -by-1, где порядок элементов соответствует порядку, указанному в optimFcn. Ненулевые значения указывают, что ограничение не удовлетворено. Проверьте exitflag поле для подтверждения успешности оптимизации.

    eq

    Оптимизированные нарушения линейных ограничений равенства.

    Поле появляется, если вы задаете линейные ограничения равенства в optimFcn.

    Значение является вектором s двойной точностью -by-1, где порядок элементов соответствует порядку, указанному в optimFcn. Ненулевые значения указывают, что ограничение не удовлетворено. Проверьте exitflag поле для подтверждения успешности оптимизации.

    Gradients

    Градиенты затрат и ограничений при оптимизированных значениях параметров. Смотрите, как алгоритм оптимизации формулирует задачи минимизации, как решатель вычисляет градиенты.

    Это поле появляется, если решатель, заданный в Method свойство sdo.OptimizeOptions вычисляет градиенты.

    Значение является структурой, поля которой зависят от optimFcn.

    Jacobian

    Якобианская информация при оптимизированных значениях параметров.

    Поле появляется, если решатель, заданный в Method свойство sdo.OptimizeOptions вычисляет якобийцев.

    Значение является структурой, поля которой зависят от optimFcn.

    exitflag

    Целое число, идентифицирующее причину завершения алгоритма. Посмотрите fmincon, patternsearch (Global Optimization Toolbox), fminsearch, и lsqnonlin для списка значений и соответствующих причин прекращения.

    iterationsКоличество итераций оптимизации.
    SolverOutput

    Структура с выходом информацией о решателе. Поля этой структуры зависят от решателя оптимизации, заданного в Method свойство sdo.OptimizeOptions. Посмотрите fmincon, patternsearch (Global Optimization Toolbox), fminsearch, и lsqnonlin для получения списка выходов решателя и их описания.

    Stats

    Структура, которая содержит статистические данные, собранные во время оптимизации, такие как время начала и конца, количество вычислений функции и перезапусков.

    Типы данных: struct

    Совет

    По умолчанию программа отображает информацию об оптимизации для каждой итерации в командном окне MATLAB. Дополнительные сведения об отображаемой информации см. в разделе:

    Вы можете сконфигурировать уровень этого отображения с помощью MethodOptions.Display свойство набора опций оптимизации.

    Альтернативная функциональность

    Приложения

    Приложение Response Optimizer предоставляет графический интерфейс, чтобы задать требования проект и оптимизировать параметры модели. Для получения дополнительной информации смотрите Оптимизация проекта для достижения пользовательской цели (GUI) и Оптимизация проекта для отслеживания опорного сигнала (GUI).

    Приложение Parameter Estimator предоставляет графический интерфейс, чтобы задать эксперименты и настроить параметры модели так, чтобы выход модели совпадал с данными эксперимента. Для получения дополнительной информации см. «Оценка значений параметров модели» (GUI).

    Расширенные возможности

    Введенный в R2011a