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

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

Задача математического программирования называется нелинейной, если нелинейны ограничения или целевая функция.

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

Разделяют задачи безусловной и условной оптимизации. Задачами безусловной оптимизации называются задачи оптимизации функции многих переменных без дополнительных ограничений. Существуют следующие методы безусловной оптимизации: покоординатного спуска, градиентные, сопряженных направлений, метод Ньютона. Задачами условной оптимизации называются задачи о оптимизации целевой функции многих переменных f(x1, …, xn) при условии, что эти переменные удовлетворяют следующим ограничениям: qi(x1, …, xn) = 0, или dj(x1, …, xn) 0, Решение задачи основывается на линейной или квадратичной аппроксимации целевой функции для определения приращений x1, …,xn на каждой итерации.

Существуют также приближенные методы решения нелинейных задач. Это методы основанные на методе кусочно-линейной аппроксимации. Точность нахождения решений зависит от количества интервалов, на которых мы находим решение линейной задачи, максимально приближенной к нелинейной.

Такой метод позволяет производить расчеты с помощью симплекс-метода. Обычно в линейных моделях коэффициенты целевой функции постоянны и не зависят от значения переменных. Однако существует ряд задач, где затраты зависят от объема нелинейно. Такие задачи решаются следующим способом: решают задачу ЛП с коэффициентами целевой функции при максимальных значениях переменных. Если в решении мы получили переменные, для которых брались коэффициенты, значит задача решена. В противном случае мы изменяем коэффициенты при целевой функции на коэффициенты при вновь полученных значениях переменных и решаем полученную задачу ЛП. Так мы повторяем до тех пор, пока не будет получено на двух последующих шагах одно и то же решение. Решение задачи нелинейного программирования.

Метод кусочно – линейной аппроксимации. В нашей задаче есть такая величина, как коэффициент увеличения затрат при нагрузке, который не использовался нами при решении задачи методами ЛП и ЦЛП. Собственно этот коэффициент и введен для превращения задачи в нелинейную путем нелинейной зависимости между увеличением затрат и загрузкой предприятий.

Составим таблицу: № предприятия Коэффи- Циент затрат % Количе-ство составов Коэфф. измене-ния затрат Затраты на 1т у.е. Доход Прибыль На 1т у.е. Прибыль на 1 состав у.е. 1 2 3 4 5 6 7 8  100 6,17 1 6 11,64 5,64 676,8 70 – 100 4.31–6,16 1,4 8,4 3,24 388,8 50 – 70 3,08–4,31 1,6 9,6 2,04 244,8 30 – 50 1,85–3,08 1,7 10,2 1,44 172,8 до 30 до 1,85 1,8 10,8 0,84 100,8  100 6,18 1 7 11,175 4,175 459,25 70 – 100 4,33-6,18 1,2 8,4 2,775 305,25 50 – 70 3,09-4,33 1,4 9,8 1,375 151,25 30 – 50 1,85-3,09 1,5 10,5 0,675 74,25 до 30 до 1,85 1,7 11,9 - 0,725 - 79,75  100 5,66 1 8 10,78 2,78 294,66 70 – 100 3,96-5,66 1,3 10,4 0,38 40,28 50 – 70 2,83-3,96 1,6 12,8 - 2,02 - 214,12 30 – 50 1,7 – 2,83 1,7 13,6 - 2,82 - 298,92 до 30 до 1,7 1,9 15,2 - 4,42 - 458,52 Где доход (Д) рассчитывается по формуле: , где Ц – цена готовой продукции, Е – извлечение,  - содержание полезного компонента. Прибыль (П) рассчитывается по формуле: П = Д – З , где Д – доход, З – затраты.

Затраты (З) рассчитываются по формуле: , где С – затраты на добычу, транспортировку и переработку коэффициент изменения затрат. 1.Пусть x1, x2, x3 принимают свои максимальные значения, тогда Z1 = 676,8x1 + 459,25x2 + 294,66x3MAX Ограничения: x1 + x2 + x3 =12 – по количеству составов; x1 6,17 - максимальный объем добычи руды с предприятия 1; x2 6,18 - максимальный объем добычи руды с предприятия 2; x3 5,66 - максимальный объем добычи руды с предприятия 3; 0,96x1 + 0,11x2 – 0,95x30 – по максимально допустимому содержанию полезного компонента в руде; -0,84x1 + 1,06x30 – по минимально допустимому содержанию полезного компонента в руде. Решение 1. x1 = 6,17 x2 = 0,95 x3=4,88 Z1 = 6048,24 2.Так как x1=6,17 – максимально возможный, то коэффициент при x1 в целевой функции Z2 будет равен 676, 8. Так как x2=0,95; x2 < 1,87, то коэффициент при x2 в целевой функции Z2 будет равнятся -79,75. Так как x3=4,88; 3,96 < 4,88 <5,66, следовательно x3 попадает в интервал 3,96 – 5,66, следовательно коэффициент при x3 в целевой функции Z2 будет равен 40,28. Следовательно Z2 = 676,8x1 – 79,75x2 + 40,28x3 Решение 2. x1 = 6,17 x2 = 0,17 x3 = 5,66 Z2 = 4387,26 3.Так как x1=6,17 – максимально возможный, то коэффициент при x1 в целевой функции Z3 будет равен 676, 8. Так как x2=0,17; x2 < 1,87, то коэффициент при x2 в целевой функции Z3 будет равнятся -79,75. Так как x3=5,66 – максимально возможный, то коэффициент при x3 в целевой функции Z3 будет равен 294,68. Следовательно Z3 = 676,8x1 – 79,75x2 + 294,68x3 Решение 3. x1 = 6,166 x2 = 0,17 x3 = 5,66 Z3 = 5827,16 Вывод: Так как на третьем шаге мы получили значения переменных равных значениям переменных на втором шаге, то мы получили искомое решение задачи нелинейного программирования.

Третий шаг, за счет того, что значения коэффициента при x3 были увеличены с 40,28 до 294,68, улучшил целевую функцию Z3 на 5827,16 – 4387,26 = 1439,9 у.е. Плановые задания предприятиям. , где P – плановое задание тыс. тонн, q – производительность состава, x – количество составов, i – номер предприятия.

Для предприятия 1: тыс. тонн; Для предприятия 2: тыс. тонн; Для предприятия 3: тыс. тонн. Аппроксимация кривой зависимости затрат от количества составов.

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

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

Иными словами из множества допустимых управлений U=(U1, U2, …, Un) необходимо найти оптимальное, при котором система переходит из своего начального состояния в конечное таким образом, что критерий оптимальности W достигает своего максимума.

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

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

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

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