Загребаев Методы матпрограммирования 2007
.pdf2x |
|
− 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 ; |
|||||||
|
|
|
|
|
|
|
|
3≤i≤8 |
|
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