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

А.В.Шатина МО 2012 версия 20.09.2013

.pdf
Скачиваний:
90
Добавлен:
10.05.2015
Размер:
5.05 Mб
Скачать

71

базис

a

1

 

a

3

 

a

2

 

z

 

c

0

0

0

b x

 

b

 

2

 

3 2

 

1 2

 

0

 

0

a

1

 

1

0

0

0

0

0

a

2

 

0

0

1

0

0

0

a

3

 

0

1

0

0

0

0

a

4

 

1

1 2

1 2

0

0

0

a

5

 

0

1 2

1 2

0

0

-1

a

6

 

1

0

0

0

1

-1

a

7

 

1

1 2

1 2

0

1

-1

a

8

 

0

1 2

1 2

0

1

t

Так как 0 , то точка 2;1 2;3 2;0;0;0;0;0

является реше-

нием вспомогательной задачи, а точка 2;1 2;3

2;0;0 является

начальной крайней точкой исходной задачи. Используя получен-

ные разложения векторов по базису

1

, a

3

, a

2

, строим симплекс-

a

 

 

ную таблицу исходной задачи:

базис

a

1

 

a

3

 

a

2

 

z

 

c

3

2

-2

b x

 

b

 

2

 

3 2

 

 

 

1 2

 

8

 

3

a

1

 

1

0

0

3

0

-2

2

-2

1

t

a

2

a

3

a

4

a

5

 

 

 

 

 

 

0

0

1

0

 

0

1

1 2

1 2

3

1

0

1 2

1 2

1

-2

2

5

0

 

0

0

7

-1

 

Последняя строка содержит один отрицательный элемент,

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

a

5

. Вычисляем элементы последнего

 

столбца и выбираем наименьший положительный, соответству-

ющий разрешающей строке

a

2

.

Для нового

базиса

1

, a

3

, a

5

 

a

 

 

строим таблицу:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

c

 

3

 

 

-2

 

2

-2

1

 

t

 

 

 

 

 

 

базис

 

b xb

a1

 

 

a 2

 

a3

a 4

a5

 

 

 

 

 

 

 

 

a

1

3

2

1

 

 

 

0

 

0

1

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a

3

2

1

0

 

 

-1

 

1

1

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a

5

1

1

0

 

 

 

2

 

0

-1

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

z

 

9

3

 

 

 

0

 

2

4

1

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

2

 

0

6

0

 

 

 

 

 

 

 

72

Так как

Smax 9 .

0

, то

xˆ 2;0;1;0;1

является решением задачи,

Замечание. В данной задаче можно было ограничиться введением одной искусственной переменной x6 , так как два послед-

них столбца матрицы A задачи являются столбцами единичной

матрицы. Тогда число шагов значительно бы уменьшилось.

Пример 4. Решить задачу линейного программирования:

 

f x 2x1 x2 x3 x5 min ;

(з)

2x2 x4 x5 3,

 

x3 2x4 2,

 

x1 3x2 x4 5,

 

x1 x2 3, x j 0, j 1,...,5.

 

На первом шаге приведем данную задачу форме, введя дополнительные переменные x6 , x

к канонической 7 . Получим сле-

дующую задачу:

f x

x

 

3

 

2x x

2

x

x

max

1

3

5

 

x1 3x2 x4 x6 5,

x1 x2 x7 3,

 

2x2 x4 x5 3,

 

2x4 2,

x j 0, j 1, ... ,7 .

;

(з1)

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

x8 x9 max ; (з2) x1 3x2 x4 x6 5,

x1 x2 x7 3,

2x2 x4 x5 x8 3,

73

x3 2x4 x9 2

,

x j 0,

j

Начальная крайняя точка задачи (з2)

1, x

... ,9 .

0

0,0,0,0,0,5,3,3,2

 

.

Базисные векторы

a

6

1,0,0,0 , a

7

 

 

0,1,0,0 , a

8

0,0,1,0 , a

9

 

 

0,0,0,1

.

Составим симплексную таблицу для задачи (з2):

базис

a6

a

7

 

a

8

 

a

9

 

z

 

c

0

0

-1

-1

b x

b

 

 

 

5

3

3

2

-5

0

0

0

0

a1

a 2

a3

a 4

1

3

0

-1

-1

-1

0

0

0

2

0

-1

0

0

1

-2

0

-2

-1

3

0

-2

-1

3

0 0

a

5

a

6

 

 

0 1

0

0

-1

0

0

0

1

0

1 0

0

-1

-1

a

7

a

8

a

9

 

 

 

0

0

0

1

0

0

0

1

0

0

0

1

0

-1

-1

0

0

0

t

53

32

Из таблицы видно, что разрешающим столбцом является

столбец

a

2

, а разрешающей строкой

a

8

. Заменяем в базисе век-

 

 

тор a

8

на вектор a

2

и строим новую симплексную таблицу:

 

 

базис

c

b xb

0

0

 

a

1

a

2

 

 

 

 

 

 

a

6

0

1 2

1

0

 

 

 

 

 

 

 

a

7

0

9 2

-1

0

 

 

 

 

 

 

 

a

2

0

3 2

0

1

 

 

 

 

 

 

 

a

9

-1

2

0

0

 

z

 

-2

0

0

 

 

 

0

0

0

0

a

3

a

4

 

 

0

1 2

0

1 2

0

1 2

1

-2

-1

2

-1

2

0

a

5

 

32

12

12

0

0

0

0

a

6

 

1

0

0

0

0

0

0

a

7

 

0

1

0

0

0

0

-1 -1 t

a

8

a

9

 

 

3 2

0

1 2

0

1 2

0

0

1

0

-1

1

0

Заменяем в базисе вектор симплексную таблицу:

a

9

 

на вектор

a

3

 

и строим новую

 

c

 

0

0

0

0

0

0

0

-1

-1

t

базис

 

b xb

a1

a 2

a3

a 4

a5

a6

a7

a8

a9

 

a6

0

1 2

1

0

0

1 2

3 2

1

0

3 2

0

 

a7

0

9 2

-1

0

0

1 2

1 2

0

1

1 2

0

 

74

 

 

c

b xb

базис

0

a

2

3 2

 

 

 

a

3

0

2

 

 

 

z

 

0

 

 

 

Вектор

 

0

a

1

 

0

0

0

0

0 ,

0

0

a

2

a

3

 

 

1

0

0

1

0

0

0

0

поэтому

0

a

4

 

1 2

-2

0

0

точка

0

a

5

 

1 2

0

0

0

~ x

 

0

0

 

a

6

a

7

 

 

 

 

0

0

 

0

0

 

0

0

 

0

0

 

0;3 2; 2;0;

-1

-1

a

8

a

9

 

 

1 2

0

0

1

0

0

1

1

0;12;92;0;

t

0

является

решением вспомогательной задачи (з2). Тогда точка

~

0;3

2; 2;0;0;1 2;9 2 является начальной крайней точкой за-

x0

дачи линейного программирования в канонической форме (з1).

Приступим к решению задачи (з1). Составим первую симплексную таблицу для начальной крайней точки

~

0;3 2; 2;0;0;1 2;9

2 . Разложения векторов

x0

возьмем из последней симплексной таблицы:

1

, a

4

, a

5

b, a

 

 

базис

a

6

 

a

7

 

a

2

 

a

3

 

z

 

c

0

0

-1

1

b x

 

2

-1

1

0

-1

0

0

t

a

1

a

2

a

3

a

4

a

5

a

6

a

7

 

b

 

 

 

 

 

 

 

 

 

1 2

 

1

0

0

1 2

3 2

1

0

 

9 2

 

-1

0

0

1 2

1 2

0

1

 

3 2

 

0

1

0

1 2

1 2

0

0

 

2

 

0

0

1

-2

0

0

0

 

1 2

 

0

-1

1

3 2

1 2

0

0

 

 

 

-2

0

0

3 2

3 2

0

0

 

Из таблицы видно, что разрешающим столбцом является столбец a1 , а разрешающей строкой a6 . Заменяем в базисе вектор a6 на вектор a1 и строим новую симплексную таблицу:

базис

a

1

 

a7

a 2

c

2

0

-1

b xb

12

5

3 2

2

a

1

 

1

0

0

-1

a

2

 

0

0

1

1 0

a3

a 4

0

1 2

0

0

0 1 2

-1 0

a5

a6

3 2

1

1

1

1 2 0

0

a

7

 

0

1

0

t

75

базис

a

3

 

z

c

1

b x

 

b

 

2

 

3 2

 

2

a

1

 

0

2

0

-1

a

2

 

0

-1

0

1

0

-1

a

3

a

4

a

5

 

 

 

1

-2

0

1

1 2

7 2

0

1 2

9 2

0

0

a

6

a

7

 

 

0

0

2

0

2

0

 

 

 

 

t

Далее заменяем в базисе вектор новую симплексную таблицу:

a

1

 

на вектор

a

4

 

и строим

c

базис

a

4

0

 

 

a

7

0

 

 

a

2

-1

 

 

a

3

1

 

 

z

 

 

 

Так как

b xb

1

5

2

4

2

0

 

2

-1

1

0

 

a1

a 2

a3

a 4

 

2

0

 

0

1

 

0

0

 

0

0

 

1

1

 

0

0

 

4

0

 

1

0

 

3

-1

1

0

 

1

0

 

0

0

, то точка

0;2;4;1;0;0;5

-1

0

0

t

a5

a6

a7

 

3

2

0

 

1

1

1

 

1

1

0

 

6

4

0

 

5

3

0

 

6

3

0

 

 

 

 

 

является решением за-

дачи (з1). Тогда точка

xˆ 0;2;4;1;0

является решением исходной

задачи (з).

Ответ:

x 0;2;4;1;0 abs min з,

S

 

ˆ

 

min

 

 

2

.

Задачи для самостоятельного решения

Решить симплекс-методом задачи линейного программирования в канонической форме с заданной начальной крайней точкой:

6.1. f x 2x1 x

 

x1 2x2

 

x

x

2

 

1

 

x

0, i 1,

i

 

 

 

23x3 x4 max ;

5x3 x4 4 ,

x3

2x4 1,

... ,4

, x0 0;0;1;1

6.2. f x 6x1 x2 4x3 5x4 max ; 3x1 x2 x3 x4 4,

5x1 x2 x3 x4 4 ,

76

 

xi 0, i 1, ... ,4

,

x0

1;0;0;1

6.3.

f x x1 x2 x3

x4

x5 max ;

 

2x1 3x2 5x3 7x4 9x5 19 ,

 

x1 x2 x4 2x5 2,

 

 

xi 0, i 1, ... ,5,

 

x0 0;0;1;2;0

6.4.

f x x1 2x2

2x3 x4 6x5

max

 

x1 3x2 3x3 x4 9x5 18

,

 

x1 5x2 2x4 8x5 13,

 

 

x

x

 

3

 

 

 

3

5

x0 0;1;2;0;1

 

xi 0, i 1, ... ,5,

;

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

6.5.

x1 4x2 x3 max ;

 

x1 x2 x3 3,

 

2x1 5x2 x3 0,

 

xi 0, i 1, ... ,3.

6.6.

f x 6x1 8x2 x3 3x4 min ;

 

2x1 5x2 x3 2x4 20 ,

 

12x1 6x2 2x3 x4 72 ,

 

xi 0, i 1, ... ,4

Указание: привести предварительно задачу к канонической

форме.

f x x1 4x4 max ;

6.7.

 

x1 2x2 2x3 x4 5x5 13,

 

2x1 2x2 4x4 x5 5,

 

x1 x2 x3 x4 2x5 5

xi 0, i 1, ... ,5.

77

Найти решение задач линейного программирования:

6.8.

6.9.

6.10.

f

f x x1

x2

x3 min

;

 

x1 3x2 5x3 1,

 

 

 

 

x1 x2 x3 3,

 

 

 

 

 

2x

x

2

 

4x

0

 

 

 

 

1

 

 

 

 

 

 

3

 

 

 

 

 

 

 

xi

0, i 1,2,3.

 

 

 

 

 

x 2x x

2

3x

5x

4

max

 

1

 

 

 

 

 

3

 

 

 

 

 

2x1 3x2 x3 2x4 30

,

 

4x1 2x2 x3 2x4 40

,

 

x1 2x2 3x3 x4 25,

 

 

xi 0, i 1, ... ,4

 

 

 

 

 

f x 2x

 

x

2

x

3

x

5

min

 

1

 

 

 

 

 

 

 

 

 

 

 

2x

 

x

 

x

3,

 

 

 

 

 

 

2

 

 

4

 

5

 

 

 

 

 

 

 

 

x

 

2x

2,

 

 

 

 

 

 

 

3

 

 

 

4

 

 

 

 

 

 

 

 

 

x1 3x2 x4 5,

 

 

 

 

x

x 3, x

j

0, j 1,...,5

 

1

2

 

 

 

 

 

 

 

 

 

 

 

 

 

;

;

Занятие 7. Транспортная задача

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

Постановка

A1, A2 ,..., Am , на

задачи. Имеется

m

станций отправления

которых сосредоточено соответственно

a1, a2 ,..., am единиц некоторого однородного груза. Этот груз следует перевезти в n пунктов назначения B1, B2 ,..., Bn , причем в каждый из них надлежит завезти соответственно b1,b2 ,...,bn единиц груза. Стоимость перевозки единицы груза из пункта Ai в пункт B j равна cij .

78

Обозначим через

xij

количество единиц груза, предназна-

ченного к отправке из пункта

Ai

в пункт

B j

. Получим задачу о

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

m n

cij xij min ;

i1 j 1

n

 

 

xij ai ,

i 1,..., m ;

j 1

 

 

m

 

 

xij

b j ,

j 1,..., n ;

j 1

 

 

xij 0,

i 1,..., m, j 1,..., n .

(з)

(1)

(2)

Условие (1) означает, что из пункта

Ai

весь груз вывезен в

пункты назначения, а завезенного в пункт

условие (2) означает, что количество груза, B j со всех пунктов отправления, соответ-

ствует требуемому. Транспортную задачу удобно записывать в виде платежной матрицы:

 

b

b

b

 

1

2

 

n

a

c

c

c1n

1

11

12

 

 

a2

c21

c22

c2n

am

cm1

cm2

cmn

m

m n

n m

n

В поставленной задаче ai xij xij b j . В

i 1

i 1 j 1

j 1i 1

j 1

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

Если суммарные запасы пунктов отправления больше сум-

m

n

марной потребности пунктов назначения, т.е. ai b j , то ра-

i 1

j 1

79

 

n

 

венства (1) заменяются неравенствами:

xij

ai

 

j 1

 

условия (2) остаются без изменений. В этом случае к замкнутой модели следует:

а) ввести фиктивный пункт назначения

Bn 1

m

n

 

величиной ввоза bn 1 ai b j ;

 

i 1

j 1

 

,

i 1,..., m , а

для сведения с требуемой

б) положить ci,n 1 0, i 1,..., m;

 

в) ввести дополнительные переменные

xi,n1 0, i 1,..., m .

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

Если в задаче имеется дополнительное требование, состоящее в том, что из некоторого пункта Ai груз должен быть полностью вывезен, то стоимость перевозки единицы груза из пункта

Ai в пункт Bn 1 следует положить равной

M , где M - достаточ-

но большое положительное число, т.е. ci,n 1 M .

Если суммарные запасы отправителей меньше суммарных

 

m

n

запросов пунктов назначения, т.е. ai

b j , то равенства (2)

 

i 1

j 1

заменяются неравенствами:

 

 

m

 

 

xij b j , j 1,..., n, а условия (1) остаются без изменений. В

i 1

 

 

этом случае для сведения к замкнутой модели следует:

а) вести фиктивный пункт отправления Am 1 с требуемой

n

m

 

величиной вывоза am 1 b j ai ;

 

j 1

i 1

 

б) положить cm 1, j 0,

j 1,..., n ;

 

в) ввести дополнительные переменные xm 1, j 0, j 1,..., n . Тогда придем к замкнутой модели транспортной задачи.

80

Если в задаче имеется дополнительное требование

полно-

стью удовлетворить потребности пункта назначения B j ,

то сле-

дует положить

cm1, j

жительное число.

M

, где

M

- достаточно большое поло-

Пример 1. Привести транспортную задачу, заданную платежной матрицей (табл. 7.1), к замкнутой модели.

 

 

 

b

30

 

b

30

 

b 20

 

 

 

1

 

 

2

 

 

3

 

a

20

 

1

 

 

2

 

3

 

1

 

 

 

 

 

 

 

 

 

a2 40

 

1

 

 

3

 

3

Решение:

Здесь

a1

a2

60, b1

b2 b3

Таблица 7.1

80

,

т.е.

2

 

i

 

a

i 1

 

чиной

3

 

 

 

b j . Введем фиктивный пункт отправления A3

с вели-

j 1

 

 

 

завоза a 80 60 20 . Положим

c

0, j 1,2,3

. Тогда

3

3, j

 

 

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

Таблица 7.2

 

 

 

b

30

b

30

b

20

 

 

 

1

 

2

 

3

 

a

20

 

1

 

2

 

3

1

 

 

 

 

 

 

 

a

2

40

 

1

 

3

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a

 

20

 

0

 

0

 

0

3

 

 

 

 

 

 

 

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