Симплексный метод
Контрольная работа, 27 Ноября 2011, автор: пользователь скрыл имя
Описание работы
Решение любой задачи линейного программирования можно найти либо симплексным методом, либо методом искусственного базиса. Прежде чем применять один из указанных методов, следует записать исходную задачу в форме основной задачи линейного программирования, если она не имеет такой формы записи.
Файлы: 1 файл
Симплекс-метод.doc
— 237.50 Кб (Скачать файл)п.2.2. Симплексный метод
Решение любой задачи линейного программирования можно найти либо симплексным методом, либо методом искусственного базиса. Прежде чем применять один из указанных методов, следует записать исходную задачу в форме основной задачи линейного программирования, если она не имеет такой формы записи.
Симплексный метод решения задачи линейного программирования основан на переходе от одного опорного плана к другому, при котором значение целевой функции возрастает (при условии, что данная задача имеет оптимальный план, и каждый ее опорный план является невырожденным) Указанный переход возможен, если известен какой-нибудь исходный опорный план. Рассмотрим задачу, для которой этот план можно непосредственно записать.
Пусть требуется найти максимальное значение функции
F=c1x1+c2x2+…+cnxn
при условиях
Здесь — заданные постоянные числа (m<n и bi>0) Векторная форма данной задачи имеет следующий вид: найти максимум функции
(2.35)
при условиях
x1P1+x2P2+…+xmPm+…+xnPn=
хj≥0 (2.37)
где
Так как
b1P1+b2P2+…+bmPm=P0,
то по определению опорного плана X=(b1;b2;…;bm;0;…;0) является опорным планом данной задачи (последние n—m компонент вектора Х равны нулю). Этот план определяется системой единичных векторов Р1, Р2,…, Рm, которые образуют базис m- мерного пространства. Поэтому каждый из векторов Р1, Р2,..., Рn, а также вектор Р0 могут быть представлены в виде линейной комбинации векторов данного базиса. Пусть
Положим ; . Так как векторы P1, P2, …, Pm – единичные, то xij=aij и , а .
Теорема 2.5. (признак оптимальности опорного плана). Опорный план задачи (2.35)-( 2.37) является оптимальным, если для любого j .
Теорема 2.6. Если для некоторого j=k и среди чисел aik нет положительных (aik ≤ 0), то целевая функция (2.35) задачи (2.35)-( 2.37) не ограничена на множестве ее планов.
Теорема 2.7. Если опорный план Х задачи (2.35) - (2.37) не вырожден и , но среди чисел aik есть положительные (не все aik ≤ 0), то существует опорный план Х’ такой, что F(Х’) > F(Х).
Сформулированные теоремы позволяют проверить, является ли найденный опорный план оптимальным, и выявить целесообразность перехода к новому опорному плану.
Исследование опорного плана на оптимальность, а также дальнейший вычислительный процесс удобнее вести, если условия задачи и первоначальные данные, полученные после определения исходного опорного плана, записать так, как показано в табл. 2.2.
В столбце Сб этой таблицы записывают коэффициенты при неизвестных целевой функции, имеющие те же индексы, что и векторы данного базиса.
В столбце Р0 записывают положительные компоненты исходного опорного плана, в нем же в результате вычислений получают положительные компоненты оптимального плана. Столбцы векторов Рj представляют собой коэффициенты разложения этих векторов по векторам данного базиса.
В табл. 2.2 первые m строк определяются исходными данными задачи, а показатели (m+1)-й строки вычисляют. В этой строке в столбце вектора Р0 записывают значение целевой функции, которое она принимает при данном опорном плане, а в столбце вектора Рj – значение .
Значение zi находится как скалярное произведение вектора Рj, на вектор С6=(с1;c2; ...; сm):
Значение F0 равно скалярному произведению вектора Р0 на вектор Сб:
После заполнения табл. 2.2 исходный опорный план проверяют на оптимальность. Для этого просматривают элементы (m+1)-й строки таблицы. В результате может иметь место один из следующих трех случаев:
- для j=m+1, m+2, …, n (при zj=cj). Поэтому в данном случае
числа для всех j от 1 до n;
- для некоторого j и все соответствующие этому индексу величины aij≤0 ;
- для некоторых индексов j, и для каждого такого j по крайней мере
одно из чисел aij положительно.
В первом случае на основании признака оптимальности исходный опорный план является оптимальным. Во втором случае целевая функция не ограничена сверху на множестве планов, а в третьем случае можно перейти от исходного плана к новому опорному плану, при котором значение целевой функции увеличится. Этот переход от одного опорного плана к другому осуществляется исключением из исходного базиса какого-нибудь из векторов и введением в него нового вектора. В качестве вектора, вводимого в базис, можно взять любой из векторов Рj, имеющий индекс j, для которого . Пусть, например, и решено ввести в базис вектор Рk.
Для определения вектора, подлежащего исключению из базиса, находят min(bi/aik) для всех aik>0. Пусть этот минимум достигается при i = r. Тогда из базиса исключают вектор Рr, а число ark называют разрешающим элементом.
Столбец и строку, на пересечении которых находится разрешающий элемент, называют направляющими.
После выделения направляющей строки и направляющего столбца находят новый опорный план и коэффициенты разложения векторов Рj через векторы нового базиса, соответствующего новому опорному плану. Это легко реализовать, если воспользоваться методом Жордана - Гаусса. При этом можно показать, что положительные компоненты нового опорного плана вычисляются по формулам:
(2.38)
Таблица 2.2
| i | Базис | C6 | P0 | c1 | c2 | … | cr | … | cm | cm+1 | … | ck | … | cn |
| P1 | P2 | … | Pr | … | Pm | Pm+1 | … | Pk | … | Pn | ||||
| 1
2 . . . r . . . m |
P1
P2 . . . Pr . . . Pm |
c1
c2 . . . cr . . . cm |
b1
b2 . . . br . . . bm |
1
0 . . . 0 . . . 0 |
0
1 . . . 0 . . . 0 |
…
… . . . … . . . … |
0
0 . . . 1 . . . 0 |
…
… . . . … . . . … |
0
0 . . . 0 . . . 1 |
a1m+1
a2m+1 . . . arm+1 . . . amm+1 |
…
… . . . … . . . … |
a1k
a2k . . . ark . . . amk |
…
… . . . … . . . … |
a1n
a2n . . . arn . . . amn |
| m+1 | F0 | 0 | 0 | … | 0 | … | 0 | ∆m+1 | … | ∆k | … | ∆n |
Таблица 2.3
| i | Базис | C6 | P0 | c1 | c2 | … | cr | … | cm | cm+1 | … | ck | … | cn |
| P1 | P2 | … | Pr | … | Pm | Pm+1 | … | Pk | … | Pn | ||||
| 1
2 . . . r . . . m |
P1
P2 . . . Pr . . . Pm |
c1
c2 . . . cr . . . cm |
b’1
b’2 . . . b’r . . . b’m |
1
0 . . . 0 . . . 0 |
0
1 . . . 0 . . . 0 |
…
… . . . … . . . … |
a’1r
a’2r . . . a’rr . . . a’mr |
…
… . . . … . . . … |
0
0 . . . 0 . . . 1 |
a’1m+1
a’2m+1 . . . a’rm+1 . . . a’mm+1 |
…
… . . . … . . . … |
0
0 . . . 1 . . . 0 |
…
… . . . … . . . … |
a’1n
a’2n . . . a’rn . . . a’mn |
| m+1 | F0 | 0 | 0 | … | z’r-cr | … | 0 | z’m+1-cm+1 | … | 0 | … | z’n-cn |
а коэффициенты разложения векторов Рj, через векторы нового базиса, соответствующего новому опорному плану - по формулам:
(2.39)
После вычисления и согласно формулам (2.38) и (2.39) и значения заносят в табл. 2.3. Элементы (m+1)-й строки этой таблицы могут быть вычислены либо по формулам:
(2.40)
(2.41)
либо на основании их определения.
Наличие двух способов нахождения элементов (m+1)-й строки позволяет осуществлять контроль правильности проводимых вычислений.
Из формулы (2.40) следует, что при переходе от одного опорного плана к другому наиболее целесообразно ввести в базис вектор Рj, имеющий индекс j, при котором максимальным по абсолютной величине является число . Однако с целью упрощения вычислительного процесса в дальнейшем будем вектор, вводимый в базис, определять, исходя из максимальной абсолютной величины отрицательных чисел . Если же таких чисел несколько, то в базис будем вводить вектор, имеющий такой же индекс, как и максимальное из чисел сj, определяемых данными числами .
Итак, переход от одного опорного плана к другому сводится к переходу от одной симплекс-таблицы к другой. Элементы новой симплекс-таблицы можно вычислить как с помощью рекуррентных формул (2.38)-( 2.41), так и по правилам, непосредственно вытекающим из них. Эти правила состоят в следующем.
В столбцах векторов, входящих в базис, на пересечении строк и столбцов одноименных векторов проставляются единицы, а все остальные элементы данных столбцов полагают равными нулю.
Элементы векторов Р0 и Рj, в строке новой симплекс-таблицы, в которой записан вектор, вводимый в базис, получают из элементов этой же строки исходной таблицы делением их на величину разрешающего элемента. В столбце С6 в строке вводимого вектора проставляют величину ck, где k - индекс вводимого вектора.
Остальные элементы столбцов вектора Р0 и Р, новой симплекс-таблицы вычисляют по правилу треугольника. Для вычисления какого-нибудь из этих элементов находят три числа:
- число, стоящее в исходной симплекс-таблице на месте искомого элемента