sdo.optimize

Пакет: sdo

Спроектируйте решение для задачи оптимизации

Синтаксис

[param_opt,opt_info] = sdo.optimize(opt_fcn,param)
[param_opt,opt_info] = sdo.optimize(opt_fcn,param,options)
[param_opt,opt_info] = sdo.optimize(prob)

Описание

[param_opt,opt_info] = sdo.optimize(opt_fcn,param) использование fmincon (метод оптимизации по умолчанию), чтобы решить задачу оптимизации проекта формы:

minpF(p)  при ограничениях {Cleq(p)0Ceq(p)=0A×pBAeq×p=Beqlbpub

где

  • F Стойте (цель)

  • Переменная p — Design

  • Cleq, Ceq — Нелинейное неравенство и ограничения равенства

  • A, B Линейные ограничения неравенства

  • Aeq, Beq — Линейные ограничения равенства

  • lb, ub — Верхние и нижние границы на p

[param_opt,opt_info] = sdo.optimize(opt_fcn,param,options) задает опции оптимизации. Для оценки параметра вы обычно используете метод Нелинейного метода наименьших квадратов:

opts = sdo.OptimizeOptions('Method','lsqnonlin');

[param_opt,opt_info] = sdo.optimize(prob) использует структуру, которая содержит функцию, которая будет минимизирована, переменные проекта и опции оптимизации.

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

opt_fcn

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

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

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

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

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

    • F — Значение стоимости (цель) оценено в p. Решатель минимизирует F.

      F 1x1 'double'.

    • Cleq — Значение нелинейных нарушений ограничения неравенства оценено в p. Решатель удовлетворяет Cleq(p) <= 0.

      Cleq двойной mx1 вектор, где m количество нелинейных ограничений неравенства.

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

      Значением является двойной rx1 вектор, где r количество нелинейных ограничений равенства.

    • leq — Значение линейных нарушений ограничения неравенства оценено в p. Решатель удовлетворяет leq(p) <= 0.

      leq двойной nx1 вектор, где n количество линейных ограничений неравенства.

    • eq — Значение линейных нарушений ограничения равенства оценено в p. Решатель удовлетворяет eq(p) == 0.

      eq двойной sx1 вектор или [], где s количество линейных ограничений равенства.

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

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

    • F — Двойной nx1 вектор, который содержит dF(p)/dp, где n количество скалярных параметров.

    • Cleq — Двойной nxm матрица, которая содержит dCleq(p)/dp, где m количество нелинейных ограничений неравенства.

    • Ceq — Двойной nxr матрица, которая содержит dCeq(p)/dp, где r количество нелинейных ограничений равенства.

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

Для примера введите edit sdoExampleCostFunction.

param

param.Continuous возразите или вектор объектов.

options

Опции оптимизации.

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

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

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

  • Допуски

prob

Структура со следующими полями:

  • OptFcn — Имя функции, которое будет минимизировано. Смотрите opt_fcn для требований аргумента ввода и вывода этой функции.

  • Parametersparam.Continuous возразите или вектор объектов

  • Options — Опции оптимизации, заданное использование sdo.OptimizeOptions

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

param_opt

param.Continuous объект или вектор объектов, содержа оптимизированные значения параметров в Value свойство.

opt_info

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

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

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

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

    Значением является mx1 вектор, где порядок элементов соответствуют порядку, заданному в opt_fcn. Положительные значения указывают, что ограничению не удовлетворили. Проверяйте exitflag подтвердить что оптимизация, за которой следуют.

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

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

    Значением является двойной rx1 вектор, где порядок элементов соответствуют порядку, заданному в opt_fcn. Любые ненулевые значения указывают, что ограничению не удовлетворили. Проверяйте exitflag подтвердить что оптимизация, за которой следуют.

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

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

    Значением является двойной nx1 вектор, где порядок элементов соответствуют порядку, заданному в opt_fcn. Ненулевые значения указывают, что ограничению не удовлетворили. Проверяйте exitflag подтвердить что оптимизация, за которой следуют.

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

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

    Значением является двойной sx1 вектор, где порядок элементов соответствуют порядку, заданному в opt_fcn. Ненулевые значения указывают, что ограничению не удовлетворили. Проверяйте exitflag подтвердить что оптимизация, за которой следуют.

  • Gradients — Стойте и ограничительные градиенты в оптимизированных значениях параметров. Смотрите, Как Алгоритм Оптимизации Формулирует проблемы Минимизации о том, как решатель вычисляет градиенты.

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

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

  • exitflag — Целое число, идентифицирующее причину завершения алгоритма. Смотрите fmincon, patternsearch и fminsearch для списка значений и соответствующих причин завершения.

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

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

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

Примеры

свернуть все

Создайте переменные проекта.

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

Задайте опции оптимизации.

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

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

[pOpt,opt_info] = sdo.optimize(@(p) sdoExampleCostFunction(p),p,opts);
 Optimization started 30-Jan-2020 02:51:48

                               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.

Советы

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

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

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

Представленный в R2011b