Опубликован: 14.07.2009 | Уровень: для всех | Доступ: платный
Лекция 12:

Методы оптимизации

< Лекция 11 || Лекция 12: 1234 || Лекция 13 >

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

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

Простой перебор. Возьмем некоторый многомерный параллелепипед, в котором лежит многогранник, задаваемый ограничениями. Как его построить? Например, если имеется ограничение типа 2X_1 + 5X_2   \le 10 , то, очевидно, 0 \le X_1 \le 10/2 = 5 и 0 \le X_2  \le 10/5 = 2 . Аналогичным образом от линейных ограничений общего вида можно перейти к ограничениям на отдельные переменные. Остается взять максимальные границы по каждой переменной. Если многогранник, задаваемый ограничениями, неограничен, как было в задаче о диете, можно похожим, но несколько более сложным образом выделить его "обращенную" к началу координат часть, содержащую решение, и заключить ее в многомерный параллелепипед.

Проведем перебор точек параллелепипеда с шагом 1/10^n последовательно при n=2,3,…, вычисляя значения целевой функции и проверяя выполнение ограничений. Из всех точек, удовлетворяющих ограничениям, возьмем ту, в которой целевая функция максимальна. Решение найдено! (Более строго выражаясь, найдено с точностью до 1/10^n.)

Направленный перебор. Начнем с точки, удовлетворяющей ограничениям (ее можно найти простым перебором). Будем последовательно (или случайно - с помощью т.н. метода случайного поиска) менять ее координаты на определенную величину \Delta , каждый раз в точку с более высоким значением целевой функции. Если выйдем на плоскость ограничения, будем двигаться по ней (находя одну из координат по уравнению ограничения). Затем движение по ребру (когда два ограничения-неравенства переходят в равенства)… Остановка - в вершине линейного многогранника. Решение найдено! (Более строго выражаясь, найдено с точностью до \Delta. Если необходимо, в окрестности найденного решения проводим направленный перебор с шагом \Delta/2 , \Delta/4 и т.д.)

Симплекс-метод. Этот один из первых специализированных методов оптимизации, нацеленный на решение задач линейного программирования, в то время как методы простого и направленного перебора могут быть применены для решения практически любой задачи оптимизации. Симплекс-метод был предложен американцем Г. Данцигом в 1951 г. Основная его идея состоит в продвижении по выпуклому многограннику ограничений от вершины к вершине, при котором на каждом шаге значение целевой функции улучшается до тех пор, пока не будет достигнут оптимум. Разберем пример на основе данных табл.12.2.

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

F = 15 X_1+ 12 X_2  + 14 X_3 \to max .\\
X_1  / 200  + X_2  / 300 + X_3  / 120 \le 100 ,\\
X_1  / 300  + X_2  / 100 + X_3  / 100 \le 100 ,\\
Х_3 / 80  \le 100.

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

В соответствии с симплекс-методом введем т.н. "свободные переменные" X_4, X_5, X_6 , соответствующие недоиспользованным мощностям, т.е. от системы неравенств перейдем к системе уравнений:

X_1  / 200  + X_2  / 300 + X_3  / 120  + X_4  = 100 ,\\
X_1  / 300  + X_2  / 100 + X_3  / 100  + X_5  = 100 ,\\
X_3 / 80  +  X_6  = 100 ,\\
15 X_1+ 12 X_2  + 14 X_3  =  F.

У этой системы имеется очевидное решение, соответствующее одной из вершин многогранника допустимых значений переменных:

X_1 = X_2  = X_3  = 0,  X_4  = X_5    = X_6  =  100,  F = 0.

В терминах исходной задачи это означает, что ничего не надо выпускать. Такое решение приемлемо только на период летних отпусков.

В соответствии с симплекс-методом выбираем переменную, которая входит в целевую функцию F с самым большим положительным коэффициентом. Это Х_1 .

Сравниваем частные от деления свободных членов в первых трех уравнениях на коэффициенты при только что выбранной переменной Х_1 :

100 / (1/200) = 20000, 100 / (1/300) =30000, 100/0 = +\infty.

Выбираем строку из системы уравнений, которой соответствует минимальное из всех положительных отношений. В рассматриваемом примере - это первая строка, которой соответствует отношение 20000.

Умножим первую строку на 200, чтобы получить X_1 с единичным коэффициентом:

X_1  + 2/3 X_2   + 2/1,2 X_3   + 200 X_4  = 20000.

Затем умножим вновь полученную строку на (-1/300) и сложим со второй строкой, чтобы исключить член с X_1 , получим

7/900 X_2   + 4/900 X_3  - 2/3  X_4 + X_5  = 100/3.

Ту же преобразованную первую строку умножим на (-15) и сложим со строкой, в правой части которой стоит F , получим:

2 X_2  - 11 X_3  - 3000 X_4  =  F - 300000.

В результате система уравнений преобразуется к виду, в котором переменная X_1 входит только в первое уравнение:

X_1  + 2/3 X_2   + 2/1,2 X_3   + 200 X_4  = 20000 ,\\
7/900 X_2   + 4/900 X_3  - 2/3  X_4 + X_5  = 100/3,\\
X_3 / 80  +  X_6  = 100 ,\\
2 X_2  - 11 X_3  - 3000 X_4  =  F - 300000.

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

X_1 =  20000,\   X_2  = X_3  = X_4  =  0,\   X_5    = 100/3,\  X_6  =  100,\  F = 300000.

В терминах исходной задачи это решение означает, что надо выпускать только кухни. Такое решение приемлемо, если допустимо выпускать только один вид продукции.

Повторим описанную выше операцию. В строке с F имеется еще один положительный коэффициент - при X_2 (если бы положительных коэффициентов было несколько - мы взяли бы максимальный из них). На основе коэффициентов при X_2 (а не при X_1, как в первый раз) образуем частные от деления соответствующих свободных членов на эти коэффициенты:

20000 / (2/3) =  30000,  (100/3) / (7/900) =  30000/7, 100/0 = + \infty.

Таким образом, нужно выбрать вторую строку, для которой имеем наименьшее положительное отношение 30000/7. Вторую строку умножим на 900/7 (чтобы коэффициент при X_2 равнялся 1). Затем добавим обновленную строку ко всем строкам, содержащим X_2, предварительно умножив их на подходящие числа, т.е. такие, чтобы все коэффициенты при X_2 стали бы после сложения равны 0, за исключением коэффициента второй строки, который уже стал равняться 1. Получим систему уравнений:

X_1  +  	  9/7 X_3   + 1800/7 X_4   - 600/7 X_5  	     =  120000/7 ,\\
X_2   + 4/7 X_3  -   600/7 X_4       + 900/7 X_5  	     = 30000/7,\\
X_3 / 80  			      +    X_6   = 100 ,\\
- 85/7 X_3  - 19800/7 X_4  - 1800/7 X_5       =  F - 308571.

Поскольку все переменные неотрицательны, то из последнего уравнения следует, что прибыль F достигает своего максимального значения, равного 308571, при X_3  = X_4  = X_5  = 0. Из остальных уравнений следует, что при этом X_1 = 120000/7 = 17143, X_2  = 30000/7 = 4286, X_6  = 100. Поскольку в строке с F не осталось ни одного положительного коэффициента при переменных, то алгоритм симплекс-метода закончил свою работу, оптимальное решение найдено.

Практические рекомендации таковы: надо выпустить 17143 кухни, вчетверо меньше, т.е. 4286, кофемолок, самоваров не выпускать вообще. При этом прибыль будет максимальной и равной 308571. Все производственное оборудование будет полностью загружено, за исключением линии по сборке самоваров.

Транспортная задача. Различные технико-экономические и экономические задачи менеджмента, от оптимальной загрузки станка и раскройки стального листа или полотна ткани до анализа межотраслевого баланса и оценки темпов роста экономики страны в целом, приводят к необходимости решения тех или иных задач линейного программирования. В книге [12.1] приведен обширный перечень публикаций, посвященный многочисленным применениям линейного программирования в металлургии, угольной, химической, нефтяной, бумажной и прочих отраслях промышленности, в проблемах транспорта и связи, планирования производства, конструирования и хранения продукции, сельском хозяйстве, в научных исследованиях, в том числе экономических, и даже при регулировании уличного движения.

В качестве очередного примера рассмотрим т.н. транспортную задачу. Имеются склады, запасы на которых известны. Известны потребители и объемы их потребностей. Необходимо доставить товар со складов потребителям. Можно по-разному организовать "прикрепление" потребителей к складам, т.е. установить, с какого склада какому потребителю и сколько вести. Кроме того, известна стоимость доставки единицы товара с определенного склада определенному потребителю. Требуется минимизировать издержки по перевозке.

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

Рассмотрим пример транспортной задачи, исходные данные к которой представлены в табл. 12.3. В ней, кроме объемов потребностей и величин запасов, приведены стоимости доставки единицы товара со склада i, i = 1,2,3, потребителю j, j = 1,2,3,4. Например, самая дешевая доставка - со склада 2 потребителям 1 и 3, а также со склада 3 потребителю 2. Однако на складе 2 имеется 80 единиц товара, а потребителям 1 и 3 требуется 50+70 =120 единиц, поэтому к ним придется вести товар и с других складов. Обратите внимание, что в табл.3 запасы на складах равны суммарным потребностям. Для примера с доставкой песка кирпичным заводам это вполне естественное ограничение - при невыполнении такого ограничения либо порты будут засыпаны горами песка, либо кирпичные заводы не выполнят заказы.

Таблица 12.3. Исходные данные к транспортной задаче
Потреби-тель 1 Потреби-тель 2 Потреби-тель 3 Потреби-тель 4 Запасы на складах
Склад 1 2 5 5 5 60
Склад 2 1 2 1 4 80
Склад 3 3 1 5 2 60
Потреб-ности 50 40 70 40 200

Надо спланировать перевозки, т.е. выбрать объемы Х_{ij} поставок товара со склада i потребителю j , где i = 1,2,3; j = 1,2,3,4. Таким образом, всего в задаче имеется 12 переменных. Они удовлетворяют двум группам ограничений. Во-первых, заданы запасы на складах:

X_{11} + X_{12} + X_{13} + X_{14}   = 60 ,\\
X_{21}  + X_{22}  + X_{23}  + X_{24}   = 80 ,\\
X_{31}  + X_{32}  + X_{33}  + X_{34}   = 60.

Во-вторых, известны потребности клиентов:

X_{11} + X_{21} + X_{31}   = 50 ,\\
X_{12}  + X_{22} + X_{32}   = 40 ,\\
X_{13}  + X_{22} + X_{33}   = 70 ,\\
X_{14}  + X_{24} + X_{34}   = 40.

Итак, всего 7 ограничений типа равенств. Кроме того, все переменные неотрицательны - еще 12 ограничений.

Целевая функция - издержки по перевозке, которые необходимо минимизировать:

F = 2 X_{11} + 5 X_{12}  + 4 X_{13}  + 5 X_{14}  + X_{21}  + 2 X_{22}  + X_{23}  + 4 X_{24} +3 X_{31}  + X_{32}  + 5 X_{33}  + 2 X_{34}  \to min.

Кроме обсуждаемой, рассматриваются также различные иные варианты транспортной задачи. Например, если доставка производится вагонами, то объемы поставок должны быть кратны вместимости вагона.

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

Линейное программирование имеет дело с числовыми переменными. Если вспомнить общую постановку оптимизационной задачи, приведенную в начале главы, то Х - вектор в конечномерном линейном пространстве, А - многогранник в таком пространстве. Рассмотрим несколько задач оптимизации, в которых Х и А имеют иную математическую природу.

Целочисленное программирование

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

Задача о выборе оборудования. На приобретение оборудования для нового участка цеха выделено 20000 долларов США. При этом можно занять площадь не более 38 м2. Имеется возможность приобрести станки типа А и станки типа Б. При этом станки типа А стоят 5000 долларов США, занимают площадь 8 м2 (включая необходимые технологические проходы) и имеют производительность 7 тыс. единиц продукции за смену. Станки типа Б стоят 2000 долларов США, занимают площадь 4 м2 и имеют производительность 3 тыс. единиц продукции за смену. Необходимо рассчитать оптимальный вариант приобретения оборудования, обеспечивающий при заданных ограничениях максимум общей производительности участка.

Пусть Х - количество станков типа А, а У - количество станков типа Б, входящих в комплект оборудования. Требуется выбрать комплект оборудования так, чтобы максимизировать производительность С участка (в тыс. единиц за смену):

С = 7 Х + 3 У \to max.

При этом должны быть выполнены следующие ограничения:

по стоимости (в тыс. долларов США)

5 Х + 2 У  \le  20,

по занимаемой площади (в м2 )

8 Х + 4 У \le  38,

а также вновь появляющиеся специфические ограничения по целочисленности, а именно, Х \ge 0 , У \ge 0 ,  Х и У - целые числа.

Сформулированная математическая задача отличается от задачи линейного программирования только последним условием целочисленности. Однако наличие этого условия позволяет (в данном конкретном случае) легко решить задачу перебором. Действительно, как ограничение по стоимости, так и ограничение по площади дают, что Х \le 4. Значит, Х может принимать лишь одно из 5 значений: 0, 1, 2, 3, 4.

Если Х = 4, то из ограничения по стоимости следует, что У = 0, а потому С =  7\  Х =  28.

Если Х= 3, то из первого ограничения вытекает, что У \le 2, из второго У \le 3. Значит, максимальное С при условии выполнения ограничений достигается при У =2, а именно С = 21 + 6 =  27.

Если Х= 2, то из первого ограничения следует, что У \le 5, из второго также У \le 5. Значит, максимальное С при условии выполнения ограничений достигается при У =5, а именно С = 14 + 15 =  29.

Если Х= 1, то из первого ограничения имеем У \le 7, из второго также У \le 7. Значит, максимальное С при условии выполнения ограничений достигается при У = 7, а именно С =  7 + 21 =  28.

Если Х= 0, то из первого ограничения вытекает У \le 10, из второго У \le 9. Значит, максимальное С при условии выполнения ограничений достигается при У = 9, а именно, С =  27.

Все возможные случаи рассмотрены. Максимальная производительность С = 29 (тысяч единиц продукции за смену) достигается при Х = 2, У = 5. Следовательно, надо покупать 2 станка типа А и 5 станков типа Б.

Задача о ранце. Общий вес ранца заранее ограничен. Какие предметы положить в ранец, чтобы общая полезность отобранных предметов была максимальна? Вес каждого предмета известен.

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

С точки зрения экономики предприятия и организации производства более актуальна другая интерпретация задачи о ранце, в которой в качестве "предметов" рассматриваются заказы (или варианты выпуска партий тех или иных товаров), в качестве полезности - прибыль от выполнения того или иного заказа, а в качестве веса - себестоимость заказа.

Перейдем к математической постановке. Предполагается, что имеется n предметов, и для каждого из них необходимо решить, класть его в ранец или не класть. Для описания решения вводятся булевы переменные Х_k , k = 1,2,…, n (т.е. переменные, принимающие два значения, а именно, 0 и 1). При этом X_k = 1 , если предмет размещают в ранце, и X_k = 0 , если нет, k = 1,2,…, n . Для каждого предмета известны две константы: А_k - вес k-го предмета, и С_k - полезность k-го предмета, k = 1,2,…, n . Максимально возможную вместимость ранца обозначим В. Оптимизационная задача имеет вид

C_1 X_1+ С_2 X_2 + С_3 X_3 + …. + С_nХ_n  \to max ,\\
А_1 X_1+ А_2 X_2 + А_3 X_3 + …. + А_nХ_n   \le  В.

В отличие от предыдущих задач, управляющие параметры X_k , k = 1,2,…, n , принимают значения из множества, содержащего два элемента - 0 и 1.

К целочисленному программированию относятся задачи размещения (производственных объектов), теории расписаний, календарного и оперативного планирования, назначения персонала и т.д..

Укажем два распространенных метода решения задач целочисленного программирования

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

Методы направленного перебора. Из них наиболее известен метод ветвей и границ. Суть метода такова. Каждому подмножеству Х множества возможных решений Х_0 ставится в соответствие число - "граница" А(Х) . При решении задачи минимизации необходимо, чтобы А(X_1) \ge А(X_2) , если X_1 входит в X_2 или совпадает с X_2 .

Каждый шаг метода ветвей и границ состоит в делении выбранного на предыдущем шаге множества Х_c на два - X_1C  и X_2C . При этом пересечение X_1C и X_2C пусто, а их объединение совпадает с Х_С . Затем вычисляют границы А(X_1C ) и А(X_2C) и выделяют "ветвь"Х_С+1 - то из множеств X_1С и X_2С , для которого граница меньше. Алгоритм прекращает работу, когда диаметр вновь выделенной ветви оказывается меньше заранее заданного малого числа

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

< Лекция 11 || Лекция 12: 1234 || Лекция 13 >
Михаил Агапитов
Михаил Агапитов

Не могу найти  требования по оформлению выпускной контрольной работы по курсу профессиональной переподготовки "Менеджмент предприятия"

Подобед Александр
Подобед Александр

Я нажал кнопку "начать курс" и почти его уже закончил, но для получения диплома на бумаге, нужно его же оплатить? Как оплатить? 

Yegor Lonskiy
Yegor Lonskiy
Финляндия, Tornio
Ри Зар
Ри Зар
Россия, Казань