
Лекции 4
.docАлгоритм одноэтапного симплекс- метода
Пусть дана целевая
функция
и дана система ограничений в виде системы
уравнений в каноническом виде:
…
– число переменных
(из них m-
базисных),
– число ограничений.
1. Выбираем начальное
допустимое базисное решение, получены
при нулевых значениях не базисных
переменных:
При этом
Заполняем первоначальную таблицу симплекс метода (без последней строки и последнего столбца).
В первом столбце
указываются коэффициенты в выражении
для целевой функции, но только для
базисной переменной (как правило в
начальный момент базисными являются
дополнительные переменные, не входящими
в целевую функцию, поэтому коэффициенты
оказываются равными нулю).
В следующем столбце
указываются базисные переменные, затем
следуют коэффициенты в ограничениях
(для базисных переменных, входящих
только в одно уравнение коэффициенты
единица и нули) и свободные члены
2. Вычисляем вектор
относительных оценок
̃:
̃j
=
где
номер переменной (и соответствующего
столбца), для которой ищется относительная
оценка
j̃
;
-
значение коэффициента в выражении для
целевой функции перед переменной
;
-
значения коэффициентов в целевой
функции, но только для базисной переменной
(т.е. левый столбец);
-
-ый
столбец коэффициентов
т.е. тот столбец, для которого ищется
j̃
;
т.е.
̃j
=
номер
столбца,
номер
строки.
Заполняем
-
строку (относительные оценки
j̃
), в правом нижнем углу указываем значения
целевой функции
Следует отметить,
что для базисных переменных
̃j
т.к. при
<
̃j
=
3. Если все оценки
̃j
то текущее решение обеспечивает
максимальное значение целевой функции,
и задача максимума решена (т.е. в задачах
необходимо
сделать все значения
строки
неположительными).
Если все оценки
̃j
то текущее
решение обеспечивает минимальное
значение целевой функции, и задача
минимума решена (т.е. в задачах
необходимо сделать все значения
строки
неотрицательными).
В противном случае переходим к этапу 4.
4. Определяем
переменную
для которой относительная оценка
̃j
-максимальная
(если решается задача максимума
),
-минимальная (если
решается задача минимума
).
Эту переменную
надо сделать базисной, чтобы она входила
только в одно уравнение с коэффициентом
+1.
5. Определяем
базисную переменную
которую из базисной надо перевести в
свободные.
Для этого определяем
столбец
,
где
номер
строки,
номер
столбца переменной
,
которую будем переводить в базисную
(таким образом, свободные члены делим
на коэффициенты перед переменной
).
Выбираем минимальное
положительное значение
отрицательные значения
в выборе не участвуют, их как бы считают
бесконечно большими.
По строке
(например
)
определяет переменную
,
которую будет переводить из базисной
в свободные переменные.
6. Преобразуем
уравнение так, чтобы новая базисная
переменная
входила только в одно уравнение с
коэффициентом +1
(при этом
переменная
может входить в любое уравнение с
произвольными коэффициентами). Это
делается с помощью алгебраических
преобразований (алгоритм таких
преобразований описан отдельно).
7. Составляем новую
симплекс-таблицу и переходим к пункту
2 (определяет
строку).
Вычисления повторяются до тех пор, пока
все значения
строки
станут неположительными (в задачах
максимума) или неотрицательными (в
задачах минимума).
i=1..m
j=1..n
базис |
X1 |
X2 |
… |
Xm |
Xm+1 |
… |
Xk |
… |
Xn |
bi |
di |
|
C1баз |
X1 |
1 |
0 |
0 |
0 |
a1,m+1 |
|
a1,k |
|
a1,n |
b1 |
d2 |
C2баз |
X2 |
0 |
1 |
0 |
0 |
a2, m+1 |
|
a2,k |
|
a2,n |
b2 |
d1 |
Min |
… |
|
|
|
|
|
|
|
|
|
|
|
Ceбаз |
Xe |
0 |
0 |
|
0 |
ae, m+1 |
|
ae,k |
|
ae,n |
be |
de |
|
… |
|
|
|
|
|
|
|
|
|
|
|
Cmбаз |
Xm |
0 |
0 |
0 |
1 |
am, m+1 |
|
am,k |
|
am,n |
bn |
dn |
C- строка |
0 |
0 |
0 |
0 |
Čm+1 |
|
Čk |
|
Čn |
W= |
базисные небазисные
Max
(Min)
Таблица симплекс метода
Пример
Вернемся к
рассмотренному примеру и решим его с
помощью симплекс-метода. При этом будем
считать, что ограничение по контракту
отсутствует. Это позволит нам использовать
одноэтапный симплекс-метод.
Решение
представлено в контрольном примере №1.
Результат получен непосредственно из
программы расчетов, но для удобства
решение снабжено необходимыми
комментариями.
Вначале приводится целевая функция и ограничения, потом вводится дополнительные (избыточные) переменные. Затем составляется симплекс-таблица и проводится решение.
Следует отметить, что таблица программной реализации несколько отличается от таблицы, приведенной при описании алгоритма симплекс-метода:
-
в нее добавлена строка с коэффициентами целевой функции (которая, кстати, не меняется по шагам и её присутствие в таблице не обязательно);
-
в ней столбцы с переменными
расположены по возрастанию порядкового номера и их расположение не меняется от шага к шагу (т.е. базовые переменные не вынесены в начало таблицы).
Начальная
симплекс-таблица соответствует
,
т.е. началу координат на рис.1. По
результатам с-строки и столбца
приходим к выводу, что
должна стать базисной, а
свободной.
Далее за три шага мы попадем соответственно в следующие точки рисунка 1:
- точка В ();
- точка С
;
- точка D
.
Это и есть оптимальное
решение
При этом
(земля и время расходуются полностью),
(остаток денег). Так как все с-строки
содержит не положительные числа, задача
максимума решена.
В заключении приведем также методику перевода базисной переменной в свободную, а свободную переменную в базисную.
Контрольный пример №1 |
|
|
|
|
|
|||||
|
|
|
|
Одноэтапный симплекс метод |
|
|||||
|
|
|
|
|
|
|
|
|
|
|
Целевая функция: W=5000*x1+2500*x2 |
|
max |
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
Ограничения: |
4*x1+1.5*x2≤24 |
|
|
|
|
|
|
|||
|
|
1200*x1+150*x2≤6000 |
|
|
|
|
|
|||
|
|
20*x1+20*x2≤200 |
|
|
|
|
|
|||
|
|
x1,x2≥0 |
|
|
|
|
|
|
|
|
Добавляем переменные x3,x4,x5, превращая неравенства в уравнения. |
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
X1 |
X2 |
X3 |
X4 |
X5 |
|
|
|
|
|
|
4 |
1,5 |
1 |
0 |
0 |
24 |
|
|
|
|
|
1200 |
150 |
0 |
1 |
0 |
6000 |
|
|
|
|
|
20 |
20 |
0 |
0 |
1 |
200 |
|
|
|
|
W |
5000 |
2500 |
0 |
0 |
0 |
max |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Исходная таблица (столбец с максимальным значением C и строка |
||||||||||
с минимальным значением B/A выделены серым цветом) |
||||||||||
|
W |
5000 |
2500 |
0 |
0 |
0 |
max |
|
|
|
Cb |
Xb |
X1 |
X2 |
X3 |
X4 |
X5 |
B |
B/A |
|
|
0 |
х3 |
4 |
1,5 |
1 |
0 |
0 |
24 |
6 |
|
|
0 |
x4 |
1200 |
150 |
0 |
1 |
0 |
6000 |
5 |
|
|
0 |
x5 |
20 |
20 |
0 |
0 |
1 |
200 |
10 |
|
|
C-строка |
|
5000 |
2500 |
0 |
0 |
0 |
W= |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
Результат 1 шага |
|
|
|
|
|
|
|
|||
|
W |
5000 |
2500 |
0 |
0 |
0 |
max |
|
|
|
Cb |
Xb |
X1 |
X2 |
X3 |
X4 |
X5 |
B |
B/A |
|
|
0 |
x3 |
0 |
1 |
1 |
-0,003 |
0 |
4 |
4 |
|
|
5000 |
x1 |
1 |
0,125 |
0 |
0,0008 |
0 |
5 |
40 |
|
|
0 |
x5 |
0 |
17,5 |
0 |
-0,017 |
1 |
100 |
5,7143 |
|
|
C-строка |
|
0 |
1875 |
0 |
-4,167 |
0 |
W= |
25000 |
|
|
|
|
|
|
|
|
|
|
|
|
|
Результат 2 шага |
|
|
|
|
|
|
|
|||
|
W |
5000 |
2500 |
0 |
0 |
0 |
max |
|
|
|
Cb |
Xb |
X1 |
X2 |
X3 |
X4 |
X5 |
B |
B/A |
|
|
2500 |
x2 |
0 |
1 |
1 |
-0,003 |
0 |
4 |
-1200 |
|
|
5000 |
x1 |
1 |
0 |
-0,125 |
0,0013 |
0 |
4,5 |
3600 |
|
|
0 |
x5 |
0 |
0 |
-17,5 |
0,0417 |
1 |
30 |
720 |
|
|
C-строка |
|
0 |
0 |
-1875 |
2,0833 |
0 |
W= |
32500 |
|
|
|
|
|
|
|
|
|
|
|
|
|
Результат 3 шага |
|
|
|
|
|
|
|
|||
|
W |
5000 |
2500 |
0 |
0 |
0 |
max |
|
|
|
Cb |
Xb |
X1 |
X2 |
X3 |
X4 |
X5 |
B |
|
|
|
2500 |
x2 |
0 |
1 |
-0,4 |
0 |
0,08 |
6,4 |
|
|
|
5000 |
x1 |
1 |
0 |
0,4 |
0 |
-0,03 |
3,6 |
|
|
|
0 |
x4 |
0 |
0 |
-420 |
1 |
24 |
720 |
|
|
|
C-строка |
|
0 |
0 |
-1000 |
0 |
-50 |
W= |
34000 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Вся C-строка содержит неположительные числа. |
|
|
|||||||
|
Максимум W найден. Задача решена |
|
|
|||||||
|
x1=3.6 x2=6.4 x4=720 x3=x5=0 W=34000 |
|