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

Загребаев Методы матпрограммирования 2007

.pdf
Скачиваний:
124
Добавлен:
16.08.2013
Размер:
10.97 Mб
Скачать

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

Признаком допустимости в двойственном симплекс-алгоритме является неотрицательность коэффициентов целевой функции γ j (не

считая свободного члена); 2) признаком оптимальности полученного решения является не-

отрицательность всех βi -коэффициентов столбца свободных членов (не считая значения целевой функции);

3) переменная xi , выводимая из базиса, определяется макси-

мальным по модулю отрицательным коэффициентом в столбце свободных членов;

4) разрешающий элемент выбирается в i-й строке среди отрицательных коэффициентов αij < 0 и соответствует максимальному

отношению коэффициентов строки целевой функции к элементам

i-й строки, т.е.

γ j

 

(табл. 1.29).

 

 

 

 

 

 

 

 

 

αij

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Таблица 1.29

 

Свободные

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Базис

 

x

x

i

 

x

x

x

j

x

n

члены

 

1

 

 

r

r +1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x1

β1

 

 

1

0

 

0

α1r +1

α1 j

α1n

 

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.

 

 

.

.

 

.

.

.

 

.

.

.

 

 

.

.

 

.

.

.

 

.

.

.

 

 

.

.

 

.

.

.

 

.

xi

βi

 

 

0

1

 

0

αir +1

αij

αin

 

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.

 

 

.

.

 

.

.

.

 

.

.

.

 

 

.

.

 

.

.

.

 

.

.

.

 

 

.

.

 

.

.

.

 

.

xr

βr

 

 

0

0

1

αrr +1

αrj

αrn

f (x)

γ0

 

 

0

0

0

γr +1

γ j

γn

61

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

Пример 1. Исходная задача: найти max {f (x) = 21x1 +11x2 } при ограничениях:

7x

+ 4x

 

13;

 

 

1

 

 

 

 

 

2

 

x1

1;

 

 

 

 

 

2x

+ x

2

 

3;

 

 

1

 

 

 

 

 

 

x

, x

2

0.

 

 

1

 

 

 

 

min {ϕ( y) =13y1 + y2 + 3y3 } при

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

найти

 

 

ограничениях:

7 y1 + y2 + 2 y3 21;

4 y1 + y3 11;

y1, y2 , y3 0.

Решение двойственной задачи имеет вид:

y1 = 0, y2 = 0, y3 =11; ϕmin ( y) = 33.

Полученное решение находится из оптимальной таблицы ис-

ходной задачи

 

 

 

 

 

 

Пример 2. Исходная задача: найти max {f (x) = 3 + 4x1 + 6x2 }

при ограничениях:

 

 

 

 

 

 

2x

3x

 

0;

 

1

 

 

2

 

 

2x1 + 2x2 4;

4x

 

+ 5x

2

20;

 

1

 

 

 

x

, x

2

0.

 

 

1

 

 

 

 

 

Двойственная задача: найти min {ϕ( y) = 3 + 4 y2 + 20 y3 } при ог-

раничениях:

2 y1 2 y2 4 y3 4;

3y1 + 2 y2 + 5y3 6;

y1, y2 , y3 0.

62

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

Пример 3. Исходная задача: найти

max {f (x) = 2 + 4x1 + 2x2 + 2x3}

при ограничениях

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2x

 

3x

2

+15x

3

 

3;

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

2x1 + 2x2 +8x3 32;

2x

 

4x

2

+16x

3

2;

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

x

, x

2

, x

3

0.

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

min {ϕ( y) = 2 + 3y1 + 32 y2 + 2 y3}

при ограничениях:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2 y

+ 2 y

2

+ 2 y

3

 

4;

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

3y1 + 2 y2 4 y3 2;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

15y1 + 8y2 +16 y3 2;

y

 

, y

2

, y

3

0.

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

Решение двойственной задачи имеет вид:

y =

2

 

, y

2

= 8 , y

3

= 0;

 

1

 

5

 

 

 

 

 

 

 

5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ϕ( y) = 54 52 .

В рассматриваемом примере решением являются коэффициенты при ослабляющих переменных x4 , x5 , x6 в строке целевой функ-

ции оптимальной таблицы исходной задачи.

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

Исходная задача: найти

max {f (x) =12 + 8x1 + 36x2 + 4x3 +12x4 }

63

при ограничениях:

88x1 20x2 + 32x3 +14x4 12;16x1 + 4x2 + 48x3 + 4x4 10;24x1 10x2 + 6x3 +8x4 44;x1, x2 , x3 , x4 0.

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

min {ϕ( y) =12 +12 y1 +10 y2 + 44 y3}

при ограничениях:

88y1 16 y2 24 y3 8;

20 y + 4 y

2

10 y

3

36;

 

 

1

 

 

 

 

 

 

 

 

+ 48y2 + 6 y3

4;

32 y1

14 y

+ 4 y

2

+8y

3

12;

 

1

 

 

 

 

 

 

 

 

, y2 , y3 0.

 

 

 

 

y1

 

 

 

 

Добавим ослабляющие переменные y4 , y5 , y6 , y7 . В результате получим начальный базис:

y4 = −8 (88y1 +16 y2 + 24 y3 );y5 = −36 (20 y1 4 y2 +10 y3 );y6 = −4 (32 y1 48y2 + 6 y3 );y7 = −12 (14 y1 4 y2 8y3 ).

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

Будем искать max {(−ϕ( y)) = −12 (12 y1 +10 y2 + 44 y3 )}.

Соответствующая последовательность симплекс-таблиц имеет вид:

64

Базис

Свободные члены

 

 

y1

 

y2

 

y3

 

 

y4

 

y5

y6

y7

y4

–8

 

–88

 

16

 

24

 

 

1

 

0

 

0

 

0

y5

–36

 

20

 

–4

 

10

 

 

0

 

1

 

0

 

0

y6

–4

 

–32

 

–48

 

–6

 

 

0

 

0

 

1

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y7

–12

 

–14

 

–4

 

–8

 

 

0

 

0

 

0

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

− ϕ

–12

 

12

 

10

 

44

 

 

0

 

0

 

0

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Базис

Свободные члены

 

 

y1

 

y2

 

y3

 

 

y4

 

y5

y6

y7

y4

–152

 

 

–8

 

0

 

64

 

 

1

 

4

 

0

 

0

y2

9

 

 

 

–5

 

1

 

–5/2

0

 

–1/4

0

 

0

y6

428

 

 

–272

 

0

 

–126

0

 

–12

1

 

0

y7

24

 

 

–34

 

0

 

–18

 

0

 

–1

0

 

1

−ϕ

–102

 

62

 

0

 

69

 

 

0

 

2.5

 

0

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Базис

Свободные члены

 

y1

 

y2

 

 

y3

 

 

 

y4

 

y5

 

y6

 

y7

y1

19

 

1

 

0

 

 

 

–8

 

 

–1/8

–1/2

 

0

 

0

y2

104

 

0

 

1

 

 

–85/2

 

 

–5/8

–11/4

 

0

 

0

y6

5596

 

0

 

0

 

 

–2302

 

 

–34

–148

 

1

 

0

y7

670

 

0

 

0

 

 

–290

 

–17/4

–18

 

0

 

1

−ϕ

–1280

 

0

 

0

 

 

565

 

 

7.75

67/2

 

0

 

0

Как следует из последней симплекс-таблицы, оптимальным решением будут:

y1 =19, y2 =104, y3 = 0; ϕmin ( y) =1280.

Пример 5. Решить задачу с использованием двойственного симплекс-алгоритма.

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

65

найти max {− ϕ( y) = −8y1 12 y2 18y3} при ограничениях:

y

+ 3y

 

 

2;

 

1

 

 

 

2

 

1;

y1

+ 3y2

 

y

, y

2

, y

3

0.

 

1

 

 

 

 

Запишем начальный базис:

y4 = −2 ( y1 + 3y2 );y5 = −1 ( y1 3y2 ).

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

− ϕ( y) = 0 (8y1 +12 y2 +18y3 ).

Соответствующая симплекс-таблица имеет вид:

Базис

 

Свободные члены

 

 

 

y1

 

y2

 

y3

 

y4

y5

y1

 

 

 

 

 

2

 

 

 

–1

 

0

 

–3

 

1

0

y5

 

 

 

 

 

–1

 

 

 

–1

 

–3

 

0

 

0

1

−ϕ

 

 

 

 

 

0

 

 

 

8

 

12

 

18

 

0

0

Как следует из таблицы,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

γ

k

 

 

8

 

 

18

 

 

 

 

 

 

 

 

max

 

 

= max

 

,

 

= max {8,

6}

= −6.

 

 

 

 

 

 

 

 

 

αik

 

1

 

 

3

 

 

 

 

 

 

 

Соответственно, преобразованная таблица имеет вид:

Базис

Свободные члены

y1

y2

y3

y4

y5

y3

2/3

1/3

0

1

–1/3

0

y5

–1

–1

–3

0

0

1

−ϕ

–12

2

12

0

6

0

Аналогично, из полученной таблицы следует: max{2,4}= −2 .

66

Тогда, преобразованная таблица представится в виде:

Базис

Свободные члены

y1

y2

y3

y4

y5

y3

1/3

0

–1

1

–1/3

1/3

y1

1

1

3

0

0

–1

−ϕ

–14

0

6

0

6

2

В результате, из последней таблицы следует, что оптимальным решением задачи будут:

y1 =1, y2 = 0, y3 =1/ 3;

ϕmin =14.

1.6.Транспортная задача линейного программирования

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

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

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

1.6.1. Постановка задачи

Пусть на базах A1 , A2 , ..., Am сосредоточены определенные ресурсы в количестве a1 , a2 , ..., am . Эти ресурсы должны быть доставлены на объекты B1 , B2 , ..., Bn в количестве b1 , b2 , ..., bn . Стои-

67

мость перевозки единицы груза из Ai в B j обозначим через cij . Через xij обозначим количество ресурсов, которое доставляются из

Ai в B j .

Задача. Найти матрицу перевозок

xij

, i =

1, m

, j =

1, n

, кото-

 

 

m n

рая минимизирует целевую функцию

f (x) = ∑∑cij xij , удовлетво-

 

 

i=1 j=1

ряющую ограничениям

 

 

 

 

 

 

n

xij = ai , i =1, m;

j=1

m

xij = b j , j =1, n;

i=1

 

m

n

ai = b j .

i=1

j=1

Первое и второе ограничения означают, что суммарное количество груза, вывозимого с базы Ai , точно равно имеющимся там запа-

сам ai , а ввозимый груз на базу B j точно равен заявкам этой базы.

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

Поставленная транспортная задача – это задача линейного программирования, но записанная особым образом. Для её решения разработаны специальные методы более эффективные, чем сим- плекс-метод.

В представленной задаче m ×n неизвестных. Введем ряд понятий.

Матрица xij размерности m ×n называется планом перевозок, xij перевозкой, cij матрицей издержек.

План называется допустимым, если он удовлетворяет указанным выше ограничениям.

План называется оптимальным, если он минимизирует функцию f (x) .

68

Переменные xij удовлетворяют m + n уравнениям системы ог-

раничений, ранг которой r равен m + n 1 . Если расположить переменные xij следующим образом:

x11 , x12 , ..., x1n , x21 , ..., x2n , ..., xm1 , ..., xmn ,

то матрица ограничений транспортной задачи примет вид

 

n

 

n

n

 

 

 

64748

64748

64748

 

1 1 K 1

0

0 K 0 K 0 0 K 0

 

0 0 K 0

1 1 K 1

K 0 0 K 0

 

KKKKK

KKKKK

K KKKKK

A =

0 0 K 0

0

0 K 0 K 1 1 K 1

 

1 0 K 0

1 0 K 0 K 1 0 K 0

 

0 1 K 0

0

1 K 0 K 0 1 K 0

 

KKKKK

KKKKK

K KKKKK

 

0 0 K 1

0

0 K 1 K 0 0 K 1

 

 

 

 

 

m

.

n

Нетрудно видеть, что ранг r матрицы A равен m + n 1 . Действительно, всего в матрице m + n строк и все строки линейно зависимы. Чтобы в этом убедиться, достаточно сложить первые m строк и вычесть сумму последних n , при этом получится нулевой вектор. С другой стороны, нетрудно заметить, что любые m + n 1 строк матрицы A линейно независимы.

Итак, ранг системы ограничений равен m + n 1. Следовательно, можно выделить m + n 1 базисных переменных.

Существует понятие опорный план – это план, в котором отличны от нуля не более чем m + n 1 переменных xij .

Опорный план это фактически базис.

1.6.2. Нахождение первого опорного плана

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

69

этого существует несколько методов, на некоторых из них остановимся ниже.

Зададим транспортную задачу табл. 1.30.

 

 

 

 

 

 

 

 

Таблица 1.30

 

 

 

 

 

 

B

 

 

 

A

 

 

 

 

 

 

 

 

B1

 

B2

 

K

 

Bn

Запасы ai

 

 

 

 

A

 

c11

 

c12

K

 

c1n

a

 

1

x11

 

x12

 

 

 

x1n

 

1

 

 

 

 

 

 

 

 

 

A

 

c21

 

c22

K

 

c2n

a

2

 

2

x21

 

x22

 

 

 

x2n

 

 

 

 

 

 

 

 

 

 

K

K

 

K

 

K

 

K

K

A

 

cm1

 

cm2

K

 

cmn

a

m

m

xm1

 

xm2

 

 

 

xmn

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

 

n

Заявки b j

b1

 

b2

 

K

 

bn

ai =

b j

 

 

 

 

 

 

 

 

i=1

 

j=1

В табл. 1.30 A – пункт отправления, B – пункт назначения. Диагональный метод нахождения опорного плана состоит в

следующем. В верхнюю левую клетку таблицы ставится минимальное из чисел a1 и b1 , т.е. min{a1 , b1} .

Пусть a1 < b1 , Следовательно, поставщик A1 полностью использовал свои запасы и при установлении остальных перевозок его можно не учитывать (строка, соответствующая a1 , из таблицы вычеркивается). Теперь потребность 1-го потребителя будет составлять b1 a1 .

Если наоборот, a1 > b1 , то соответствующий столбец из таблицы

вычеркивается.

Далее процесс повторяется.

Пример 1. Рассмотрим табл. 1.31. В этом примере m = 3, n = 4 .

В результате получили m + n 1 = 6 отличных от нуля переменных, т.е. это опорный план, в соответствии с которым

3

4

 

f (x) = ∑∑cij xij

=1630 .

i=1 j=1

70