Основанный на проблеме рабочий процесс

Примечание

Существует два различных подхода Optimization Toolbox™ для решения одно-объективных задач оптимизации. В этом разделе описываются основанный на проблеме подход. Основанный на решателе Setup Задачи оптимизации описывает основанный на решателе подход.

Чтобы решить задачу оптимизации, выполните следующие шаги.

  • Создайте проблемный объект при помощи optimproblem. Проблемный объект является контейнером, который вы заполняете с ограничительными выражениями и целью. Эти выражения задают проблему, наряду с границами, которые существуют в проблемных переменных.

    Например, создайте проблему максимизации.

    prob = optimproblem('ObjectiveSense','maximize');
  • Создайте названные переменные при помощи optimvar. Переменная оптимизации является символьной переменной, которую вы используете, чтобы описать проблемную цель и ограничения. Включайте любые границы в определения переменной.

    Например, создайте 15 3 массив бинарных переменных под названием 'x'.

    x = optimvar('x',15,3,'Type','integer','LowerBound',0,'UpperBound',1);
  • Задайте целевую функцию в проблемном объекте как выражение в именованных переменных.

    Примечание

    Если у вас есть нелинейная функция, которая не является многочленным или рациональным выражением, преобразуйте его в выражение оптимизации при помощи fcn2optimexpr. Смотрите Преобразовывают Нелинейную Функцию в Выражение Оптимизации.

    Например, примите, что у вас есть действительный матричный f, одного размера как матрица переменных x, и цель является суммой записей во времена f соответствующие переменные x.

    prob.Objective = sum(sum(f.*x));
  • Задайте ограничения в проблемном объекте как выражения в именованных переменных.

    Примечание

    Если у вас есть нелинейная функция, которая не является многочленным или рациональным выражением, преобразуйте его в выражение оптимизации при помощи fcn2optimexpr. Смотрите Преобразовывают Нелинейную Функцию в Выражение Оптимизации.

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

    onesum = sum(x,2) == 1;
    vertsum = sum(x,1) <= 1;
    prob.Constraints.onesum = onesum;
    prob.Constraints.vertsum = vertsum;
  • Решите задачу оптимизации при помощи solve.

    sol = solve(prob);

В дополнение к этим основным шагам можно рассмотреть проблемное определение прежде, чем решить проблему при помощи showproblem и связанных функций. Установите опции для solve при помощи optimoptions, как объяснено в Решателе Значения по умолчанию Изменения или Опциях.

Для основного смешано-целочисленного линейного примера программирования смотрите Смешано-целочисленные Линейные Основы Программирования: основанный на проблеме или видео версия Решают Смешано-целочисленную Линейную Проблему программирования с помощью Моделирования Оптимизации. Для нелинейного примера смотрите, Решают Ограниченную Нелинейную проблему, Основанную на проблеме. Для более обширных примеров смотрите Основанную на проблеме Нелинейную Оптимизацию, Линейное Программирование и Смешано-целочисленное Линейное Программирование или Квадратичное программирование.

Смотрите также

| | |

Похожие темы