Симплекс-метод

Симплекс-метод, известный также в нашей литературе под названием метода последовательного улучшения плана, впервые разработал Г.Данциг в 1947 г. Этот метод позволяет переходить от одного допустимого базисного решения к другому, причем так, что значения целевой функции непрерывно возрастают. В результате оптимальное решение находят за конечное число шагов.

Алгоритмы симплекса-метода позволяют также установить, является ли задача ЛП разрешимой.

Запишем ограничения задачи ЛП в таком виде:

A 1 x 1 + A 2 x 2 + … + A nxn + A n +1 xn +1 +…+ A n + m xn + m = A 0.

Пусть A 1,…, A m –множество линейно независимых векторов.

Тогда уравнение

A 1 x 1*+ A 2 x 2* + … + A nxn * + A n +1 xn +1* +…+ A n + m xn + m * = A 0, (2...2.1)

определяет базисное решение x 1 *, x 2 *,…,xm *,

Предположим, что это решение допустимо, то есть x 1*³0, x 2*³0 ,…, xm *³0. Базис { A 1,…, A m }образует m –мерное пространство, а потому каждый из векторов A m +1,…, A m + n единственным образом выражается через этот базис. Если A r не входит в базис, то

A 1 x 1 r + A 2 x 2 r + … + A mxmr = A r, (2...2.2)

где xir – соответствующие коэффициенты (i = 1, 2,..., m).

Предположим, что хотя бы одна из величин xir больше нуля.

Решение уравнения

A 1 x 1 + A 2 x 2+ … + A mxm + A rxr = A 0 (2...2.3)

обозначим как

Тогда,очевидно:

. (2.2.4)

Умножив уравнение (2.2.2) на xr и вычтя полученное уравнение из уравнения (2.2.1), получим

A 1(x 1*xrx 1 r ) + A 2(x 2*xrx 2r) +…+ A m (xm *xrxmr)= A 0xr A r. (2.2.5)

Сравнив уравнения (2.2.5) и (2.2.4), находим связь нового решения 1,…, m, xr со старым базисным решением x* 1,…, x*m:

1= x 1*xrx 1 r , 2= x 2*xrx 2 r ,…, m = xm *xrxmr , xr. (2.2.6)

Решение (2.2.6), во-первых, не будет базисным, так как содержит

m + 1 переменную, а во-вторых, будет допустимым не для всех значений xr.

Чтобы новое решение оставалось допустимым, нужно выбрать значение xr таким, чтобы ни одна из величин i = xi*xrxir (i= 1, 2,..., m) не стала меньше нуля. Следовательно, максимальное значение переменной xr определяется соотношением

x r max = , (2.2.7)

где xir > 0.

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

Для этого выбираем значения в соответствии с (2.2.7). Тогда новое базисное решение имеет вид

x 1*xr max x 1 r ;

x 2*xr max x 2 r ;

xj (опущен)

xr max,

а новый базис – (A 1, A 2, …, A j -1, A j +1, …, A m, A r).

Такой переход от одного базиса к другому позволяет находить решения почти всех задач ЛП. Определив все крайние точки, можно вычислить значения целевой функции и найти оптимальное решение. Однако для больших значений m и n это практически невозможно. Поэтому для перехода от текущего решения к новому допустимому базисному решению, которому отвечает большее значение целевой функции, используют соответствующий критерий (симплекс-разность).

Новому ДБР { x 1*xrx 1 r , x 2*xrx 2 r , …, xm *xrxmr, xr }

соответствует следующее значение целевой функции

z 1 = с 1(x 1*xrx 1 r ) + с 2(x 2*xrx 2r) +…+ сrxr =

= (с 1 x 1*+ с 2 x 2*+…+ сmxm *)+ xr (сrс 1 x 1 r –…– сmxmr)=

= z 0+ xr (сrс 1 x 1 r –…– сmxmr), (2.2.8)

где z0 – значение целевой функции для начального ДБР;

сrс 1 x 1 r с 2 x 2 r сmxmr – симплекс-разность для переменной хr.

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

Таким образом, алгоритм симплекса-метода состоит из следующих этапов:

1) находят начальный базис и связанное с ним допустимое базисное решение;

2) вычисляют симплекс-разность для каждой переменной, не входящей в базисное решение;

3) вводят в базис наиболее “выгодную” переменную с максимальной положительной симплексом-разностью; ее значение xrmax определяют из соотношения

для всех xir > 0,

4) выводят из базисного решения переменную xj, соответствующую

а из базиса – вектор A j;

5) переходят к этапу 2 новой итерации.

Этапы 2) - 4) повторяют до тех пор, пока симплекс-разности для всех переменных, не входящих в базис, не станут отрицательными.

Это и есть признак оптимальности текущего базисного решения.

Пример 2.2. Решить симплексом-методом такую задачу:

максимизировать (2 x 1+5 x 2)

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

x 1£400, x 2£300, x 1+ x 2£500.

Расширенная форма задачи имеет вид

Ограничения задачи запишем в виде табл. 2.1.

Первая итерация. 1. Выбрав в качестве начального базиса векторы { A 3, A 4, A 5}, находим первое допустимое базисное решение:

A 3 x 3*+ A 4 x 4*+ A 5 x 5*= A 0,

откуда x 3*=400, x 4*=300, x 5*=500,

2. Записываем каждый из небазисных векторов A 1, A 2 в виде линейной комбинации базисных { A 3, A 4, A 5}

A 3 x 31+ A 4 x 41+ A 5 x 51= A 1;

A 3 x 32+ A 4 x 42+ A 5 x 52= A 2.

Таблица 2.1

А1 A2 A3 А4 А5 а0
           
           
           

Решая эти уравнения, получим

х 31=1; x 41=0; х51=1; x 32=0; х42=1; х52=1.

3. Находим симплекс-разности для небазисных переменных x1 и x2:

с 1- с 3 х 31- с 4 х 41- с 5 х 51= с 1=2;

с 2- с 3 х 32- с 4 х 42- с 5 х 52= с 2=5.

Поскольку с 2> с 1, вводим в базис вектор x2.

4. Определяем, какая переменная выводится из базиса. Для этого находим

х 3= х 3* - х 2 х 32= х 3*;

х 4= х 4* - х 2 х 42=300-1 х 2;

х 5= х 5* - х 2 х 52=500-1 х 2;

Итак переменная х 2 вводится в базис со значением x2*= 30 0, переменная x 4 выводится из базисного решения, а вектор A 4— из базиса.

Вторая итерация. 1. Раскладываем каждый из небазисных векторов через базисные { A 2, A 3, A 5}. Базисное решение

x 2*=300, х 3*=400, х 5*=500-300*1=200

Представим каждый из векторов A 1, A 4,не вошедших в базис, в виде линейной комбинации A 2, A 3, A 5.Так как вектор A 4 был выведен из базиса, рассмотрим только вектор A 1.

Уравнение будет иметь вид

A2 х 21+A3 х 31+A5 х 51=A1,

откуда х 21=0; х 31=1; х 51=1.

2. Находим симплекс-разность для переменной x 1:

с 1- с 2 х 21- с 3 х 31- с 5 х 51= с 1-0-0-0= с 1=2>0.

Итак, переменную х 1 можно ввести в базис.

3. Определяем, какую переменную (вектор) следует вывести из базиса. Для этого вычисляем

х 2= х 2* - х 1 х 21=300-0 х 1;

х 3= х 3* - х 1 х 31=400-1 х 1;

х 5= х 5* - х 1 х 51=200-1 х 1;

Следовательно, из базиса выводится вектор х 5 , из базисного решения – A 5.

4. Вычисляем новый ДБР.

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

x 1*=200; x 2*=300.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: