Инструменты пользователя

Инструменты сайта


examination:mo:question6

№6 Симплекс-метод. Обоснование конечности метода. Возможность «зацикливания».

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

Симплексный метод решения задачи линейного программирования основан на переходе от одного опорного плана к другому, при котором значение целевой функции возрастает (при условии, что данная задача имеет оптимальный план и каждый ее опорный план является невырожденным). Указанный переход возможен, если известен какой-нибудь исходный опорный план. Рассмотрим задачу, для которой этот план можно непосредственно записать.

Пусть требуется найти максимальное значение функции F=c1x1+c2x2+…+cnxn

при условиях

Векторная форма данной задачи имеет следующий вид: найти максимум функции

то по определению опорного плана X=(b1;b2;…;bm;0;…;0) является опорным планом данной задачи (последние n-m компонент вектора Х равны нулю). Этот план определяется системой единичных векторов P1,P2,…,Pm, которые образуют базис m-мерного пространства. Поэтому каждый из векторов P1,P2,…,Pm, а также вектор P0 могут быть представлены в виде линейной комбинации векторов данного базиса. Пусть

Теорема

(признак оптимальности опорного плана). Опорный план задачи (22)-(24) является оптимальным, если Δi≥0 для любого jFm

Теорема

Если Δk<0 для некоторого j=k и среди чисел нет положительных (aik≤0) , то целевая функция (22) задачи (22)-(24) не ограничена на множестве ее планов.

Теорема

Если опорный план Х задачи (22)-(24) невырожден и Δk<0 , но среди чисел aik есть положительные (не все aik≤0), то существует опорный план X' такой, что F(X')>F(X)

Сформулированные теоремы позволяют проверить, является ли найденный опорный план оптимальным, и выявить целесообразность перехода к новому опорному плану.

Исследование опорного плана на оптимальность, а также дальнейший вычислительный процесс удобнее вести, если условия задачи и первоначальные данные, полученные после определения исходного опорного плана, записать так, как показано в таблице 3.

В столбце С6 этой таблицы записывают коэффициенты при неизвестных целевой функции, имеющие те же индексы, что и векторы данного базиса.

В столбце P0 записывают положительные компоненты исходного опорного плана, в нем же в результате вычислений получают положительные компоненты оптимального плана. Столбцы векторов Pj представляют собой коэффициенты разложения этих векторов по векторам данного базиса.

В табл. 3 первые m строк определяются исходными данными задачи, а показатели (m+1)-й строки вычисляют. В этой строке в столбце вектора P0 записывают значение целевой функции, которое она принимает при данном опорном плане, а в столбце вектора Pj – значение Δj=zj-cj.

После заполнения таблицы 3 исходный опорный план проверяют на оптимальность. Для этого просматривают элементы (m+1)-й строки таблицы. В результате может иметь место один из следующих трех случаев:

В первом случае на основании признака оптимальности исходный опорный план является оптимальным. Во втором случае целевая функция не ограничена сверху на множестве планов, а в третьем случае можно перейти от исходного плана к новому опорному плану, при котором значение целевой функции увеличится. Этот переход от одного опорного плана к другому осуществляется исключением из исходного базиса какого-нибудь из векторов и введением в него нового вектора. В качестве вектора, вводимого в базис, можно взять любой из векторов Pj имеющий индекс j, для которого Δj<0. Пусть, например Δk<0, и решено ввести в базис вектор Pk.

Для определения вектора, подлежащего исключению из базиса, находят min(bi/aik) для всех aik>0. Пусть этот минимум достигается при i=r. Тогда из базиса исключают вектор Pr, а число ark называют разрешающим элементом.

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

После выделения направляющей строки и направляющего столбца находят новый опорный план и коэффициенты разложения векторов Pj через векторы нового базиса, соответствующего новому опорному плану. Это легко реализовать, если воспользоваться методом Жордана–Гаусса. При этом можно показать, что положительные компоненты нового опорного плана вычисляются по формулам

а коэффициенты разложения векторов Pj через векторы нового базиса, соответствующего новому опорному плану, – по формулам

После вычисления bj′ и aij′ согласно формулам (25) и (26) их значения заносят в табл. 4. Элементы (m+1)-й строки этой таблицы могут быть вычислены либо по формулам

либо на основании их определения.

Наличие двух способов нахождения элементов (m+1)-й строки позволяет осуществлять контроль правильности проводимых вычислений.

Из формулы (27) следует, что при переходе от одного опорного плана к другому наиболее целесообразно ввести в базис вектор Pj, имеющий индекс j, при котором максимальным по абсолютной величине является число (br/arj)Δj(Δj<0,arj>0) . Однако с целью упрощения вычислительного процесса в дальнейшем будем вектор, вводимый в базис, определять, исходя из максимальной абсолютной величины отрицательных чисел Δj. Если же таких чисел несколько, то в базис будем вводить вектор, имеющий такой же индекс, как и максимальное из чисел cj, определяемых данными числами Δj(Δj<0).

Итак, переход от одного опорного плана к другому сводится к переходу от одной симплекс-таблицы к другой. Элементы новой симплекс-таблицы можно вычислить как с помощью рекуррентных формул (25)-(28), так и по правилам, непосредственно вытекающим из них. Эти правила состоят в следующем.

В столбцах векторов, входящих в базис, на пересечении строк и столбцов одноименных векторов проставляются единицы, а все остальные элементы данных столбцов полагают равными нулю.

Элементы векторов P0 и Pj в строке новой симплекс-таблицы, в которой записан вектор, вводимый в базис, получают из элементов этой же строки исходной таблицы делением их на величину разрешающего элемента. В столбце C6 в строке вводимого вектора проставляют величину Ck, где k – индекс вводимого вектора.

Остальные элементы столбцов вектора P0 и Pj новой симплекс-таблицы вычисляют по правилу треугольника. Для вычисления какого-нибудь из этих элементов находят три числа:

  1. число, стоящее в исходной симплекс-таблице на месте искомого элемента новой симплекс-таблицы;
  2. число, стоящее в исходной симплекс-таблице на пересечении строки, в которой находится искомый элемент новой симплекс-таблицы, и столбца, соответствующего вектору, вводимому в базис;
  3. число, стоящее в новой симплекс-таблице на пересечении столбца, в котором стоит искомый элемент, и строки вновь вводимого в базис вектора (как отмечено выше, эта строка получается из строки исходной симплекс-таблицы делением ее элементов на разрешающий элемент).

Эти три числа образуют своеобразный треугольник, две вершины которого соответствуют числам, находящимся в исходной симплекс-таблице, а третья – числу, находящемуся в новой симплекс-таблице. Для определения искомого элемента новой симплекс-таблицы из первого числа вычитают произведение второго и третьего.

После заполнения новой симплекс-таблицы просматривают элементы (m+1)-й строки. Если все zj′-cj≥0, то новый опорный план является оптимальным. Если же среди указанных чисел имеются отрицательные, то, используя описанную выше последовательность действий, находят новый опорный план. Этот процесс продолжают до тех пор, пока либо не получают оптимальный план задачи, либо не устанавливают ее неразрешимость.

При нахождении решения задачи линейного программирования мы предполагали, что эта задача имеет опорные планы и каждый такой план является невырожденным. Если же задача имеет вырожденные опорные планы, то на одной из итераций одна или несколько переменных опорного плана могут оказаться равными нулю. Таким образом, при переходе от одного опорного плана к другому значение функции может остаться прежним. Более того, возможен случай, когда функция сохраняет свое значение в течение нескольких итераций, а также возможен возврат к первоначальному базису. В последнем случае обычно говорят, что произошло зацикливание. Однако при решении практических задач этот случай встречается очень редко, поэтому мы на нем останавливаться не будем.

Итак, нахождение оптимального плана симплексным методом включает следующие этапы:

  1. Находят опорный план.
  2. Составляют симплекс-таблицу.
  3. Выясняют, имеется ли хотя бы одно отрицательное число Δj. Если нет, то найденный опорный план оптимален. Если же среди чисел Δj имеются отрицательные, то либо устанавливают неразрешимость задачи, либо переходят к новому опорному плану.
  4. Находят направляющие столбец и строку. Направляющий столбец определяется наибольшим по абсолютной величине отрицательным числом Δj, а направляющая строка – минимальным из отношений компонент столбца вектора P0 к положительным компонентам направляющего столбца.
  5. По формулам (25) – (28) определяют положительные компоненты нового опорного плана, коэффициенты разложения векторов Pj по векторам нового базиса и числа F0′,Δj′. Все эти числа записываются в новой симплекс-таблице.
  6. Проверяют найденный опорный план на оптимальность. Если план не оптимален и необходимо перейти к новому опорному плану, то возвращаются к этапу 4, а в случае получения оптимального плана или установления неразрешимости процесс решения задачи заканчивают.
examination/mo/question6.txt · Последние изменения: 2014/01/15 08:19 (внешнее изменение)