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 дважды.

    • 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 для требований аргумента ввода и вывода этой функции.

  • Объект Parameters — A param.Continuous или вектор объектов

  • Опции Опции оптимизации, заданное использование 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 — Количество итераций оптимизации

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

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

Примеры

свернуть все

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

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

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

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

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

[pOpt,opt_info] = sdo.optimize(@(p) sdoExampleCostFunction(p),p,opts);
 Optimization started 22-Feb-2019 02:15:55

                               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