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

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

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

2x

 

3x

3

1;

 

 

 

 

 

2x

 

3x

3

+ x

4

=1;

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

3x1 + 4x2 + x3 = 6;

3x1 + 4x2 + x3 = 6;

x

 

+ 2x

2

x

3

x

5

2;

x

 

+ 2x

2

x

3

x

5

= 2;

 

1

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

x

 

0,

 

 

j =

 

 

 

 

 

x

 

0,

 

 

j =

 

 

 

 

j

 

 

1,3.

 

 

 

j

 

 

1,5.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

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

Кроме того, как было отмечено выше, ранг r n (чаще всего r < n ) и система имеет бесчисленное множество решений (если, конечно, она вообще совместна).

Выделим среди n переменных первые r и назовем их базисными переменными. Остальные n r переменные назовем свободны-

ми.

Итак, x1 , x2 , K, xr – базисные, xr+1 , xr+2 K, xn – свободные переменные.

Систему ограничений можно разрешить относительно базисных переменных:

x

=β −(α

 

x

r+1

 

 

x

r+2

+K+α

 

 

x

n

 

),

 

 

1

1

1r+1

 

 

1r+2

 

 

 

1n

 

 

 

 

 

 

 

 

 

 

(α

 

 

 

 

 

K

 

 

 

 

 

 

 

 

 

 

 

 

 

),

 

x

i

ir+1

x

r+1

ir+2

x

r+2

+K+α

in

x

n

(1.3)

 

i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

K

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(α

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

).

 

 

 

 

 

x

 

 

 

x

 

+K+α

 

 

 

x

 

 

 

x

r

rr+1

r+1

rr+2

r+2

rn

n

 

 

r

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

21

Следует отметить, что свободные переменные выбираются таким образом, чтобы коэффициенты βi были неотрицательны, т.е.

βi 0 .

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

Выразим также целевую функцию через свободные переменные:

f (x) = γ0 (γr +1xr +1 + γr +2 xr +2 +K+ γn xn ).

(1.4)

Возьмем все свободные переменные равными нулю: xr+1 = xr +2 =K= xn = 0 ,

тогда из выражения (1.3) следует, что значения базисных переменных соответственно равны:

x1 1 , K, xi = βi , K, xr = βr .

Полученное таким образом решение системы ограничений

xб1 = (β1 , β2 , K, βr , 0, K, 0)т

является допустимым, так как все его компоненты неотрицательны

( βi 0 ).

Такое решение называют базисным (в базисном решении отличны от нуля ровно r переменных). В этом случае значение целевой функции

f (xб1 ) = γ0 .

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

Если проанализировать выражение (1.4), то видно, что значение целевой функции можно увеличить только в случае, если имеются отрицательные коэффициенты γ j . Если все коэффициенты γ j 0 ,

то значение целевой функции увеличить нельзя. Поэтому признаком оптимальности решения поставленной задачи максимизации

22

является неотрицательность всех коэффициентов при свободных переменных в выражении (1.4).

Если среди коэффициентов есть хотя бы один отрицательный, например γ j , тогда за счет увеличения x j можно увеличить зна-

чение f (x) . Однако это возможно в определенных пределах, так как выбор x j влияет на базисные переменные, которые могут стать

недопустимыми, т.е. отрицательными.

Выразим базисные переменные из системы (1.3), считая все свободные переменные за исключением x j равными нулю:

x1 = β1 − α1 j x j ;

K

xi = βi − αij x j ;

K

xr r − αrj x j .

При этом f (x) = γ0 − γ j x j .

Если все коэффициенты αij 0 , i =1, r , то увеличение x j мо-

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

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

αij 0, i =1, r ,

где индекс j соответствует γ j < 0 .

 

Рассмотрим случай, когда имеются αij > 0 .

Тогда увеличение

x j приводит к тому, что базовая переменная xi

будет уменьшаться

до тех пор, пока не станет равной нулю при некотором значении x j . Это значение определяется уравнением

xi = βi − αij x j = 0 .

23

 

 

Отсюда x j =

 

βi

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

αij

 

 

 

 

 

Если несколько αij > 0 , то первой обратится в ноль переменная

 

xl ,

для

 

которой отношение

βl

 

минимально, т.е.

 

 

αlj

 

 

 

 

 

 

 

 

 

 

 

 

 

β

 

 

 

β

 

 

 

 

 

 

 

 

 

l

 

 

i

 

 

 

 

по всем i , для которых

 

 

= min

 

 

= ρ (минимум берется

 

α

 

α

 

 

lj

i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ij

 

 

 

 

 

 

αij

> 0 ).

 

 

 

 

 

 

 

 

 

 

 

 

Когда

xl

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

дут еще принимать неотрицательные значения.

 

 

 

Элемент αlj

 

называют разрешающим. Он определяет перемен-

ную xl , которую выводят из базиса xб1 , и указывает свободную переменную x j , вводимую в новый базис xб2 :

xr+1 =K= xn = 0, кроме x j = ρ,

 

 

1 − α1 j x j ,

x1

K

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

= 0,

 

 

 

 

 

 

xl

 

 

 

 

 

 

K

 

 

 

 

 

 

 

 

 

 

= β

 

− α

 

x

 

.

x

r

r

rj

j

 

 

 

 

 

 

Значение целевой функции

 

f (xб2 ) = γ0 − γ j ρ > f (xб1 ) , так как

γ j < 0 , а ρ > 0 .

 

 

 

 

 

 

 

 

 

Может оказаться, что

ρ = 0 ,

тогда целевая функция сохраняет

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

Поскольку в базис введена новая переменная x j и выведена xl , выразим как и прежде базисную переменную x j через свободные переменные. Для этого понадобится уравнение из системы (1.3)

24

xl = βl (αlr +1 xr+1 +K+ αlj x j +K+ αln xn ).

Из этого уравнения получим

 

 

 

βl

 

 

αlr +1

 

 

 

1

 

 

 

αln

 

 

x

 

=

 

x

 

+K+

x

 

+K+

x

.

 

 

 

α

 

 

 

j

 

α

lj

 

 

α

lj

 

r +1

 

lj

l

 

α

lj

 

n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Подставив

x j

в остальные уравнения системы (1.3), получим

выражения для нового базиса:

xi = β′i (α′ir +1 xr +1 +K+ α′ij xl +K+ α′in xn ),

где на j -м месте стоит xl – новая свободная переменная.

Целевая функция через новые свободные переменные запишется в виде

f (x) = γ′0 (γ′r+1 xr +1 +K+ γ′j xl +K+ γ′n xn ).

Далее все рассуждения повторяются снова, т.е. исследуются знаки коэффициентов γ′j и проводятся соответствующие преобра-

зования до получения окончательного результата.

Для облегчения процесса поиска оптимального решения используются специальные таблицы, называемые симплекс-таблицами.

1.2.2.Алгоритм решения задач линейного программирования

сиспользованием симплекс-таблиц

1. Каноническая система ограничений Ax = b приводится к виду, в котором базисные переменные выражены через свободные, т.е. к виду

x1 1 (α1r+1 xr +1 + α1r +2 xr+2 +K+ α1n xn );

K

xr = βr (αrr +1 xr +1 + αrr+2 xr +2 +K+ αrn xn ),

а целевая функция к виду (1.4):

f(x) = γ0 (γr +1xr +1 + γr +2 xr +2 +K+ γn xn ).

2.Заполняется симплекс-таблица (табл. 1.1).

25

 

 

 

 

 

 

 

 

 

 

Таблица 1.1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Свобод-

 

 

 

 

Переменные

 

 

 

 

 

Базис

ные чле-

 

 

 

 

 

 

 

 

 

 

 

x1

xi

xr

xr+1

x j

xn

 

 

ны

 

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

 

Каждая строка табл. 1.1 соответствует уравнению, а последняя строка соответствует целевой функции.

3. В строке коэффициентов целевой функции (не считая γ0 ) выбирается γ j < 0 , обычно максимальным по модулю.

Если все γ j 0 , то оптимальное решение достигнуто, причем

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

4. В j -м столбце среди положительных коэффициентов αij выбирается разрешающий элемент αlj , т.е. элемент для которого ми-

нимально отношение βl .

αlj

Если положительных коэффициентов нет, то задача не имеет решения.

5.Делятся все члены строки, содержащей разрешающий элемент, на αlj . Полученная строка вносится на то же место в новой таблице.

6.Из каждой оставшейся i -й (i l) строки вычитается получившаяся строка, умноженная на коэффициент при x j в l -й стро-

26

ке. В результате в клетках, соответствующих j -му столбцу появ-

ляются нули. Преобразованные строки записываются в новой таблице на место прежних.

Переменные x j и xl в новой таблице меняются местами, т.е. x j

вводится в базис вместо xl . Далее идет переход на шаг 3.

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

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

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

 

 

 

 

 

 

Таблица 1.2

 

 

 

 

Вагоны

 

 

Поезда

 

 

 

 

Багаж-

Почто-

 

Плацкарт-

Купейный

Спальный

 

ный

вый

 

ный

 

 

Скорый

1

1

 

5

6

3

Пассажирский

1

 

8

4

1

Число вагонов

12

8

 

81

70

26

Число пассажи-

α1 = 0

α2 = 0

 

α3 = 58

α4 = 40

α5 = 32

ров в вагоне

 

Определить число скорых x1

и пассажирских x2 поездов, кото-

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

Решение. Целевая функция:

f (x) = c1x1 + c2 x2 ,

где c1 – число пассажиров в скором вагоне; c2 – число пассажиров

в пассажирском вагоне.

Найти max f (x) при ограничениях:

1x1 +1x2 12 – ограничения на число багажных вагонов;

27

1x1 + 0x2 8 – ограничения на число почтовых вагонов;

5x1 + 8x2 81 – ограничения на число плацкартных вагонов; 6x1 + 4x2 70 – ограничения на число купейных вагонов; 3x1 +1x2 26 – ограничения на число спальных вагонов.

При этом

c1 =1 α1 +1 α2 + 5 α3 + 6 α4 + 3 α5 ; c2 =1 α1 + 0 α2 + 8 α3 + 4 α4 +1 α5 .

Задача 2. В начале рабочего дня из автобусного парка выходят на линию x1 автобусов, через час еще x2 автобусов, еще через

час – еще x3 автобусов.

Каждый автобус работает непрерывно 8 ч. Рабочий день составляет 10 ч.

Минимально необходимое число машин на линии в i -й час рабочего дня (i =1,10) равно bi . Превышение этого числа приводит к дополнительным издержкам: ci рублей в течение i -го часа на каждый дополнительный автобус.

Определить количество автобусов x1 , x2 , x3 , выходящих на

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

Решение. Составим табл. 1.3.

Таблица 1.3

Часы

1

2

3

8

9

10

Минимальное количество

b1

b2

b3

b8

b9

b10

автобусов

 

 

 

 

 

 

 

Количество автобусов

x1

x1

x1

 

 

 

 

 

+

+

 

 

x2

 

 

 

x 2

x 2

 

 

 

 

 

 

+

 

 

+

 

 

 

 

x3

 

 

x3

x3

С учетом табл. 1.3 целевая функция может быть представлена в виде:

28

f (x) = (x1 b1 )c1 + (x1 + x2 b2 )c3 + (x1 + x2 + x3 b3 )c3 +K+

+ (x1 + x2 + x3 b8 )c8 + (x2 + x3 b9 )c9 + (x3 b10 )c10 =

8

 

 

 

 

9

 

 

10

10

= x1 ci

+ x2 ci

+ ci bi ci

i=1

 

 

 

i=2

 

 

i=3

i=1

Необходимо найти min f (x) при ограничениях:

x

 

 

b ;

 

 

 

 

1

 

 

1

 

 

 

 

 

 

 

 

 

 

b2 ;

 

 

x1 + x2

 

 

x1 + x2

+ x3

max bi ;

 

 

 

 

 

 

 

 

3i8

 

x2 + x3

b9 ;

 

 

x

3

b .

 

 

 

 

 

 

10

 

 

 

 

Пример 1.2. Решение задач симплекс-методом.

Задача 1. Найти max f (x) = 21x1 +11x2

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

 

 

7x

+ 4x

 

13;

 

 

 

 

1

 

 

2

 

 

 

 

x1

1;

 

 

 

 

 

 

2x

+ x

2

3;

 

 

 

 

1

 

 

 

 

 

 

x

0, x

2

0;

 

 

 

1

 

 

 

 

 

Решение. 1. Приведем систему ограничений к каноническому виду путем добавления ослабляющих переменных x3 , x4 :

7x1 + 4x2 + x3 =13;

x1 + x4 =1;

2x1 + x2 + x5 = 3.

2. Разрешим систему ограничений относительно базисных переменных. Ранг системы r = 3 . В качестве базисных переменных примем переменные x3 , x4 , x5 . Тогда переменные x1 , x2 будут свободными.

x3 =13 (7x1 + 4x2 );

x4 =1 x1;

x5 = 3 (2x1 + x2 ).

29

Целевая функция:

 

f (x) = 0 (21x1 11x2 ) .

 

 

 

 

3. Составим табл. 1.4.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Таблица 1.4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Базис

 

 

 

 

Свободный

 

x1

x2

 

x3

x4

 

x5

 

 

 

 

 

 

член

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x3

 

 

 

 

 

 

13

 

 

7

4

 

1

0

 

0

x4

 

 

 

 

 

 

1

 

 

 

1

0

 

0

1

 

0

x5

 

 

 

 

 

 

3

 

 

2

1

 

0

0

 

1

f (x)

 

 

 

 

 

 

0

 

 

 

–21

–11

 

0

0

 

0

13

 

1

 

3

=

1

,

αij =1 – разрешающий элемент.

 

 

min

7

,

1

,

 

 

1

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

4. Составим табл. 1.5. Для чего выведем элемент x4 из базиса, а элемент x1 введем в базис.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Таблица 1.5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Базис

 

 

 

Свободный

x1

 

x2

x3

x4

 

x5

 

 

 

 

 

 

член

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x3

 

 

 

 

 

 

 

 

6

0

4

1

–7

 

0

x1

 

 

 

 

 

 

 

 

1

1

0

0

1

 

0

x5

 

 

 

 

 

 

 

 

3

0

 

1

0

–2

 

1

f (x)

 

 

 

 

 

 

 

 

21

0

 

–11

0

21

 

0

6

 

1

=

1

.

 

 

 

 

 

 

 

min

 

,

 

 

 

 

 

 

 

 

 

 

 

 

4

 

 

1

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

5. Составим табл. 1.6. Для этого удалим из базиса элемент x5 и

введем в базис –

x2 .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Таблица 1.6

 

 

 

 

 

 

 

 

 

 

 

Базис

Свободный

x1

x2

x3

 

x4

 

x5

 

член

 

 

 

 

 

 

 

 

 

 

 

 

x3

 

2

0

0

1

1

 

–4

 

x1

 

1

1

0

0

 

1

 

0

 

x2

 

1

0

1

0

 

–2

 

1

 

f (x)

 

32

0

0

0

 

–1

 

11

 

 

 

 

 

 

 

 

 

 

 

30