Несмотря на то, что приложение Оптимизации предоставляет удобные способы установить опции и проблемы выполнения, оно будет удалено в будущем релизе. Эта тема описывает другие способы выполнить задачи оптимизации, не используя приложение.
Установите опции легко — Опции Набора Используя Опции Набора или 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 скриптов:
Чтобы выбрать функции построения графика с помощью Редактора или командной строки, введите
и затем нажмите Tab:options = optimoptions('solvername','PlotFcn',{'
Чтобы выбрать пользовательскую функцию построения графика, передайте указатель на функцию, такой как @myplotfun
. Для получения дополнительной информации при записи пользовательской функции построения графика, смотрите Синтаксис Функции построения графика.
linprog
, lsqlin
, quadprog
и lsqnonneg
не поддерживают функции построения графика, потому что эти решатели, обычно запущенные быстро. Чтобы контролировать их прогресс, можно использовать итеративное отображение для linprog
,
алгоритма 'interior-point'
lsqlin
и
алгоритма 'interior-point-convex'
quadprog
. Установите опцию '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
.