Вы находитесь на странице: 1из 29

Симплекс-метод решения задач

линейного программирования
o Формы задачи линейного программирования
o Свойства систем линейных алгебраических
уравнений
o Базисные решения
o Общая характеристика симплекс-метода
o Вычислительная схема симплекс-метода
o Табличный алгоритм симплекс-метода

1
Геометрическая интерпретация задачи
линейного программирования
o Целевая функция - уравнение вида: F(x1,x2) = c1x1 + c2x2
задает плоскость в 3х-мерном пространстве
o Ограничение-равенство вида: a1x1+a2x2 = b1
задает прямую в плоскости OXY
o Ограничение-неравенство вида: a1x1+a2x2 ≤ b1
задает одну из полуплоскостей
плоскости OXY

x1 ≥ 0
2⋅ x1 + 6⋅ x2 ≤ 12
2
x1
( )
c1 x1
x2 ≤ 2 −
3
c1( x1)
x1
1
( )
c1 x1 → 2 −
3

x2 ≥ 0
0
0 2 4 6 8
x1
2
Общая форма задачи
линейного программирования
o Тип ограничений определяет форму задачи линейного
программирования

F ( x1 , x2 ) =c1 x1 + c2 x2 → min/ max

при условии что:


a11x1 + a12 x2 ≤ b1
a x ≥ b
 21 1 2

a31x1 + a32 x2 = b3
 x1 ≥ 0, x2 ≥ 0

• Смешанная система ограничений: общая форма


3
Стандартная форма задачи
линейного программирования
Целевая функция:
N
=F ∑C x
j =1
j j → min/ max

Система ограничений (включает M линейных неравенств):

∑a
j =1
ij ⋅ x j ≤ bi , i =
1 m

x j ≥ 0, j = 1 N
• Система ограничений содержит только неравенства: стандартная форма
• Тип неравенства не имеет значения:

x ≥ 1 → − x ≤ −1
4
Каноническая форма задачи
линейного программирования
Целевая функция:
N
=F ∑C x
j =1
j j → min/ max

Система ограничений (включает M линейных уравнений):


N

∑a
j =1
ij ⋅ x j = bi , i = 1 m

x j ≥ 0, j = 1 N
Каноническая форма задачи линейного программирования:
• все ограничения в задаче – равенства
• все переменные в задаче неотрицательны

5
Приведение к канонической форме
o Любое неравенство можно преобразовать в уравнение, введя
дополнительную переменную:

a1 ⋅ x1 + a 2 ⋅ x 2 ≤ b a1 ⋅ x1 + a 2 ⋅ x 2 + s = b
s≥0
o Дополнительные переменные – остатки (slack), разности правой и
левой частей неравенств системы ограничений для некоторого
решения задачи ЛП:

s = b − a1 ⋅ x1 − a 2 ⋅ x 2
o Если в оптимальном решении остаток равен нулю, то ресурс
расходуется полностью и ограничение является связывающим

6
Приведение к канонической форме
других видов ограничений
o Ограничения вида ≥ также преобразуются в равенства:

a1 ⋅ x1 + a 2 ⋅ x 2 ≥ b a1 ⋅ x1 + a 2 ⋅ x 2 − s = b
s≥0
o Если переменная в задаче ЛП может принимать отрицательные
значения, то ее следует заменить на разность двух
неотрицательных переменных:

x2= s1 − s2
a1 ⋅ x1 + x 2 = b a1 ⋅ x1 + s1 − s2 =
b
x2 ∈ R s1 ≥ 0, s2 ≥ 0

7
Системы линейных
алгебраических уравнений
В результате преобразования система ограничений становится СЛАУ:

a11 ⋅ x1 + a12 ⋅ x 2 +  + a1n ⋅ x n = b1


a ⋅ x + a ⋅ x +  + a ⋅ x = b m – число уравнений
 21 1 22 2 2n n 2
n – число переменных

 (включая дополнительные)
a m1 ⋅ x1 + a m 2 ⋅ x 2 +  + a mn ⋅ x n = bm

Постоянные коэффициенты: aij , i = 1 m, j = 1 n bi , i = 1 m


Неизвестные: x j , j = 1 n

Запись через оператор суммирования или в матричном виде:


N
∑ aij ⋅ x j = bi , i = 1 m A⋅ X = B
j =1

A – матрица коэффициентов, X – вектор переменных решения, B – вектор


свободных членов (правые части)

8
Число решений СЛАУ
a11 ⋅ x1 + a12 ⋅ x 2 +  + a1n ⋅ x n = b1
a ⋅ x + a ⋅ x +  + a ⋅ x = b m – число уравнений
 21 1 22 2 2n n 2
 n – число переменных

a m1 ⋅ x1 + a m 2 ⋅ x 2 +  + a mn ⋅ x n = bm

При решении СЛАУ возможны 3 случая:


1. Система имеет единственное решение
2. Система не имеет решений (является несовместной)
3. Система имеет бесконечное множество решений (является
неопределенной)
СЛАУ имеет единственное решение при условии, что m = n
Все уравнения СЛАУ при этом должны быть линейно независимыми

Примеры линейно зависимых уравнений:


 x1 + 2 x 2 + 3 x3 = 4
 x1 + x 2 = 1 
  3 x1 + 2 x 2 + x3 = 0
3 x1 + 3 x 2 = 3 4 x + 4 x + 4 x = 4
 1 2 3
9
Базисные переменные
o Любые m переменных системы линейных уравнений с n переменными
называются базисными (основными), если определитель матрицы
коэффициентов при них отличен от нуля
o Остальные n-m переменных называются свободными (неосновными)
o Пример: найти возможные группы базисных переменных в системе:

 x1 − x2 − 2 x3 + x4 =0

2 x1 + x2 + 2 x3 − x4 = 2

10
Решение примера
o Найти возможные группы базисных переменных в системе:
 x1 − x2 − 2 x3 + x4 =0

2 x1 + x2 + 2 x3 − x4 = 2
o Возможные группы:
1 −1 −1 −2
{x1 , x2 } → =1 + 2 =3 {x2 , x3 } → =−2 + 2 =0
2 1 1 2
1 −2 −1 1
{x1 , x3 } → = 2+4 =6 {x2 , x4 } → = 1−1 = 0
2 2 1 −1
1
1 −2 1
{x1 , x4 } → =−1 − 2 =−3 {x3 , x4 } → = 2−2 = 0
2 −1 2 −1

базисные не базисные

11
Число базисных решений
Базисное решение определяется произвольным выбором m
переменных из общего количества n, поэтому общее число базисных
решений – число сочетаний из n по m:
n!
C nm =
m!⋅(n − m )!
Число базисных решений может сократиться из-за линейной
зависимости некоторых уравнений в преобразованной системе

a1,1 ⋅ x1 + a1, 2 ⋅ x 2 +  + a1,m ⋅ x m = b1 − a1,m +1 ⋅ x m +1 −  − a1,n ⋅ x n


a ⋅ x + a ⋅ x +  + a ⋅ x = b − a
 2,1 1 2, 2 2 2,m m 2 2 , m +1 ⋅ x m +1 −  − a 2 , n ⋅ x n


a m ,1 ⋅ x1 + a m , 2 ⋅ x 2 +  + a m ,m ⋅ x m = bm − a m ,m +1 ⋅ x m +1 −  − a m ,n ⋅ x n
(система преобразована таким образом, чтобы все базисные переменные были
в правой части, а все свободные – в левой; пока эта система не разрешена в
явном виде относительно базисных переменных)

Aбаз ⋅ X баз =
B баз Должно выполняться: (
r Aбаз = m) или: Aбаз ≠ 0
12
Решения неопределенной СЛАУ
Если m < n, то СЛАУ имеет бесконечное множество решений
Чтобы найти эти решения, необходимо выбрать любые m переменных
из n и выразить их через остальные n-m переменных:
a11 ⋅ x1 + a12 ⋅ x 2 +  + a1n ⋅ x n = b1
a ⋅ x + a ⋅ x +  + a ⋅ x = b
 21 1 22 2 2n n 2


a m1 ⋅ x1 + a m 2 ⋅ x 2 +  + a mn ⋅ x n = bm

 x1 = β 1 − α 1,1 x m +1 − α 1, 2 x m + 2 −  − α 1,n − m x n
x = β − α x − α x −  − α
 2 2 2 ,1 m +1 2, 2 m + 2 2,n − m x n


 x m = β m − α m ,1 x m +1 − α m , 2 x m + 2 −  − α m ,n − m x n

Если существует хотя бы один набор базисных переменных, то исходная


система является неопределенной, причем каждому произвольному набору
свободных переменных соответствует одно решение системы
Допустимым называется решение X=(x1, x2, …, xn) системы, в котором все
компоненты неотрицательны
13
Решение неопределенной СЛАУ: пример
o Решить систему уравнений:
 x1 − x2 − 2 x3 + x4 =0

2 x1 + x2 + 2 x3 − x4 = 2

14
Решение неопределенной СЛАУ: пример
o Решить систему уравнений:  x1 − x2 − 2 x3 + x4 =0

2 x1 + x2 + 2 x3 − x4 = 2
o Наборы базисных переменных:
 x2 = 2 / 3 − 2 x3 + x4
 x2 =x1 − 2 x3 + x4 
{x1, x2 }:  → 2
2
 1 x + ( x1 − 2 x3 + x4 ) + 2 x3 − x4 2
=  x1 = 3
 1 1 1
 x =− x + x4
x
 1 = x 2 + 2 x3 − x4  3
3 2
2
2
{x1, x3 }:  →
2 x2 + 4 x3 − 2 x4 + x2 + 2 x3 − x4 = 2 
x1 =
2
 3
 2
x
 1 3 =
 x4 =− x1 + x2 + 2 x3
{x1, x4 }:  →
2 x1 + x2 + 2 x3 + x1 − x2 − 2 x3 = 2  2
x4 =− + x2 + 2 x3
 3 15
Базисные решения СЛАУ
o Базисным решением системы m линейных уравнений с n
переменными называется решение, в котором все n-m
неосновных решений системы равны нулю
 x1 = β 1 − α 1,1 x m +1 − α 1, 2 x m + 2 −  − α 1,n − m x n
x = β − α x − α x −  − α
 2 2 2 ,1 m +1 2, 2 m + 2 2,n − m x n


 x m = β m − α m ,1 x m +1 − α m , 2 x m + 2 −  − α m ,n − m x n

{x1 ,, xm } - базисные (основные) переменные


∀x j ∈ { xm +1 , , xn } =0 - небазисные (свободные) переменные

o Если в базисном решении хотя бы одна из базисных


переменных равна нулю, то такое базисное решение
называется вырожденным

16
Базисные решения
неопределенной СЛАУ: пример
 x1 − x2 − 2 x3 + x4 =0
o Найти базисные решения системы: 
2 x1 + x2 + 2 x3 − x4 = 2
o Наборы базисных переменных:

 x2 = 2 / 3 − 2 x3 + x4
 2 2  - допустимое базисное
{x1, x2 }:  2 →  , , 0, 0  решение
x =
 1 3  3 3 

 1 1 1
 3 3 2 2 2 x4  2 1 
x =− x +
- допустимое базисное
{x1, x3 }:  →  , 0, , 0  решение
x = 2 3 3 
 1 3
 2
x
 1 3= - недопустимое базисное
2 2
{x1, x4 }:  →  , 0, 0, −  решение
 x =− 2 + x + 2 x 3 3
 4 3
2 3
17
Выпуклые множества точек
o Множество точек называется выпуклым, если оно вместе с
любыми двумя своими точками содержит весь отрезок,
соединяющий эти точки

выпуклый многоугольник невыпуклый многоугольник


convex non-convex
18
Граничные и угловые точки
o Точка множества называется внутренней, если в некоторой ее окрестности
содержатся только точки данного множества
o Точка множества называется граничной, если в любой ее окрестности
содержатся как точки, принадлежащие множеству, так и точки, не
принадлежащие ему
o Точка множества называется угловой (крайней), если она не является
внутренней ни для какого отрезка, целиком принадлежащего множеству
o Для выпуклого множества угловые точки всегда совпадают с вершинами
многоугольника (многогранника), для невыпуклого – не обязательно

19
Общая характеристика симплекс-метода
• Позволяет решать любые
6 c4 x1( ) задачи ЛП, представленные в
( )
с1 x1
канонической форме
( )
c1 x1 →
−3
⋅x + 6 • Все переменные в задаче
4 ( )
CF x1 , F 2 1
−1
должны быть неотрицательны
( )
c2 x1 →
2 1
⋅x + 3
• Метод универсален, обладает
E D ( )
c3 x1 c3(x1) → 2 высокой эффективностью, легко
2 C c4(x1) → x1 + 1 алгоритмизируется
F ) F
• Разработчик – Дж. Данциг
c2 x1( )
A0 1 2 3 4 5 6
B
x1

Теория симплекс-метода основана на наборе теорем, доказывающих что:


1. ОДР – выпуклый многогранник, вершины которого (угловые точки) – образованы
пересечениями ограничений, а внутренние точки могут быть выражены через
линейную комбинацию угловых точек
2. Если оптимальное решение существует, то оно всегда достигается в одной из угловых
точек, либо существует множество решений, которые лежат на одной из граней
многогранника ОДР («линий» ограничений)
3. Каждой угловой точке ОДР соответствует допустимое базисное решение (в котором
выполняется условие неотрицательности переменных)

Оптимальное решение находится упорядоченным перебором угловых точек


20
Пример решения симплекс-методом
o Требуется максимизировать целевую функцию:

F 5 x1 + 4 x2
=
o С учетом ограничений:
6 x1 + 4 x2 ≤ 24
x + 2x ≤ 6
 1 2
 x1 ≥ 0, x2 ≥ 0
 x2 ≤ 2
− x1 + x2 ≤ 1
o Приведение к канонической форме:
6 x1 + 4 x2 + s1 =24 x1 ≥ 0, x2 ≥ 0,
x + 2x + s = 6 s1 ≥ 0,s 2 ≥ 0,s3 ≥ 0,s 4 ≥ 0
 1 2 2

 x2 + s3 = 2 (во всех последующих системах предполагается
неотрицательность переменных и это условие
− x1 + x2 + s4 =1 отдельно указываться не будет)
21
Вычислительная схема – шаг 1
Исходная система: Базисные переменные – s1..s4: Базисное решение:
6 x1 + 4 x2 + s1 =24  s1 =24 − 6 x1 − 4 x2  x1 = 0
x + 2x + s = 6  s =6 − x − 2 x x = 0
 1 2 2  2 1 2
 2
 
 x2 + s3 = 2  s3= 2 − x2  s1 = 24
− x1 + x2 + s4 =1  s4 =1 + x1 − x2 
 s2 = 6
 s3 = 2

 s4 = 1

X = {0;0;24;6;2;1}

F = 5 x1 + 4 x2 = 5 ⋅ 0 + 4 ⋅ 0 = 0

Решение можно улучшить,


если x1 или x2 примут
положительное значение.
Необходимо перевести их
в базис

22
Вычислительная схема – выбор новой
базисной переменной
o Переменная x1 при переводе в базис даст наибольшее приращение целевой
функции: F=5x1+4x2
o На графической схеме шаг из А по переменной x1 означает переход в B или в
(6;0). Только решение в точке B (ограничение c1) является допустимым:

o Приращение переменной x1 зависит от того, из какого уравнения выражается


эта базисная переменная, поэтому необходимо проверять выполнение условия
неотрицательности для первоначальных базисных переменных:

 s1 =24 − 6 x1 − 4 x2 ≥ 0 6 x1 ≤ 24  x1 ≤ 4 < наиболее


 s =6 − x − 2 x ≥ 0 x ≤ 6 x ≤ 6 строгое
 2 1 2 →  1 →  1 ограничение
  
 s3 = 2 − 0 ⋅ x1 − x2 ≥ 0  x1 ≤ ( 2 − x2 ) / 0 = +∞  x1 ≤ +∞
 s4 =1 + x1 − x2 ≥ 0  x1 ≥ −1  x1 ≥ −1
23
Вычислительная схема – шаг 2
Предыдущее решение: Базисные переменные –x1,s2..s4: Базисное решение:
 1 2  1 2
 s1 =24 − 6 x1 − 4 x2 x =−4 s − x2  x 4
=− s − x2
 s =6 − x − 2 x  1 6
1
3
1
6
1
3
 2  

1 2
 s =6 −  4 − 1 s − 2 x  − 2 x  s =+ 1 4
2 s − x2
 s3= 2 − x2  2


 6
1
3 
2 2

2
6
1
3
 s4 =1 + x1 − x2  s3 = 2 − 0 ⋅ x1 − x2  s3= 2 − x2
 
1 2   s =− 1 5
 s =+  5 s − x2
 4 1  4 − s1 − x2  − x2  4 6
1
3
 6 3 

X = {4;0;0;2;2;5}

 1 2 
F =5 ⋅  4 − s1 − x2  + 4 x2 =
 6 3 
5 2
=20 − s1 + x2
6 3
Решение можно улучшить,
если x2 примет положительное
значение. Необходимо
перевести эту переменную в
базис
24
Вычислительная схема – выбор новой
базисной переменной
o На графической схеме шаг из B по переменной x2 означает переход в точку C,
Только это решение является допустимым:

o Выбор разрешающего уравнения по условию неотрицательности для базисных


переменных:
 1 2  2 Разрешающее уравнение – 2,
4 − x ≥ 0
 x1 =−
4
6
s1 − x2
3
 3
2
 x2 ≤ 6 x2 <> s2
  
 s =+ 1 4 2 − 4 x ≥ 0  x2 ≤
3 1 4
2 s − x2 2 s2 =+
2 s1 − x2 →

2
6
1
3 →  3 →  2 6 3
 s3= 2 − x2 2 − x2 ≥ 0  x2 ≤ 2
   3 1 3
 s =− 1 5 5 − 5 x ≥ 0  x2 ≤ 3 → x2 = + s1 − s2
5 s − x2  3 2 2 8 4
 4 6
1
3
25
Вычислительная схема – шаг 3
Предыдущее решение: Базисные переменные –x1,x2,s3,s4: Базисное решение:
 1 2 3 1 3   1 1
1 2 x 4
=− s −  + s − s2  x
 1 3
=− s + s2
  1
6
1
3 2 8
1
4  4
1
2
 1 x 4
=− s 1 − x2  
6 3

1 4

x =
3 1
+ s −
3
s2  x =3 + 1 s − 3 s
 s =+ 2 s1 − x2  2
2 8
1
4  2 2 8 1 4 2
2
 →6 3 →  → 
 s3= 2 − x2  s3 =2 −  3 + 1 s1 − 3 s2   s =1 − 1 s + 3 s
  2 8 4   3 2 8 1 4 2
 s =− 1 5 
 4 5 s1 − x2
 s =− 1 5 3 1 3   5 3 5
6 3 4 5 s1 −  + s1 − s2   s4 = − s1 + s2
 6 3 2 8 4 
 2 8 4
 3 1 5
X = 3; ;0;0; ; 
 2 2 2
5 2 3 1 3 
F = 20 − s1 + ⋅  + s1 − s2  =
6 3 2 8 4 
3 1
=21 − s1 − s2
4 2
Все коэффициенты в целевой
функции отрицательны,
решение нельзя улучшить =>
найден максимум
4 6!
C6
Решение найдено за 3 итерации из 15 возможных:= = 15 26
4! ⋅ 2!
Статусы ограничений в GLPK

27
Алгоритм симплекс-метода
o Описание алгоритма симплекс-метода и
пример содержатся в лекции «Решение задач
линейного программирования симплекс-
методом»
o Пример реализации табличного алгоритма в
Excel содержится в файле «Основной
пример: решение задачи о производстве
краски симплекс-методом»

28
Рекомендуемая литература

1. Вентцель, Е.С. Исследование операций: задачи, принципы, методология. —


М.: Наука, 1988. — 208 с.
2. Исследование операций в экономике / под ред. Н.Ш. Кремера.— М. : Банки
и биржи, Юнити, 1997. — 407 с.
3. Таха, Х. Введение в исследование операций. — 7-е изд. : пер. с англ.
— М. : Вильямс, 2005. — 912 с.
4. Мур, Дж. Экономическое моделирование в Microsoft Excel / Дж. Мур, Л.
Уэдерфорд. — М. : Вильямс, 2004. – 1024 с.
5. Шапиро, Дж. Моделирование цепи поставок / пер. с англ. под ред. В.С.
Лукинского – СПб.: Питер, 2006 – 720 с.
29