Jump to content

Нелинейное программирование

(Перенаправлено из Нелинейной оптимизации )

В математике нелинейное программирование ( НЛП ) — это процесс решения задачи оптимизации , где некоторые ограничения не являются линейными равенствами или целевая функция не является линейной функцией . Задача оптимизации — это вычисление экстремумов (максимумов, минимумов или стационарных точек) целевой функции по набору неизвестных действительных переменных и условий выполнения системы равенств и называются неравенств , которые в совокупности ограничениями . Это раздел математической оптимизации , который занимается нелинейными задачами.

Определение и обсуждение

[ редактировать ]

Пусть n , m и p — положительные целые числа. Пусть X — подмножество R н (обычно с коробчатыми ограничениями), пусть f , g i и h j вещественнозначные функции на X для каждого i в { 1 , ..., m } и каждого j в { 1 , ..., p }, причем по крайней мере один из f , g i и h j является нелинейным.

Задача нелинейного программирования — это задача оптимизации вида

В зависимости от набора ограничений существует несколько возможностей:

  • допустимая проблема – это такая проблема, для которой существует хотя бы один набор значений переменных выбора, удовлетворяющий всем ограничениям.
  • задачей невыполнимой является задача, для которой ни один набор значений переменных выбора не удовлетворяет всем ограничениям. То есть ограничения взаимно противоречивы, и решения не существует; допустимое множество — это пустое множество .
  • Неограниченная задача — это осуществимая задача, для которой целевую функцию можно сделать лучше, чем любое заданное конечное значение. Таким образом, оптимального решения не существует, поскольку всегда существует допустимое решение, которое дает лучшее значение целевой функции, чем любое предложенное решение.

Большинство реалистичных приложений имеют выполнимые проблемы, а невозможные или неограниченные проблемы рассматриваются как отказ базовой модели. В некоторых случаях невыполнимые проблемы решаются путем минимизации суммы нарушений выполнимости.

Некоторые частные случаи нелинейного программирования имеют специализированные методы решения:

Применимость

[ редактировать ]

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

В экспериментальной науке некоторый простой анализ данных (например, сопоставление спектра с суммой пиков известного местоположения и формы, но неизвестной величины) может быть выполнен с помощью линейных методов, но в целом эти проблемы также являются нелинейными. Обычно имеется теоретическая модель изучаемой системы с переменными параметрами в ней и модель эксперимента или экспериментов, которые также могут иметь неизвестные параметры. Каждый пытается найти наилучшее соответствие численно. В этом случае часто требуется измерить точность результата, а также наилучшее соответствие.

Методы решения общей нелинейной программы

[ редактировать ]

Аналитические методы

[ редактировать ]

При условиях дифференцируемости и ограничений условия Каруша – Куна – Такера (ККТ) обеспечивают необходимые условия для оптимальности решения. Если некоторые из функций недифференцируемы, субдифференциальные версии условий Каруша – Куна – Такера (ККТ) . доступны [1]

При выпуклости условия ККТ достаточны для глобального оптимума . Без выпуклости эти условия достаточны только для локального оптимума . В некоторых случаях число локальных оптимумов невелико, и их все можно найти аналитически и найти тот, для которого объективное значение наименьшее. [2] : Раздел 5

Числовые методы

[ редактировать ]

В большинстве реальных случаев очень сложно решить условия ККТ аналитически, поэтому задачи решаются численными методами . Эти методы являются итеративными: они начинаются с начальной точки, а затем переходят к точкам, которые должны быть ближе к оптимальной точке, используя некоторое правило обновления. Существует три типа правил обновления: [2] : 5.1.2 

  • Подпрограммы нулевого порядка – используют только значения целевой функции и функций ограничений в текущей точке;
  • Подпрограммы первого порядка – используйте также значения градиентов этих функций;
  • Подпрограммы второго порядка — используйте также значения гессианов этих функций.

Подпрограммы третьего порядка (и выше) теоретически возможны, но не используются на практике из-за более высокой вычислительной нагрузки и небольшой теоретической выгоды.

Ветвь и граница

[ редактировать ]

Другой метод предполагает использование методов ветвей и границ , когда программа делится на подклассы, которые необходимо решить с помощью выпуклых (задача минимизации) или линейных аппроксимаций, которые образуют нижнюю границу общей стоимости внутри подразделения. При последующих делениях в какой-то момент будет получено фактическое решение, стоимость которого равна наилучшей нижней границе, полученной для любого из приближенных решений. Это решение является оптимальным, хотя, возможно, и не единственным. Алгоритм также может быть остановлен раньше, с уверенностью, что наилучшее возможное решение находится в пределах допуска от найденной лучшей точки; такие точки называются ε-оптимальными. Завершение до ε-оптимальных точек обычно необходимо для обеспечения конечного завершения. Это особенно полезно для больших, сложных задач и задач с неопределенными затратами или значениями, где неопределенность можно оценить с помощью соответствующей оценки надежности.

Реализации

[ редактировать ]

Существует множество решателей нелинейного программирования, в том числе с открытым исходным кодом:

  • ALGLIB (C++, C#, Java, Python API) реализует несколько решателей нелинейного программирования первого порядка и без производных.
  • NLopt (реализация C/C++ с многочисленными интерфейсами, включая Julia, Python, R, MATLAB/Octave), включает в себя различные решатели нелинейного программирования.
  • SciPy (де-факто стандарт научного Python) имеет решатель scipy.optimize, который включает в себя несколько алгоритмов нелинейного программирования (нулевого, первого и второго порядка).
  • IPOPT (реализация C++ с многочисленными интерфейсами, включая C, Fortran, Java, AMPL, R, Python и т. д.) — это решатель метода внутренней точки (производные нулевого порядка и, возможно, первого и второго порядка).

Численные примеры

[ редактировать ]

2-мерный пример

[ редактировать ]
Синяя область — это допустимая область . Касание . линии с допустимой областью представляет собой решение Линия представляет собой наилучшую достижимую контурную линию (место расположения с заданным значением целевой функции).

Простая задача (показана на схеме) может быть определена ограничениями с целевой функцией, которую необходимо максимизировать где Икс знак равно ( Икс 1 , Икс 2 ) .

3-мерный пример

[ редактировать ]
Касание верхней поверхности с ограниченным пространством в центре представляет собой решение.

Другая простая задача (см. диаграмму) может быть определена ограничениями с целевой функцией, которую необходимо максимизировать где Икс знак равно ( Икс 1 , Икс 2 , Икс 3 ) .

См. также

[ редактировать ]
  1. ^ Рущинский, Анджей (2006). Нелинейная оптимизация . Принстон, Нью-Джерси: Издательство Принстонского университета . стр. xii+454. ISBN  978-0691119151 . МР   2199043 .
  2. ^ Jump up to: а б Немировский и Бен-Тал (2023). «Оптимизация III: Выпуклая оптимизация» (PDF) .

Дальнейшее чтение

[ редактировать ]
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 34e49ef135f53f3437ed6109d1002e1a__1714192260
URL1:https://arc.ask3.ru/arc/aa/34/1a/34e49ef135f53f3437ed6109d1002e1a.html
Заголовок, (Title) документа по адресу, URL1:
Nonlinear programming - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)