Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекция 16.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
45.24 Кб
Скачать

Методы решения задач нелинейного программирования

Область применения. Нелинейное программирование ис­пользуется для решения однокритериальных задач оптимиза­ции с детерминированной целевой функцией при накладывае­мых ограничениях в виде равенств или неравенств. Для дан­ного класса задач снимается условие линейности функций или ограничений.

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

При наличии линейных ограничений эти производные ищут только в точках, удовлетворяющих данным ограничени­ям. Нелинейность ограничений может привести к тому, что пространство возможных решений становится невыпуклым, и тогда оптимальному решению не всегда будет соответствовать одна из угловых точек этого пространства.

Универсальных алгоритмов решения нелинейных задач не существует из-за большого разнообразия вида нелиней­ности.

Наиболее употребительные методы. Разработанные ныне методы решения задач нелинейного программирования могут быть разделены на ряд больших групп:

♦ методы линеаризации целевой функции и ограниче­ний, основанные на их разложений в ряд, логариф­мирование и т.д., с последующим применением ме­тодов линейного программирования для решения за­дачи;

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

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

Методы решения задач дискретного (целочисленного) программирования

Область применения. Дискретное программирование ис­пользуется для решения задач с детерминированной целевой функцией при ограничениях на значения переменных.

Примерами таких задач являются: определение очередно­сти выполнения работ, назначение ресурсов по объектам ис­пользования, выбор маршрута на сети «задача о коммивояже­ре».

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

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

Наиболее употребительные методы. Различают два класса методов: методы отсечения и комбинаторные методы.

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

Процесс повторяется до выполнения требований по цело­численности. Для решения целочисленных задач используется алгоритм Гомори и алгоритм Дальтона и Ллевелина

Комбинаторные методы используются для реше­ния нелинейных задач с булевыми переменными. Для таких задач используется так называемый аддитивный алгоритм, вычислительные операции в котором осуществляют вычита­нием. Идея аддитивного алгоритма заключается в переборе двух возможных решений (где N — число булевых переменных) и выбор лучшего из них.