Альтернативы приложения оптимизации

Оптимизируйте без Использования приложения

Несмотря на то, что приложение Оптимизации предоставляет удобные способы установить опции и проблемы запуска, оно будет удалено в будущем релизе. Эта тема описывает другие способы выполнить задачи оптимизации, не используя приложение.

Установите опции Используя live скрипты

Начинаясь с R2018a, live скрипты показывают предложения для optimoptions имена и значения.

  1. На вкладке Home, в разделе File, нажимают New Live Script, чтобы создать live скрипт.

  2. В Live Editor, опциях набора путем ввода options = optimoptions(. MATLAB® показывает список решателей.

  3. Выберите решатель, затем введите запятую. MATLAB отображает список пар "имя-значение" для решателя.

    Выберите пару "имя-значение" одним из этих способов:

    • Кликните по паре "имя-значение".

    • Используйте клавиши со стрелками, чтобы подсветить пару "имя-значение", и затем нажать Tab.

    • Введите первые буквы от пары "имя-значение", и затем нажмите Tab.

  4. Введите соответствующее значение для выбранного имени. Если значение из списка выбора, можно выбрать его тот же способ, которым вы выбрали имя.

  5. Продолжите добавлять пары "имя-значение", пока опции не будут завершены.

  6. Обязательно передайте опции вашему решателю.

    [x,fval,exitflag,output] = ...
        fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nlcon,options)

Совет

Установка опций: командная строка или стандартные скрипты

Начинаясь с R2018a, командная строка MATLAB и стандартный Редактор показывают предложения для optimoptions имена и значения.

  1. Установите опции путем ввода options = optimoptions(' и нажатие Tab. MATLAB показывает список решателей.

  2. Выберите решатель одним из этих способов:

    • Дважды кликните решатель.

    • Используйте клавиши со стрелками, чтобы подсветить решатель, и затем нажать Tab.

    • Введите первые буквы от решателя, и затем нажмите Tab.

  3. Введите ',' и затем нажмите Tab. MATLAB отображает список пар "имя-значение" для решателя.

    Выберите пару "имя-значение" с помощью одного из путей, описанных на шаге 2.

  4. Введите соответствующее значение для выбранного имени. Если значение из списка выбора, можно выбрать его тот же способ, которым вы выбрали имя.

  5. Продолжите добавлять пары "имя-значение", пока опции не будут завершены.

  6. Обязательно передайте опции вашему решателю.

    [x,fval,exitflag,output] = ...
        fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nlcon,options)

Совет

Выберите Plot Functions

Чтобы контролировать вашу оптимизацию, в то время как это запускается, используйте функцию построения графика. Решатели имеют набор встроенных функций построения графика. Используйте optimoptions установить 'PlotFcn' пара "имя-значение" во встроенную функцию построения графика, массив ячеек встроенных функций построения графика, или указатель на функцию или cell-массив указателей на функцию в функции построения графика.

Выберите функции построения графика с помощью live скриптов:

Чтобы выбрать функции построения графика с помощью Редактора или командной строки, введите опции = optimoptions ('solvername', 'PlotFcn', {' и затем нажмите Tab:

Чтобы выбрать пользовательскую функцию построения графика, передайте указатель на функцию, такой как @myplotfun. Для получения дополнительной информации при записи пользовательской функции построения графика, смотрите Синтаксис Функции построения графика.

linprog, lsqlin, quadprog, и lsqnonneg не поддерживайте функции построения графика, потому что эти решатели, обычно запущенные быстро. Чтобы контролировать их прогресс, можно использовать итеративное отображение в linprog, lsqlin 'interior-point' алгоритм и quadprog 'interior-point-convex' алгоритм. Установите 'Display' опция к 'iter'.

fminbndfminsearch, и fzero решатели не используют опции, созданные optimoptions, только optimset. Чтобы видеть который функции построения графика эти решатели использование, консультируйтесь с их страницами с описанием:

Передайте аргументы решателя

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

fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)

Если вы хотите включать только funx0 , 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 структура требует, по крайней мере, objectivex0 , solver, и options поля . Так, чтобы дать только funx0 , 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.

Похожие темы