
- •74. Вырожденный случай.
- •75. Нахождение исходного (опорного) базисного решения задачи лп.
- •76. Свойство двойственности задач лп.
- •77. Несимметричные двойственные задачи.
- •78. Симметричные двойственные задачи
- •79. Теоремы двойственности.
- •80. Виды математических моделей двойственных задач
- •81. Транспортная задача.
- •82. Математическая постановка основной тз по критерию стоимости
- •83. Задача о назначениях.
- •Исходные параметры модели задачи о назначениях
- •Искомые параметры
- •84. Нахождение опорного плана.
- •85. Метод потенциалов.
- •86. Определение потенциалов пунктов
- •Алгоритм
- •87. Открытая модель тз.
- •88. Венгерский метод Алгоритм венгерского метода.
- •89. Транспортная задача по критерию времени
- •90. Целочисленное программирование
- •91. Примеры задач целочисленного программирования
- •92. Методы решения задач целочисленного программирования
- •93. Методы отсекающих плоскостей
- •94. Метод ветвей и границ
- •95. Алгоритм метода ветвей и границ
- •96. Задача коммивояжёра
- •97. Динамическое программирование
- •98. Области применения моделей динамического программирования см. Вопрос 9
- •99. Задача о дилижансах см. Вопрос 10.
- •100. Задача управления запасами
- •Математическое описание задач динамического программирования
- •Алгоритм решения методом динамического программирования
- •103. Задача распределения ресурсов
- •Нелинейное программирование
- •105. Классификация нелинейных задач и методов их решения
Нелинейное программирование
Нелинейное программирование — случай математического программирования, в котором целевой функцией или ограничением является нелинейная функция.
Задача
нелинейного программирования ставится
как задача нахождения оптимума
определенной целевой функции
при
выполнении условий
где
—
параметры,
—
ограничения,
—
количество параметров,
—
количество ограничений.
В отличие от задачи линейного программирования, в задаче программирования нелинейного оптимум не обязательно лежит на границе области, определенной ограничениями.
Общая задача нелинейного программирования (ОЗНП) определяется как задача нахождения максимума (или минимума) целевой функции f(x1, х2,..., xn) на множестве D, определяемом системой ограничений
где хотя бы одна из функций f или gi является нелинейной.
По аналогии с линейным программированием ЗНП однозначно определяется парой (D, f) и кратко может быть записана в следующем виде
Также очевидно, что вопрос о типе оптимизации не является принципиальным. Поэтому мы, для определенности, в дальнейшем по умолчанию будем рассматривать задачи максимизации.
Как и в ЗЛП, вектор х* = (x1*,x2*,...,xn*) D называется допустимым планом, а если для любого x D выполняется неравенство f(x*) ≥ f(x), то х* называют оптимальным планом. В этом случае х*является точкой глобального максимума.
С точки зрения экономической интерпретации f(x) может рассматриваться как доход, который получает фирма (предприятие) при плане выпуска х, а gi(х) ≤ 0 как технологические ограничения на возможности выпуска продукции. В данном случае они являются обобщением ресурсных ограничений в ЗЛП (аiх – bi ≤ 0).
Задача (2.2) является весьма общей, т. к. допускает запись логических условий, например:
или запись условий дискретности множеств:
Набор ограничений, определяющих множество D, при необходимости всегда можно свести либо к системе, состоящей из одних неравенств:
либо, добавив фиктивные переменные у, к системе уравнений:
Перечислим свойства ЗНП, которые существенно усложняют процесс их решения по сравнению с задачами линейного программирования:
1. Множество допустимых планов D может иметь очень сложную структуру (например, быть невыпуклым или несвязным).
2. Глобальный максимум (минимум) может достигаться как внутри множества D, так и на его границах (где он, вообще говоря, будет не совпадать ни с одним из локальных экстремумов).
3. Целевая функция f может быть недифференцируемой, что затрудняет применение классических методов математического анализа.
105. Классификация нелинейных задач и методов их решения
В течение последних двух десятилетий из нелинейного программирования выделились самостоятельные разделы:
выпуклое программирование,
квадратичное программирование,
целочисленное программирование,
стохастическое программирование,
динамическое программирование и др.
Задачи выпуклого программирования – это задачи, в которых определяется минимум выпуклой функции (или максимум вогнутой), заданной на выпуклом замкнутом множестве. Эти задачи среди задач нелинейного программирования наиболее изучены.
Среди задач выпуклого программирования более подробно изучены задачи квадратичного программирования. В этих задачах целевая функция – квадратична, а ограничения – линейны.
В задачах целочисленного программирования неизвестные параметры могут принимать только целочисленные значения.
В задачах стохастического программирования в целевой функции или в функциях ограничений содержатся случайные величины, которые подчиняются законам теории вероятностей.
В задачах динамического программирования ограничения содержат как параметр время и при этом описываются дифференциальными уравнениями. Процесс нахождения решений в задачах динамического программирования является многоэтапным.
Для решения задачи нелинейного программирования было предложено много методов, которые можно классифицировать по различным признакам.
По количеству локальных критериев в целевой функции методы нелинейного программирования делятся на:
однокритериальные,
многокритериальные.
По
длине вектора
методы
делятся на:
однопараметрические или одномерные (n=1),
многопараметрические или многомерные (n>1).
По наличию ограничений методы нелинейного программирования делятся на:
без ограничений (безусловная оптимизация),
с ограничениями (условная оптимизация).
По типу информации, используемой в алгоритме поиска экстремума методы делятся на:
методы прямого поиска, т.е. методы, в которых при поиске экстремума целевой функции используются только ее значения;
градиентные методы первого порядка, в которых при поиске экстремума функции используются значения ее первых производных;
градиентные методы второго порядка, в которых при поиске экстремума функции наряду с первыми производными используются и вторые производные.
Ни один метод нелинейного программирования не является универсальным.
Если
целевая функция
является линейной,
а ограниченным пространством
является политоп,
то задача является задачей линейного
программирования, которая может быть
решена с помощью хорошо известных
решений линейного
программирования.
Если целевая функция является вогнутой (задача
максимизации) или выпуклой (задача
минимизации) и множеством ограничений
служит выпуклая, то задачу называют выпуклой,
и в большинстве случаев могут быть
использованы общие методы выпуклой
оптимизации. Если целевая функция
является отношением вогнутых и выпуклых
функций (при максимизации) и ограничения
выпуклые, то задача может быть преобразована
в задачу выпуклой оптимизации
использованием техник дробного
программирования.
Существуют несколько методов для решения невыпуклых задач. Один подход заключается в использовании специальных формулировок задач линейного программирования. Другой метод предусматривает использование методов ветвей и границ, где задача делится на подклассы, чтобы быть решенной с выпуклыми (задача минимизации) или линейными аппроксимациями, которые образуют нижнюю границу общей стоимости в пределах раздела. При следующих разделах в определенный момент будет получено фактическое решение, стоимость которого равна лучшей нижней границе, полученной для любого из приближенных решений. Это решение является оптимальным, хотя, возможно, не единственным. Алгоритм можно прекратить на ранней стадии, с уверенностью, что оптимальное решение находится в рамках допустимого отклонения от найденной лучшей точки; такие точки называются ε-оптимальными.