Основанные на проблеме алгоритмы оптимизации

Внутренне, solve функция решает задачи оптимизации путем вызова решателя:

  • linprog для линейных целевых и линейных ограничений

  • intlinprog для линейных объективных и линейных ограничений и целочисленных ограничений

  • quadprog для квадратичных объективных и линейных ограничений

  • lsqlin или lsqnonneg для линейных методов наименьших квадратов с линейными ограничениями

  • lsqcurvefit или lsqnonlin для нелинейных методов наименьших квадратов с ограниченными ограничениями

  • fminunc для задач без каких-либо ограничений (даже не переменных границ) и с общей нелинейной целевой функцией

  • fmincon для задач с нелинейным ограничением или с общим нелинейным объектом и, по крайней мере, одним ограничением

  • fzero для скалярного нелинейного уравнения

  • lsqlin для систем линейных уравнений, с границами или без

  • fsolve для систем нелинейных уравнений без ограничений

  • lsqnonlin для систем нелинейных уравнений с границами

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

Первый шаг в алгоритме происходит, когда вы помещаете выражения оптимизации в задачу. Система координат OptimizationProblem объект имеет внутренний список переменных, используемых в его выражениях. Каждая переменная имеет линейный индекс в выражении и размер. Поэтому переменные задачи имеют подразумеваемую матричную форму. prob2struct функция выполняет преобразование из формы задачи в форму решателя. Для получения примера смотрите Преобразование задачи в структуру.

Для нелинейных задач оптимизации, solve использует automatic differentiation для вычисления градиентов целевой функции и нелинейных ограничительных функций. Эти производные применяются, когда целевые и ограничительные функции состоят из Поддерживаемых Операций над Переменными Оптимизации и Выражениями и не используют fcn2optimexpr функция. Когда автоматическая дифференциация не применяется, решатели оценивают производные, используя конечные различия. Для получения дополнительной информации об автоматической дифференциации см. раздел «Фон автоматической дифференциации».

Для решателей по умолчанию и разрешенных решателей, которые solve вызовы, в зависимости от цели задачи и ограничений, см. 'solver'. Переопределить значение по умолчанию можно при помощи 'solver' аргумент пары "имя-значение" при вызове solve.

Для алгоритма, который intlinprog используется для решения задач MILP, см. «Алгоритм intlinprog». Для алгоритмов, которые linprog использует для решения задач линейного программирования, см. «Алгоритмы линейного программирования». Для алгоритмов, которые quadprog использует для решения квадратичных задач программирования, см. «Алгоритмы квадратичного программирования». Для линейных или нелинейных алгоритмов решения методом наименьших квадратов см. Алгоритмы наименьших квадратов (Model Fitting). Для нелинейных алгоритмов решателя, см., Без ограничений, Алгоритмы нелинейной Оптимизации и Ограниченные Нелинейные Алгоритмы Оптимизации.

Для решения нелинейных уравнений, solve внутренне представляет каждое уравнение как различие между левой и правой сторонами. Тогда solve пытается минимизировать сумму квадратов компонентов уравнения. Для алгоритмов решения нелинейных систем уравнений, см. Алгоритмы решения уравнений. Когда задача также имеет границы, solve вызовы lsqnonlin для минимизации суммы квадратов компонентов уравнения. См. Алгоритмы нахождения наименьших квадратов (Model Fitting).

Примечание

Если ваша целевая функция является суммой квадратов, и вы хотите solve чтобы распознать его как таковой, запишите его как sum(expr.^2), а не как expr'*expr или любая другая форма. Внутренний анализатор распознает только явные суммы квадратов. Для получения дополнительной информации смотрите Запись целевой функции для основанных на проблеме наименьших квадратов. Для получения примера смотрите Неотрицательные линейные задачи для метода наименьших квадратов, Основанные на проблеме.

См. также

| |

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте