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


Теорема двойственности. Если из пары двойственных задач одна имеет оптимальный план, то и вторая тоже имеет оптимальный план, причем оптимальные значения целевых функций обеих задач равны между собой:

.

При этом . Отсюда следует, что двойственная переменная yi является коэффициентом при bi и, следовательно, показывает, как изменится целевая функция при изменении i- го ресурса на единицу. В литературе двойственные переменные часто называют двойственными оценками. В отчетах EXCEL двойственная оценка называется теневой ценой.

Теорема равновесия. План прямой задачи и план соответствующей двойственной задачи являются оптимальными при выполнении следующих условий:

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

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

Таким образом, в парах соотношений

из знака строгого неравенства во одном соотношении каждой пары следует знак строгого равенства в другом.

Условия теоремы равновесия часто записывают в виде

 

и называют условиями дополняющей нежесткости.

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

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

Необходимо заметить, что если в качестве канонической формы рассматривается задача максимизации, то сумма берется без знака “-“.

 

5. Задачи дробно-линейного программирования

 

Общая задача дробно-линейного программирования состоит в определении максимального (минимального) значения функции

 

при условиях

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

Сформулированная задача может быть сведена к задаче линейного программирования. Для этого следует обозначить

 

и ввести новые переменные

.

 

Используя введенные обозначения, исходную задачу сведем к следующей - найти максимум (минимум) функции

 

при условиях

 

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

Пример . Для производства двух видов изделий A и В используются два типа технологического оборудования. Первое изделие проходит обработку только на втором типе оборудования, второе - на первом и на втором. Время обработки каждого из изделий на оборудовании данного типа приведено в табл. 9. Там же указаны затраты, связанные с производством одного изделия каждого вида.

Таблица 9

 

Тип оборудования Затраты времени (ч) на обработку одного изделия
A B
I  
II
Затраты на производство Одного изделия

 

Оборудование II типа предприятие может использовать не более 52 часов. При этом оборудование I типа целесообразно использовать не менее 16 часов. Требуется определить, сколько изделий каждого вида следует изготовить, чтобы себестоимость одного изделия была минимальной.

Составим математическую модель задачи. За x1 обозначим количество выпускаемых изделий вида A, за x2 – количество изделий вида B. Себестоимость определяется следующим образом: С=З/K, где К – количество выпускаемых изделий, З - общие затраты на их производство. Тогда получим следующую задачу дробно-линейного программирования:

 

 

;

 

Преобразуем ограничения-неравенства данной задачи в равенства:

 

;

 

Сведем данную задачу к задаче линейного программирования. Для этого обозначим через y0 и введем новые переменные .

В результате приходим к следующей задаче: найти минимум функции

 

при условиях

 

 

Система ограничений задачи содержит всего одну базисную переменную y4. Поэтому составим расширенную задачу путем введения двух искусственных переменных y5 и у6. :

 

 

при условиях

 

 

 

Решение задачи методом искусственного базиса приведено в табл. 10.

 

 

Таблица 10

 

xd cd b M M
y1 y2 y3 y4 y0 y6 y5
Y5 М 2 -1 -16
y4 -52
y6 М
-5 -4
-1 -16
y2 -1/2 -8  
y4 1 -36  
y6 M 1/2 -6  
-1 -2 -32  
M 1/2 -6  
y2 -1/2 -8  
y1 -36  
y6 M -1/2 -1 30  
-16/3 -220  
M -1/2 -1  
y2 8/30 -19/30 -8/30  
y1 36/30 12/30 -6/30  
y0 1/30 -1/60 -1/30  
220/30 -12/30 -72/30  

 

Из таблицы видно, что оптимальным планом задачи является

.

Учитывая, что , находим оптимальный план исходной задачи:

. F(X*)=220/30.

 

5. Решение транспортных задач линейного программирования

 

Пусть имеется m пунктов отправления , из которых сосредоточен однородный груз в количестве единиц, и n пунктов назначения , потребности которых в грузе составляют единиц. Стоимость перевозки единицы груза из пункта Ai в пункт Bj равна сij. Необходимо составить такой план перевозки грузов (т.е., определить сколько единиц груза необходимо перевезти из каждого пункта отправления в каждый пункт назначения), который бы обеспечивал вывоз всех грузов из пунктов отправления, удовлетворение всех потребностей в пунктах назначения и имел бы минимальную стоимость.

Обозначим через xij количество груза, перевозимого из пункта Ai в пункт Bj. Тогда математическая модель данной задачи может имеет следующий вид:

 

 

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

Транспортная задача линейного программирования имеет следующие особенности:

1. Транспортная задача – это задача линейного программирования, записанная в канонической форме.

2. Коэффициенты при переменных в системе ограничений транспортной задачи равны равны 0 или 1.

3. Всякая переменная входит только в два уравнения системы ограничений: в i-е уравнение системы (1) и в j-е уравнение системы (2).

4. Число переменных в задаче равно m*n.

5. Число ограничений в транспортной задаче равно m+n.

 

Пример Производственное объединение имеет в своем составе четыре филиала, которые производят однородную продукцию соответственно в количествах 28, 12 ,11 и 14 единиц. Эту продукцию получают три потребителя, расположенные в разных местах. Их потребности в продукции равны соответственно 20, 30, и 15 единиц. Тарифы перевозок единицы продукции от каждого из филиалов соответствующим потребителям задаются матрицей

 

 

Математическая модель для определения плана перевозок минимальной стоимости в данном случае имеет следующий вид:

 

x11+7x12+8x13+12x21+4x22+6x23+10x31+15x32+14x33+5x41+13x42+16x43 ®min;

 

x11+x12+x13=12;

x21+x22+x23=28;

x31+x32+x33=11;

x41+x42+x43=14;

x11+x21+x31+x41=20;

x12+x22+x32+x42=30;

X13+x23+x33+x43=15;

xij³0, .

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

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

 

Если запасы превышают потребности, вводится фиктивный n+1-й пункт назначения Bn+1. Его потребность равна , а тарифы .

Если потребности превышают запасы, вводится фиктивный m+1 пункт отправления Am+1. Запас груза в нем равен , а тарифы .

Пример. Привести модель следующей транспортной задачи к закрытой.

 

A = (120, 280, 160), B = (130, 220, 60, 70), .

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

 

Пункты отправления Пункты назначения Запасы
B1 B2 B3 B4 B5    
A1

  Пункты назначения Запасы
B1 B2 B3 B4
A1
   
A2
   
A3
   
Потребности  

 

1

 

         
A2
ункты назначения Запасы
B1 B2 B3 B4
   
   
   
 

 

0

 
           
A3  
           
Потребности    
                 

 

Решение транспортной задачи осуществляется в 2 этапа: построение начального опорного плана и его улучшение.

 

Определение опорного плана транспортной задачи. Как и при решении задачи линейного программирования симплексным методом, определение оптимального плана транспортной задачи начинают с нахождения какого-нибудь ее опорного плана. Этот план находят методом северо-запад­ного угла или методом минимального элемента. Сущность этих методов состоит в том, что опор­ный план находят последовательно за n+m-1 шагов, на каждом из которых в таблице условий задачи заполняют одну клетку, которую называют занятой. Заполнение одной из клеток обеспечивает полностью либо удовлетворение потребности в грузе од­ного из пунктов назначения (того, в столбце которого находится заполненная клетка), либо вывоз груза из одного из пунктов отправления (из того, в строке которого находится заполняемая клетка).

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

После того как проделаны т+п-2 описанных выше шагов, получают задачу с одним пунктом отправления и одним пунк­том назначения. При этом останется свободной только одна клетка, а запасы оставшегося пункта отправления будут равны потребностям оставшегося пункта назначения. Заполнив эту клетку, тем самым делают (n+m-1)-й шаг и получают искомый опорный план. Следует заметить, что на некотором шаге (но не на последнем) может оказаться, что потребности очередного пункта назначения равны запасам очередного пункта отправле­ния. В этом случае также временно исключают из рассмотрения либо столбец, либо строку (что-нибудь одно). Таким образом, либо запасы соответствующего пункта отправления, либо потреб­ности данного пункта назначения считают равными нулю. Этот нуль записывают в очередную заполняемую клетку. Указанные выше условия гарантируют получение п+т-1 занятых клеток, в которых стоят компоненты опорного плана, что является исход­ным условием для проверки последнего на оптимальность и на­хождения оптимального плана.

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

Пример. На три базы A1, A2, A3 поступил однородный груз в ко­личествах, соответственно равных 140, 180 и 160 ед. Этот груз требуется перевезти в пять пунктов назначения В1. В2, В3, В4, В5 соответственно в количествах 60, 70, 120, 130 и 100 ед. Тарифы перевозок единицы груза с каждого из пунктов отправления в со­ответствующие пункты назначения указаны в таб­лице. При этом тарифы записаны в правом верхнем углу каждой клетки, а значения перевозимых грузов будут указаны в центре соответствующих клеток

 

Пункты   Пункты назначения        
Отправле-ния B1 B2 B3 B4 B5 Запасы  
A1            
A2          
   
A3          
           
Потреб­-            
Ности
                     

 

 

Найти план перевозок данной транспортной задачи методом северо-западного угла.

Решение. Здесь число пунктов отправления m=3, а число пунктов назначения п =5. Следовательно, опорный план задачи определяется числами, стоящими в 5+3-1=7 заполненных клетках.

Заполнение таблицы начнем с клетки для неизвестного х11, т. е. попытаемся удовлетворить потребности первого пункта назначе­ния за счет запасов первого пункта отправления. Так как запасы пункта А1 больше, чем потребности пункта В1, то полагаем х11=60, записываем это значение в соответствующей клетке табл. 2.3 и временно исключаем из рассмотрения столбец В1, считая при этом запасы пункта А1 равными 80.

Рассмотрим первые из оставшихся пунктов отправления а1 и назначения В2. Запасы пункта А1 больше потребностей пункта В2. Положим Х12=70, запишем это значение в соответствующей клетке табл. 2.3 и временно исключим из рассмотрения стол­бец B2. В пункте А1 запасы считаем равными 10 ед. Снова рассмо­трим первые из оставшихся пунктов отправления А1 и назначе­ния Вз. Потребности пункта из больше оставшихся запасов пункта А1. Положим X13=10 и исключим из рассмотрения стро­ку А1. Значение Х13=10 запишем в соответствующую клетку таблицы и считаем потребности пункта из равными 110 ед.

Теперь перейдем к заполнению клетки для неизвестного Х23 и т. д. Через шесть шагов остается один пункт отправления А3 с запасом груза 100 ед. и один пункт назначения B3 с потреб­ностью 100 ед. Соответственно имеется одна свободная клетка, которую и заполняем, полагая Х35=100 . В резуль­тате получаем опорный план, представленный в таблице.

 

 

Пункты   Пункты назначения        
Отправле-ния B1 B2 B3 B4 B5 Запасы  
A1      
A2      
   
A3          
       
Потреб­-            
Ности
                     

 

Согласно данному плану перевозок, общая стоимость перево­зок всего груза составляет S =2*60 +3*70+4*10+1*110+4*70+7*60+2*100= 1380.

 

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

Пример. Найти опорный план транспортной задачи из предыдущего примера методом минимального элемента.

Решение. Минимальный тариф, равный 1, находится в клетках для переменной Х23.и Х25 . В клетки с индексами 2,3 и 2,5 заносим величины 120 и 60 соответственно. Тарифы, равные 2, соответствуют клеткам с индексами 11 , 14, 35. В клетку 11 заносим 60 единиц груза, в клетку 14 80 единиц, в клетку 35 40 единиц. Решение продолжаем аналогично. Окончательное решение приведено в таблице.

 

 

Пункты   Пункты назначения        
Отправле-ния B1 B2 B3 B4 B5 Запасы  
A1              
A2        
   
A3          
       
Потреб­-            
Ности
                     

 

Общая стоимость перевозок в данном случае

S =2*60 +2*80+120+60+3*70+7*50+2*40=1100

При решении задач метод минимального элемента предпочтительнее.

Для улучшения первоначального опорного плана используется метод потенциалов.

Алгоритм метода потенциалов:

 

1). Построение первоначального опорного плана.

2). Определение потенциалов пунктов отправления (ui) и пунктов назначения ( ).

Потенциалы находят из системы уравнений где Cij - тарифы, стоящие в заполняемых клетках таблицы. Число переменных в этой системе равно m+n, число уравнений m+n-1. Для нахождения решения системы один из потенциалов приравнивается произвольному числу (например, u1=0) и последовательно находятся значения всех остальных потенциалов.

3). Проверка оптимальности плана.

Проверяем условия оптимальности: для всех свободных клеток. Вычисляем - оценки свободных переменных для оптимального базиса. Если все , то получаемый план является оптимальным, иначе - к шагу 4.

4). Выбор переменной для включения в базис (выбор клетки, в которую необходимо послать переменную).

. Если таких клеток несколько, то для заполнения выбирается клетка, имеющая минимальный тариф.

5). Построение цикла пересчета для выбранной свободной клетки i0j0.

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

После построения цикла его вершины последовательно отмечаются знаками «+» и «-», причем свободной клетке приписывается знак «+».

6). Определение величины перераспределения груза.

, где xij - перевозки, стоящие в вершинах цикла, отмеченных знаком «-». Клетку, которой соответствует d, обозначим через i1j1.

7). Сдвиг по циклу пересчета (перераспределение грузов).

В выбранную для заполнения свободную клетку (i0,j0) заносится значение d. Одновременно это число прибавляется к значениям перевозок, стоящих в клетках со знаком «+», и вычитается из значений перевозок, стоящих в клетках со знаком «-». Т.о. клетка (i0,j0) становится занятой, а i1j1 - свободной.

Замечание: при сдвиге по циклу пересчета число занятых клеток остается const=n+m-1. Если d соответствует нескольким клеткам таблицы, то освобождают одну из них, а в остальные записываются нулевые перевозки и считают их занятыми. Нулевые перевозки записываются и в клетки, которые имеют меньшие тарифы.

8). Переход к шагу 2.

 

Пример. На 3-х складах сосредоточен однородный груз в количествах 80, 100, и 70 единиц. Данный груз необходимо доставить 4-м потребителям, потребности которых равны соответственно 80, 50, 50, 70 единиц. Матрица тарифов имеет вид:

. Необходимо определить: оптимальный план перевозок.

Составим таблицу транспортной задачи. Начальный план перевозок определим методом минимального элемента. При этом сначала помещаем 70 единиц груза в клетку с индексом 14, имеющую минимальный тариф, затем 10 единиц в клетку 12, 40 единиц в клетку 32, 30 единиц в клетку 38, 50 единиц в клетку 23, 50 единиц в клетку с индексом 21.

 

Пункты отправления Пункты назначения Запасы
B1 B2 B3 B4
A1
   
A2
   
A3
   
Потребности  

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

U1 +V2 = 2

U1 +V4 = 1

U2 +V1 = 6

U2 +V3 = 5

U3 +V1 = 3

U3 +V2 = 2

положим U1 = 0 и последовательно найдем значения остальных потенциалов.

Получим: U1 = 0, U2 = 3, U3 = 0, V1 = 3, V2 = 2, V3 = 2, V4 = 1.

Вычислим оценки Dij для всех свободных клеток таблицы:

D11 = 0 + 3 – 4 = -1

D13 = 0 + 2 – 3 = -1

D22 = 3 + 2 – 3 = 2

D24 = 3 + 1 – 6 = -2

D33 = 0 + 2 – 6 = -4

D34 = 0 + 1 – 3 = -2

Выбираем максимальную положительную оценку. Это оценка D22 = 2. Следовательно, на следующем шаге будет заполнятся клетка с индексом 22. Составим цикл пересчета для данной клетки и пометим его вершины последовательно знаками «+» и «–»:

Пункты отправления Пункты назначения Запасы
B1 B2 B3 B4
A1
   
A2
   
A3
   
Потребности  

 

Определим величину перераспределения груза как минимальную из величин, стоящих в минусовых клетках. Это 40 единиц. Прибавляем данную величину к величинам перевозок, стоящим в клетках со знаком + и вычитаем ее из величин перевозок, стоящих в клетках со знаком – :

 

Пункты отправления Пункты назначения Запасы
B1 B2 B3 B4
A1
     
A2
 
A3
     
Потребности  

 

Составляем систему уравнений для определения потенциалов и последовательно находим из нее значения всех потенциалов.

U1 +V2 = 2

U1 +V4 = 1

U2 +V1 = 6

U2 +V2 = 3

U2 +V3 = 5

U3 +V1 = 3

Тогда,

U1 = 0, U2 = 1, U3 = -2, V1 = 5, V2 = 2, V3 = 4, V4 = 1.

Пересчитываем оценки:

D11 = 0 + 5 – 4 = 1

D13 = 0 – 2 + 3 = 1

D24 = 1 + 1 – 6 = - 4

D32 = -2 + 2 – 2 = -2

D33 = -2 + 4 – 6 = -4

D34 = -2 + 1 – 3 = -4

Имеем две максимальные положительные оценки D11 = D13 = 1. Для заполнения на следующем шаге целесообразно выбрать клетку с индексом 13, т.к. ей соответствует меньший тариф. Строим цикл пересчета для клетки 13:

 

Пункты отправления Пункты назначения Запасы
B1 B2 B3 B4
A1
   
A2
 
A3
     
   

 

 

Величина перераспределения груза равна 10. Перераспределяем груз:

 

Пункты отправления Пункты назначения Запасы
B1 B2 B3 B4
A1
   
A2
 
A3
     
   

Находим потенциалы пунктов отправления и назначения:

U1 +V3 = 3

U1 +V4 = 1

U2 +V1 = 6

U2 +V2 = 3

U2 +V3 = 5

U3 +V1 = 3

U1 = 0, U2 = 2, U3 = -1, V1 = 4, V2 = 1, V3 = 3, V4 = 1.

Пересчитываем оценки:

D11 = 0 + 4 – 4 = 0

D12 = 0 + 1 – 2 = -1

D24 = 2 + 1 – 6 = -3

D32 = -1 + 1 – 2 = -2

D33 = -1 + 3 – 6 = -4

D34 = -1 + 1 – 3 = -3

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

 

ЦЕЛОЧИСЛЕННОЕ ЛИНЕЙНОЕ ПРОГРАММИРОВАНИЕ

 

Задачей целочисленного линейного программирования (ЗЦЛП)называется задача линейного программирования, в которой на переменные наложено требование целочисленности. При этом если все переменные задачи должны принимать целочисленные значения, задача называется полностью целочисленной, иначе – частично целочисленной. Если множество допустимых решений задачи является конечным, то задача называется комбинаторной. В-частности, к классу комбинаторных относятся задачи булевой оптимизации, в которых переменные могут принимать только два значения: 0 или 1.

 

Прикладные задачи целочисленного программирования

 

Задача о раскрое.

Для изготовления заготовок D1,…,Dm имеется n способов раскроя материала A1,…,An. -количество заготовок i-го типа, получаемых из единицы материала при способе Aj. Имеется D единиц материала. При раскрое единицы материала по способу Aj имеются отходы площадью . Надо произвести не менее заготовок i-го типа и выполнить план с минимизацией отходов.

Таблица 11

 



Дата добавления: 2021-07-22; просмотров: 476;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.081 сек.
Виды заготовок Способы раскроя