Автор работы: Пользователь скрыл имя, 27 Ноября 2011 в 08:57, контрольная работа
Решение любой задачи линейного программирования можно найти либо симплексным методом, либо методом искусственного базиса. Прежде чем применять один из указанных методов, следует записать исходную задачу в форме основной задачи линейного программирования, если она не имеет такой формы записи.
Решение любой задачи линейного программирования можно найти либо симплексным методом, либо методом искусственного базиса. Прежде чем применять один из указанных методов, следует записать исходную задачу в форме основной задачи линейного программирования, если она не имеет такой формы записи.
Симплексный метод решения задачи линейного программирования основан на переходе от одного опорного плана к другому, при котором значение целевой функции возрастает (при условии, что данная задача имеет оптимальный план, и каждый ее опорный план является невырожденным) Указанный переход возможен, если известен какой-нибудь исходный опорный план. Рассмотрим задачу, для которой этот план можно непосредственно записать.
Пусть требуется найти максимальное значение функции
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 от 1 до n;
одно из чисел 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 и Р, новой симплекс-таблицы вычисляют по правилу треугольника. Для вычисления какого-нибудь из этих элементов находят три числа: