Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Математические методы.doc
Скачиваний:
57
Добавлен:
30.07.2019
Размер:
7.16 Mб
Скачать

9.3. Задача линейного программирования в стандартной форме

Задача ЛП в стандартной форме с m ограничениями и n переменными имеет следующий вид:

W = c1x1 + c2x2 + ... + cnxn  min (max)

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

a11x1 + a12x2 + ... + a1nxn = b1;

a21x1 + a22x2 + ... + a2nxn = b2;

...

am1x1 + am2x2 + ... + amnxn = bm;

x1  0; x2  0;...; xn  0;

b1  0; b2  0;...; bm  0.

В матричной форме

W = c x  min (max)

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

Ax = b; x  0; b  0,

где

A - матрица размерности mxn ;

x - вектор-столбец переменных размерности nx1;

b - вектор-столбец ресурсов размерности mx1;

с - вектор-строка оценок задачи ЛП 1xn .

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

Преобразования неравенств

Ограничения в виде неравенств можно преобразовать в равенства при помощи введения так называемых остаточных или избыточных переменных.

Ограничение по использованию земли из примера 2.1

4 x1 + 1,5 x2  24

можно преобразовать в равенство при помощи остаточной переменной

4 x1 + 1,5 x2 + x3 = 24.

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

Аналогично

x1  2

можно преобразовать путем введения избыточной переменной x4:

x1 - x4 = 2 .

Преобразование неограниченных по знаку переменных

Переменные, принимающие как положительные, так и отрицательные значения, следует заменять разностью двух неотрицательных:

x = x+ - x-; x+  0; x-  0.

Приведем к стандартной форме следующую задачу ЛП:

W = x1 - 2 x2 + 3 x3  max;

x1 + x2 + x3  8;

x1 - x2 + x3  9;

3 x1 - x2 - 2 x3 = -17;

x1  0; x2  0,

где x3 - переменная, неограниченная по знаку.

Последовательность действий следующая:

  1. Умножим обе части равенства на -1, так как все элементы матрицы ресурсов должны быть неотрицательными.

  2. Заменим x3 на x4-x5, где x4 и x5  0.

  3. Введем дополнительные остаточную x6 и избыточную x7 переменные в два первых неравенства.

  4. Припишем нулевые значения оценок задачи ЛП при переменных x6 и x7. Значение целевой функции при этом не изменится.

После преобразований имеем стандартную форму задачи ЛП:

W = x1 - 2 x2 + 3 x4 - 3 x5  max;

x1 + x2 + x4 - x5 + x6 = 8;

x1 - x2 + x4 - x5 - x7 = 9;

-3 x1 + x2 + 2 x4 - 2 x5 = 17;

x1  0; x2  0; x4  0; x5  0; x6  0; x7  0.

2.4. Основы симплекс - метода линейного программирования

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

x1 + a1,m+1xm+1 + ... + a1sxs+...+ a1nxn = b1;

...

x2 + a2,m+1xm+1 + ... + a2sxs+...+ a2nxn = b2;

...

xm + am,m+1xm+1 + ... + amsxs+...+ amnxn = bm.

Переменные x1, x2,...,xm, входящие с единичными коэффициентами только в одно уравнение системы и с нулевыми - в остальные, называются базисными. В канонической системе каждому уравнению соответствует ровно одна базисная переменная. Остальные n-m переменных (xm+1, ...,xn) называются небазисными переменными.

Для приведения системы к каноническому виду можно использовать два типа элементарных операций над строками:

  1. Умножение любого уравнения системы на положительное или отрицательное число.

  2. Прибавление к любому уравнению другого уравнения системы, умноженного на положительное или отрицательное число.

Алгоритм симплекс - метода:

  1. Выбираем начальное допустимое базисное решение. Базисным решением называется решение, полученное при нулевых значениях небазисных переменных, т.е. xi=0, i=m+1,...,n. Базисное решение называется допустимым базисным решением, если значения входящих в него базисных переменных неотрицательны, т.е. xj = bj  0, j=1,2,...,m. В этом случае целевая функция примет следующий вид: W = cbxb = c1b1 + c2b2+...+cmbm. Заполняем первоначальную таблицу симплекс - метода:

Таблица 9.3

cb

xb

c1

C2

...

cm

cm+1

...

cn

bi

базис

x1

X2

...

xm

xm+1

...

xn

с1

x1

1

0

...

0

a1,m+1

...

a1n

b1

с2

x2

0

1

...

0

a2,m+1

...

a2n

b2

...

...

...

...

...

...

...

...

...

...

cm

xm

0

0

...

1

am,m+1

...

amn

bm

W

  1. Вычисляем вектор относительных оценок c при помощи правила скалярного произведения

cj = cj - cbSj ,

где

сb - вектор оценок базисных переменных;

Sj - j-тый столбец в канонической системе, соответствующей рассматриваемому базису.

Дополняем первоначальную таблицу c – строкой (табл. 9.4).

Таблица 9.4

cb

xb

c1

c2

...

cm

cm+1

...

cn

bi

базис

x1

x2

...

xm

xm+1

...

xn

с1

x1

1

0

...

0

a1,m+1

...

a1n

b1

с2

x2

0

1

...

0

a2,m+1

...

a2n

b2

...

...

...

...

...

...

...

...

...

...

cm

xm

0

0

...

1

am,m+1

...

amn

bm

c – строка

0

0

...

0

...

W

  1. Если все оценки cj0 (cj0), i=1,...,n, то текущее допускаемое решение - максимальное (минимальное). Решение найдено.

  2. В противном случае в базис необходимо ввести небазисную переменную xr с наибольшим значением cj вместо одной из базисных переменных (табл. 9.5).

Таблица 9.5

cb

xb

c1

c2

...

cm

cm+1

...

cr

...

cn

bi

базис

x1

x2

...

xm

xm+1

...

xr

...

xn

с1

x1

1

0

...

0

a1,m+1

...

a1r

...

A1n

b1

с2

x2

0

1

...

0

a2,m+1

...

a2r

...

A2n

b2

...

...

...

...

...

...

...

...

...

...

...

...

cm

xm

0

0

...

1

am,m+1

...

amr

...

amn

bm

c - строка

0

0

...

0

...

...

W

max

  1. При помощи правила минимального отношения min(bi /air) определяем переменную xp, выводимую из базиса. Если коэффициент air отрицателен, то bi/air = . В результате пересечение столбца, где находится вводимая небазисная переменная xr, и строки, где находится выводимая базисная переменная xp, определит положение ведущего элемента таблицы (табл. 9.6).

Таблица 9.6

cb

xb

c1

c2

...

cm

cm+1

...

cr

...

cn

bi

bi/

air

x1

x2

...

xm

xm+1

...

xr

...

xn

с1

x1

1

0

...

0

a1,m+1

...

a1r

...

a1n

b1

b1/a1r

с2

x2

0

1

...

0

a2,m+1

...

a2r

...

a2n

b2

b2/a2r

...

...

...

...

...

...

...

...

...

...

...

...

...

сp

xp

0

0

...

0

ap,m+1

...

apr

...

apn

bp

bp/apr

m

i

n

...

...

...

...

...

...

...

...

...

...

...

...

...

cm

xm

0

0

...

1

am,m+1

...

amr

...

amn

bm

bm/anr

c -стро-ка

0

0

...

0

...

...

W

max

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

  2. Вычисляем новые относительные оценки с использованием правила скалярного произведения и переходим к шагу 4.

В качестве примера решим задачу ЛП примера 9.1 Оптимизация размещения побочного производства лесничества:

5000 x1 + 2500 x2  max,

4 x1 + 1,5 x2  24;

1200 x1 + 150 x2  6000;

20 x1 + 20 x2  200;

x1  2;

x1  0; x2  0.

Приведем задачу к стандартной форме:

5000 x1 + 2500 x2  max,

4 x1 + 1,5 x2 + x3 = 24;

1200 x1 + 150 x2 +x4 = 6000;

20 x1 + 20 x2 + x5 = 200;

x1 - x6 = 2;

x1 ... x6  0.

Приведем систему равенств к каноническому виду. Первые три уравнения имеют соответственно по базисной переменной x3, x4, x5, однако в четвертом она отсутствует, ввиду того, что при переменной x6 стоит отрицательный единичный коэффициент. Для приведения системы к каноническому виду используем метод искусственных переменных. Идея метода заключается в следующем. Введем искусственную переменную x7 в последнее уравнение

5000 x1 + 2500 x2  max,

4 x1 + 1,5 x2 + x3 = 24;

1200 x1 + 150 x2 +x4 = 6000;

20 x1 + 20 x2 + x5 = 200;

x1 - x6 + x7 = 2;

x1 ... x7  0.

Вспомогательная система имеет следующее допустимое базовое решение:

x1 = x2 = 0, x3 =24, x4= 6000, x5 = 200, x7 = 2.

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

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

  2. На втором этапе допустимое базовое решение, полученное на первом этапе, улучшается в соответствии с целевой функцией исходной задачи.

В соответствии с рассмотренным алгоритмом на первом этапе решаем симплекс - методом следующую задачу ЛП:

x7  min,

4 x1 + 1,5 x2 + x3 = 24;

1200 x1 + 150 x2 +x4 = 6000;

20 x1 + 20 x2 + x5 = 200;

x1 - x6 + x7 = 2;

x1 ... x7  0.

Строим первоначальную таблицу (табл. 9.7).

Таблица 9.7

cb

xb

0

0

0

0

0

0

1

bi

bi/air

базис

X1

x2

x3

x4

x5

x6

x7

0

x3

4

1.5

1

0

0

0

0

24

24/4

0

x4

1200

150

0

1

0

0

0

6000

60/12

0

x5

20

20

0

0

1

0

0

200

20/2

1

x7

1

0

0

0

0

-1

1

2

2/1

min

c

строка

-1

0

0

0

0

1

0

W=2

min

Очевидно, что первоначальную таблицу необходимо модифицировать путем введения в базис переменной x1 вместо x7. Строим смежную симплекс-таблицу (табл.9.8).

Таблица 9.8

cb

xb

0

0

0

0

0

0

1

bi

базис

x1

x2

x3

x4

x5

x6

x7

0

x3

0

1,5

1

0

0

4

-4

16

0

x4

0

150

0

1

0

1200

-1200

3600

0

x5

0

20

0

0

1

20

-20

160

0

x1

1

0

0

0

0

-1

1

2

c

строка

0

0

0

0

0

0

1

W=0

В табл. 9.8 все коэффициенты в строке c положительны или равны нулю, поэтому текущее базисное решение оптимальное (минимальное), которое используем на втором этапе двухэтапного симплекс - алгоритма. С этой целью возвращаемся к первоначальной целевой функции W = 5000x1 + 2,5x2 и продолжаем вычисления в симплекс – таблицах (табл. 9.9 – табл. 9.11). В табл. 9.9 как переменная x2, так и x6 могут быть введены в базис, т.к. их коэффициенты в строке c положительны (решается задача минимизации). Вводим x2 исходя из того факта, что данная переменная отражает искомое количество партий деревьев и в результате расчетов должна находиться в базисе. В принципе, искусственная переменная x6 также может быть введена в базис на этом этапе, однако процедура расчетов при этом значительно удлинится.

Таблица 9.9

cb

xb

5000

2500

0

0

0

0

0

bi

bi/air

базис

x1

X2

x3

x4

X5

x6

x7

0

x3

0

1,5

1

0

0

4

-4

16

16/1,5

0

x4

0

150

0

1

0

1200

-1200

3600

360/15

0

x5

0

20

0

0

1

20

-20

160

16/2

m

i

n

5000

x1

1

0

0

0

0

-1

1

2

c - строка

0

2500

0

0

0

5000

-5000

W=

10000

Таблица 9.10

cb

xb

5000

2500

0

0

0

0

0

bi

bi/air

ба-зис

X1

x2

x3

x4

x5

x6

x7

0

x3

0

0

1

0

-0,075

2,5

-2,5

4

4/

2,5

m

i

n

0

x4

0

0

0

1

-7,5

1050

-1050

2400

240/105

2500

x2

0

1

0

0

0,05

1

-1

8

8/2

5000

x1

1

0

0

0

0

-1

1

2

c - строка

0

0

0

0

-125

2500

-5000

W=

30000

max

Таблица 9.11

cb

xb

5000

2500

0

0

0

0

0

bi

базис

x1

x2

x3

x4

x5

x6

x7

0

x6

0

0

0,4

0

-0,03

1

-1

1,6

0

x4

0

0

-420

1

24

0

0

720

2500

x2

0

1

-0,4

0

0,08

0

0

6,4

5000

x1

1

0

0,4

0

-0,03

0

0

3,6

c -строка

0

0

-1000

0

-50

0

0

W=34000

Полученные в табл. 9.11 окончательные результаты полностью соответствуют оптимальному решению в графическом методе (см. рис. 9.1). Остается открытым вопрос о целочисленности получаемых результатов. Если в графической интерпретации задачи ЛП мы можем визуально оценить ситуацию и принять окончательное решение путем субъективного округления, то в табличном методе, а тем более при решении задачи на ЭВМ, требуется применение специальной процедуры, которая получила название целочисленное программирование.