Несмотря на то, что приложение Оптимизации предоставляет удобные способы установить опции и проблемы запуска, оно будет удалено в будущем релизе. Эта тема описывает другие способы выполнить задачи оптимизации, не используя приложение.
Установите опции легко — Опции Набора Используя Опции Набора или Live скрипты: Командная строка или Стандартные Скрипты
Контролируйте оптимизация — Выбирают Plot Functions
Передайте аргументы решателя правильно — Аргументы Решателя Передачи
Начинаясь с R2018a, live скрипты показывают предложения для optimoptions
имена и значения.
На вкладке Home, в разделе File, нажимают New Live Script, чтобы создать live скрипт.
В Live Editor, установить опциях путем ввода options = optimoptions(
. MATLAB® показывает список решателей.
Выберите решатель, затем введите запятую. MATLAB отображает список пар "имя-значение" для решателя.
Выберите пару "имя-значение" одним из этих способов:
Кликните по паре "имя-значение".
Используйте клавиши со стрелками, чтобы подсветить пару "имя-значение", и затем нажать Tab.
Введите первые буквы от пары "имя-значение", и затем нажмите Tab.
Введите соответствующее значение для выбранного имени. Если значение из списка выбора, можно выбрать его тот же способ, которым вы выбрали имя.
Продолжите добавлять пары "имя-значение", пока опции не будут завершены.
Обязательно передайте опции вашему решателю.
[x,fval,exitflag,output] = ... fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nlcon,options)
Совет
Для справки, выбирая решатель, см. Таблицу решений Оптимизации.
Для справки, выбирая алгоритм решателя, смотрите Выбор Algorithm.
Чтобы изучить значение других опций, см. Опции Набора.
Начинаясь с R2018a, командная строка MATLAB и стандартный Редактор показывают предложения для optimoptions
имена и значения.
Установить опциях путем ввода options = optimoptions('
и нажатие Tab. MATLAB показывает список решателей.
Выберите решатель одним из этих способов:
Дважды кликните решатель.
Используйте клавиши со стрелками, чтобы подсветить решатель, и затем нажать Tab.
Введите первые буквы от решателя, и затем нажмите Tab.
Введите ','
и затем нажмите Tab. MATLAB отображает список пар "имя-значение" для решателя.
Выберите пару "имя-значение" с помощью одного из путей, описанных на шаге 2.
Введите соответствующее значение для выбранного имени. Если значение из списка выбора, можно выбрать его тот же способ, которым вы выбрали имя.
Продолжите добавлять пары "имя-значение", пока опции не будут завершены.
Обязательно передайте опции вашему решателю.
[x,fval,exitflag,output] = ... fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nlcon,options)
Совет
Для справки, выбирая решатель, см. Таблицу решений Оптимизации.
Для справки, выбирая алгоритм решателя, смотрите Выбор Algorithm.
Чтобы изучить значение других опций, см. Опции Набора.
Чтобы контролировать вашу оптимизацию, в то время как это запускается, используйте функцию построения графика. Решатели имеют набор встроенных функций построения графика. Использование optimoptions
установить 'PlotFcn'
пара "имя-значение" во встроенную функцию построения графика, массив ячеек встроенных функций построения графика, или указатель на функцию или cell-массив указателей на функцию в функции построения графика.
Выберите функции построения графика с помощью live скриптов:
Чтобы выбрать функции построения графика с помощью Редактора или командной строки, введите опции = optimoptions ('
и затем нажмите Tab:solvername
', 'PlotFcn', {'
Чтобы выбрать пользовательскую функцию построения графика, передайте указатель на функцию, такой как @myplotfun
. Пользовательские функции построения графика используют тот же синтаксис в качестве выходных функций. Смотрите Выходные функции для Optimization Toolbox™ и Синтаксис Функции построения графика и Выходную функцию.
linprog
, lsqlin
, quadprog
, и lsqnonneg
не поддерживайте функции построения графика, потому что эти решатели, обычно запущенные быстро. Чтобы контролировать их прогресс, можно использовать итеративное отображение для linprog
, lsqlin
'interior-point'
алгоритм, и quadprog
'interior-point-convex'
алгоритм. Установите 'Display'
опция к 'iter'
.
fminbnd
, fminsearch
, и fzero
решатели не используют опции, созданные optimoptions
, только optimset
. Чтобы видеть который функции построения графика эти решатели использование, консультируйтесь с их страницами с описанием:
Решатели используют позиционные аргументы функции. Например, синтаксис для fmincon
аргументы
fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)
Если вы хотите включать только fun
x0
, lb
, и options
аргументы, затем соответствующий синтаксис
fmincon(fun,x0,[],[],[],[],lb,[],[],options)
Иногда неопытные будут, вместо этого, писать
fmincon(fun,x0,lb,options) % This is incorrect!
Этот вызов выдает ошибку. В этой неправильной команде, fmincon
интерпретирует lb
аргумент как представление A
матрица и options
аргумент как представление b
вектор. Третий аргумент всегда представляет A
матрица и четвертый аргумент всегда представляют b
вектор.
Это может затруднить, чтобы отслеживать позиционные параметры, когда вы вводите команду. Следующее является предложениями для получения правильного синтаксиса.
Используйте live скрипты. При вводе команду, вы видите подсказчик функций, который ведет вас, чтобы ввести правильный аргумент в каждое положение. Введите []
для неиспользованных аргументов.
Используйте редактор MATLAB или командную строку. При вводе команды, вы видите списки правильного синтаксиса, которые ведут вас, чтобы ввести правильный аргумент в каждое положение. Введите []
для неиспользованных аргументов.
Создайте problem
структура. Таким образом, можно передать меньше аргументов и передать параметры, передаваемые по имени вместо позиционных параметров. Для fmincon
, problem
структура требует, по крайней мере, objective
x0
, solver
, и options
поля . Так, чтобы дать только fun
x0
, lb
, и options
аргументы, создайте problem
структура можно следующим образом:
% These commands assume that fun, x0, lb, and opts exist prob.objective = fun; prob.x0 = x0; prob.lb = lb; prob.options = opts; prob.solver = 'fmincon';
Можно также создать problem
структура с помощью один struct
команда.
% This command assumes that fun, x0, lb, and opts exist prob = struct('objective',fun,'x0',x0,'lb',lb,... 'options',opts,'solver','fmincon')
Если у вас есть Global Optimization Toolbox, можно создать структуру задачи для fmincon
, fminunc
, lsqcurvefit
, и lsqnonlin
при помощи createOptimProblem
(Global Optimization Toolbox).