Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

645_Galkina_M.JU._Metody_optimal'nykh_reshenij_

.pdf
Скачиваний:
4
Добавлен:
12.11.2022
Размер:
1.76 Mб
Скачать

Двойственная задача:

+5 +2 ≤ 12000,

3 +4 +3 ≤ 16000,

,, ≥ 0,

(

Найдем, , ) = 12

 

+31

+18

→ max.

 

 

 

 

 

 

 

 

 

 

 

оптимальное решение двойственной задачи по теореме равнове-

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

 

 

 

 

 

 

(

 

+3

 

− 12) = 0,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(5

+4

 

− 31) = 0,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(2

+3

 

− 18) = 0,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(12000 − (

+5

 

+2 )) = 0,

 

 

 

 

 

 

 

 

 

(16000 −(3

+4

 

+3

 

)) = 0.

 

 

 

 

 

 

 

 

 

Подставим в составленную систему оптимальное решение исходной зада-

чи:

= 3,

 

 

= 4.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(3+3∙4 −12) = 0,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(5∙3+4∙4 − 31) = 0,

 

 

 

 

 

 

 

 

 

 

 

 

 

(2∙3+3∙4 − 18) = 0,

)) = 0,

 

 

 

 

 

 

 

 

3∙(12000 −(

+5

+2

 

 

 

 

 

 

 

 

 

4∙(16000 − (3

+4

 

 

+3

)) = 0.

 

 

 

 

 

 

 

 

 

Произведение равно нулю, если один из множителей равен 0. Получаем

 

∙3 = 0

 

= 0,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

∙0 = 0,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

∙0 = 0,

 

+5

+2

 

) = 0,

 

 

 

 

 

 

 

 

 

 

 

12000 −(

 

 

 

 

 

 

 

 

 

 

 

 

 

16000 −(3

 

+4

+3

 

) = 0.

 

 

 

 

 

 

 

 

 

 

Тогда,

 

 

 

 

 

+2

) = 0,

 

 

 

 

5

+2

= 12000, ×3

 

12000 − (0+5

 

 

 

 

 

16000 − (3∙0+4

+3

 

) = 0.

 

 

4

+3

= 16000. ×2

 

15

+6

= 36000,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

8

+6

= 32000.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Вычтем из первого уравнения второе:

 

 

 

 

 

 

 

 

7

= 4000

 

=

 

 

,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

=

 

 

 

 

=

 

 

 

 

 

 

=

 

 

 

 

=

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Оптимальное решение двойственной задачи

 

 

 

 

 

. По тео-

 

= 0; ;

 

реме 7 Zmin Wmax 100000.

 

 

 

 

 

 

 

 

 

Окончательно,

 

=

 

 

0;

 

 

;

 

 

= 100000.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Вопросы для самопроверки

1.Может ли система ограничений общей ЗЛП включать строгие неравенства?

31

2.Может ли целевая функция ЗЛП содержать нелинейные выражения из переменных?

3.Может ли допустимое решение ЗЛП содержать отрицательную компоненту?

4.Чем отличается оптимальное решение ЗЛП от допустимого?

5.Чем отличается канонический вид ЗЛП от общего?

6.Каждая ли задача, заданная в симметричной форме, может быть приведена к канонической форме? Если да, то укажите, каким образом это делается?

7.Может ли задача, заданная в канонической форме, быть приведена к общему виду?

8.Какое максимальное число неравенств может содержать ЗЛП с двумя переменными?

9.Как строится область допустимых решений ЗЛП с двумя переменными?

10.Может ли область допустимых решений быть невыпуклым многоугольником?

11.Может ли область допустимых решений быть неограниченным множеством? Пустым?

12.Что такое градиент? Как его строить?

13.Что такое линия уровня? Как ее строить?

14.Может ли ЗЛП с двумя переменными иметь два и только два оптимальных решения?

15.В каком случае задача линейного программирования с двумя переменными не имеет решения?

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

17.Сколько переменных может содержать ЗЛП, которую можно решить графически?

18.Можно ли для ЗЛП, содержащей в системе ограничений неравенства разных направлений, построить двойственную задачу?

19.Если в основной задаче отсутствуют условия неотрицательности переменных, то какие последствия это влечет в двойственной задаче?

20.Чем отличаются матрицы систем ограничений в паре двойственных задач?

21.Какова связь между оптимальными решениями пары двойственных задач?

22.Что можно сказать о решении двойственной задачи, если решение основной задачи не существует по причине несовместимости ее системы ограничений?

23.В чем смысл теоремы равновесия?

32

2. СПЕЦИАЛЬНЫЕ ЗАДАЧИ ЛИНЕЙНОГО ПРОГРАММИРОВАНИЯ

2.1.Задача о назначениях

Пример 8

В каждом из пяти филиалов производственного объединения могут изготовляться изделия пяти видов. Учитывая необходимость углубления специализации, в каждом из филиалов решено выпускать только один вид продукции, при этом каждый из видов изделий должен выпускаться одним из филиалов. Себестоимость каждого изделия в каждом из филиалов различна и задается матрицей C ( – себестоимость производства i-м филиалом j-го вида продукции). Найти распределение выпуска продукции между филиалами, чтобы общая себестоимость выпущенной продукции была минимальной.

5

11

6

11

4

 

 

 

11

9

11

5

 

10

 

С 7

8

6

8

2

.

 

6

4

3

7

8

 

 

 

 

4

2

0

5

8

 

 

 

Составим математическую модель задачи.

 

1,если

− й филиал производит изделие − го вида,

=0,иначе,

i= 1,2,3,4,5, j = 1,2,3,4,5.

Каждый филиал должен выпускать только один вид продукции:

x11 x12

x13 x14 x15 1,

x

21

x

22

x

x

24

x

1,

 

 

23

 

25

 

 

 

x32

x33 x34 x35 1,

x31

x

41

x

42

x

x

44

x

1,

 

 

43

x

45

1.

x

x

x

 

x

 

51

52

53

54

55

 

Каждая вид продукции должен выпускаться:

x11 x21 x31 x41 x51 1,

x12 x22 x32 x42 x52 1,

x13 x23 x33 x43 x53 1,

x

x

x

x

44

x

1,

 

14

x

24

34

x

54

1.

x

25

x

 

x

 

15

 

35

45

55

 

Условие неотрицательности переменных:

xij 0, i = 1,2,3,4,5, j = 1,2,3,4,5.

Суммарная себестоимость выпущенной продукции:

33

Z 5x11 11x12 6x13 11x14 4x15 10x21 11x22 9x23 11x24 5x25 7x318x32 6x33 8x34 2x35 6x41 4x42 3x43 7x44 8x45 4x51 2x52 5x54

8x55 min.

Подобную задачу можно решать симплекс-методом, но можно использовать специальный метод – венгерский. Алгоритм венгерского метода:

1этап

1.В каждой строке находим минимальный элемент и вычитаем его из всех элементов соответствующей строки.

2.В каждом столбце находим минимальный элемент и вычитаем его из всех элементов соответствующего столбца.

2этап

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

2. Если количество таких линий равно количеству строк матрицы С, то 2-ой этап завершен.

3. В противном случае выберем среди неперечеркнутых элементов минимальный и построим новую матрицу по правилам:

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

Далее переходим на п.3 текущего этапа.

3этап

Впостроении решения участвует последняя матрица из этапа 2.

1. Находим строку или столбец матрицы, в которой имеется единственный 0. Если такой строки или столбца нет, то берем любую строку или столбец, содержащие нули. Пусть = 0.

2.Тогда в матрице X = 1 и все остальные элементы i-ой строки и j-го столбца равны 0.

3.В матрице С вычеркиваем i-ю строку и j-ый столбец.

4.Если в матрице С остался один элемент, то соответствующий элемент матрицы X равен 1 и этап 3 закончен. Иначе переходим на п.1 текущего этапа. Решим сформулированную выше задачу.

 

5

11

6

11

4

 

I 4

Этап 1

 

 

 

 

 

 

11

9

11

5

 

II 5

В каждой строке находим минимальный эле-

 

10

 

С

 

7

8

6

8

2

 

 

мент и вычитаем его из всех элементов соот-

 

ветствующей строки.

 

III 2

 

 

6

4

3

7

8

IV 3

 

 

 

4

2

0

5

8

 

 

 

 

 

 

 

 

34

1

7

2

7

0

 

 

5

6

4

6

0

 

 

 

5

6

4

6

0

 

 

3

1

0

4

5

 

 

 

 

4

2

0

5

8

 

 

 

I 1II 1IV

4

 

 

0

6

 

2

3

0

 

 

4

5

 

4

2

0

 

 

 

 

 

 

4

5

 

4

2

0

 

 

2

0

 

0

0

 

5

 

 

 

 

 

 

 

 

 

3

1

 

0

1

8

 

 

 

 

 

 

 

 

 

0

6

3

3

1

 

3

4

4

1

0

 

 

 

 

 

3

4

4

1

0

 

2

0

1

0

6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

0

0

0

8

 

 

 

 

0

5

2

2

1

 

3

3

3

0

0

 

 

 

3

3

3

0

0

3 0 1 0 7

 

3

0

0

0

9

 

 

 

В каждом столбце находим минимальный элемент и вычитаем его из всех элементов соответствующего столбца.

Этап 2

Проводим минимальное количество вертикальных и горизонтальных линий, пересекающих все нули. Таких линий 4<5, поэтому продолжим преобразования. Выберем среди неперечеркнутых элементов минимальный (это 1) и построим новую матрицу по правилам 3-го пункта 2-го этапа алгоритма.

Проводим минимальное количество вертикальных и горизонтальных линий, пересекающих все нули. Таких линий 4<5, поэтому продолжим преобразования. Выберем среди неперечеркнутых элементов минимальный (это 1) и построим новую матрицу по правилам 3-го пункта 2-го этапа алгоритма.

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

Этап 3

Порядок составления матрицы X:

1.Т.к. в 1-ой строке преобразованной матрицы имеется единственный элемент равный 0 (c11=0), то x11=1, а все остальные элементы 1-ой строки и 1-го столбца матрицы X равны 0. В матрице С исключаем из дальнейшего рассмотрения 1-ю строку и 1-ый столбец.

1 0

0 0 0

0 5 2

2

1

 

0

 

 

3

3

3

0

0

 

 

 

 

 

X 0

,

С 3 3 3

0

0 .

 

0

 

 

3

0

1

0

7

 

 

 

 

 

 

0

 

 

3

0

0

0

9

 

 

 

 

 

2.Среди оставшихся невычеркнутыми элементов матрицы С 3-ий столбец содержит единственный 0 (c53=0). Поэтому считаем, что x53=1, а все остальные

35

элементы 5-ой строки и 3-го столбца матрицы X равны 0. В матрице С исключаем из дальнейшего рассмотрения 5-ю строку и 3-ий столбец.

1 0 0

0

0

 

0 5 2

2

1

 

0

0

 

 

 

 

3

3

3

0

0

 

 

 

 

 

 

 

X 0

0

 

 

,

С 3

3

3

0

0 .

 

0

0

 

 

 

 

3

0

1

0

7

 

 

 

 

 

 

 

 

0 0 1

0

0

 

 

3

0

0

0

9

 

 

 

 

 

3.Среди оставшихся невычеркнутыми элементов матрицы С второй столбец содержит единственный 0 (c42=0). Поэтому считаем, что x42=1, а все остальные элементы 4-ой строки и 2-го столбца матрицы X равны 0. В матрице С исключаем из дальнейшего рассмотрения 4-ю строку и 2-ой столбец.

1 0 0

0

0

0 5 2

2

1

 

0

0

0

 

 

 

 

3

3

3

0

0

 

 

 

 

 

 

 

X 0

0

0

 

 

,

С 3

3

3

0

0 .

 

0

1

0

0

0

 

 

3

0

1

0

7

 

 

 

 

 

 

0

0

1

0

0

 

 

3

0

0

0

9

 

 

 

 

 

 

 

 

 

4.Среди оставшихся невычеркнутыми элементов матрицы С нет строк или столбцов, содержащих единственный 0. Поэтому выбираем любой нулевой элемент (например, c24=0) и считаем, что x24=1, а все остальные элементы 2- ой строки и 4-го столбца матрицы X равны 0. В матрице С исключаем из дальнейшего рассмотрения 2-ю строку и 4-ый столбец.

1 0 0 0

0

 

0 5 2

2

1

 

 

0

0

0

1

0

 

 

3

3

3

0

0

 

 

 

 

 

X 0

0

0

0

 

,

С 3

3

3

0

0 .

 

0

1

0

0

0

 

 

 

3

0

1

0

7

 

 

 

 

 

 

 

0

0

1

0

0

 

 

3

0

0

0

9

 

 

 

 

 

 

 

 

 

 

 

5. Т.к. c35=0, то x35=1.

Итак, оптимальное решение задачи о назначениях:

 

1

0

0

0

0

По исходной матрице С и полученной матрице X нахо-

 

 

0

0

0

1

0

 

дим минимальную себестоимость (суммируем только

X*

 

 

0

0

0

0

1

те элементы матрицы C, которым соответствуют еди-

 

 

0

1

0

0

0

 

ничные элементы матрицы X).

 

 

 

 

 

0

0

1

0

0

 

 

 

 

 

 

Zmin= 5 + 11 + 2 + 4 + 0 = 22.

Решим задачу о назначениях с использованием средств MS Excel.

Для решения нашей задачи создадим в Excel книгу с именем «Решение задачи о назначениях». Подготовим данные на листе (рис. 16).

36

Сначала определим ячейки, в которые будут вводиться элементы матрицы С. Пусть это будут ячейки B3:F7. Заполним их и оформим заголовки строк и столбцов. Определим ячейки, куда будет помещен результат решения. Пусть это будут ячейки B12:F17, сделаем у них заголовки. В этих ячейках нет данных, их должен будет рассчитать Excel, они выделены цветом. Заведем строку 18 для целевой функции. Цветом выделена ячейка, в которой будет находиться значение целевой функции для найденного оптимального решения.

Рис. 16. Подготовка данных для примера 8

В ячейки G12:G16 введем нахождение сумм неизвестных по строкам, в ячейки B17:F17 – нахождение сумм неизвестных по столбцам, в ячейку D18 – формулу для нахождения целевой функции (рис.17).

37

Рис. 17. Ввод формул для примера 8

Далее необходимо воспользоваться надстройкой Поиск решения. На вкладке Данные в группе Анализ выберите команду Поиск решения. Появится диалоговое окно Поиск решения, которое необходимо заполнить следующим образом (для добавления ограничений пользуемся кнопкой Добавить) (рис.18).

38

Рис. 18. Настройки Поиска решений для примера 8

Далее нажимаем кнопку Параметры и в появившемся окне Параметры поиска решений устанавливаем флажок Неотрицательные значения, Линейная модель и нажимаем OK (рис.19).

Рис. 19. Настройки параметров Поиска решений для примера 8

В окне Поиск решения после нажатия кнопки Выполнить появляется окно Результаты поиска решения, в котором выбираем сохранение найденных значений и нажимаем кнопку ОК (рис.20).

Рис.20. Сохранение результатов Поиска решений для примера 8

На рис. 21 представлены результаты поиска решений.

39

Рис. 21. Найденное оптимальное решение для примера 8

 

 

1

0

0

0

0

 

(

 

) = 22

 

 

 

 

0

0

0

1

0

 

 

 

Получили X*

 

 

 

 

 

 

0 1 0

0

0

 

 

 

 

0

0

0

0

1

,

 

 

. Решение совпадает с найден-

 

 

 

0

0

1

0

0

 

 

 

 

 

 

 

 

 

 

 

 

 

ным венгерским методом. Интерпретация решения:

Первый филиал должен выпускать 1-ый вид изделий, второй филиал должен выпускать 4-ый вид изделий, третий филиал должен выпускать 5-ый вид изделий, четвертый филиал должен выпускать 2-ой вид изделий, пятый филиал должен выпускать 3-ий вид изделий. При таком распределении себестоимость выпуска изделий будет минимальна и составит 22 у.е.

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

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

40