Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Эк.-мат. мод. (пв)(стр 12 --36).doc
Скачиваний:
15
Добавлен:
08.11.2018
Размер:
1.26 Mб
Скачать

1.3.2. Симплексный метод решения задач линейного программирования

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

Впервые симплексный метод был предложен американским ученым Дж. Данцигом в 1949 г., однако, еще в 1939 г. идеи метода были разработаны российским математиком Л.В. Канторовичем.

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

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

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

  2. Проверим, нельзя ли за счет одной из переменных, приравненной вначале к нулю, улучшить значение целевой функции, придавая ей отличные от нуля (причем положительные) значения. Если это возможно, перейдем к третьему пункту, в противном случае прекратим вычисления.

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

  4. Разрешим систему т уравнений относительно переменной, вошедшей в новое пробное решение. Исключим эту переменную из выражения для целевой функции. Вернемся ко второму пункту.

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

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

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

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

Математическую модель задачи запишем следующим образом.

Определить план , который удовлетворяет ограничениям

и обеспечивает максимальное значение целевой функции .

Алгоритм симплексного метода включает следующие этапы.

  1. Составление начального опорного плана.

Система ограничений решаемой задачи задана в виде неравенств смысла , правые части которых . Перейдем от системы неравенств к системе уравнений путем введения дополнительных неотрицательных переменных, каждая из которых определяет объем соответствующего неиспользованного ресурса. Векторы-столбцы при этих переменных представляют собой единичные векторы и образуют базис, а соответствующие им переменные называются базисными:

,

где базисные переменные,

свободные переменные,

Решим эту систему относительно базисных переменных:

,

а функцию цели перепишем в виде уравнения

Дополнительные переменные вошли в выражение целевой функции с нулевыми коэффициентами, поскольку неиспользованные ресурсы прибыли не дают.

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

Реализация симплексного метода при решении задач линейного программирования осуществляется с помощью симплексных таблиц. В таблице выписаны соответствующие векторы и . Вектор составлен из свободных членов системы основных ограничений. Среди соответствующих векторов есть т векторов, образующих базис. Их записывают в колонку «Б». Как видим, полагая свободные переменные равными нулю, из таблицы можно получить начальный опорный план задачи.

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

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

Оценки векторов используются для проверки оптимальности плана.

  1. Проверка плана на оптимальность.

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

  1. Определение ключевого столбца и строки.

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

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

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

  1. Построение нового опорного плана.

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

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

,

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

Затем возвращаемся ко второму этапу алгоритма – проверке нового плана на оптимальность.

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

Замечание 2. Если в ключевом столбце все коэффициенты , то функция цели неограничена на множестве допустимых планов, т.е. и задача не имеет решения (в случае исследования на ).

Замечание 3. Если в столбце симплексной таблицы содержатся два или несколько одинаковых наименьших значения, то новый опорный план будет вырожденным (одна или несколько базисных переменных станут равными нулю). Вырожденные планы могут привести к зацикливанию, т.е. к многократному повторению процесса вычислений, не позволяющему получить оптимальный план. С целью исключения этого для выбора ключевой строки используют метод Креко, который заключается в следующем. Элементы строк, имеющие одинаковые наименьшие , делятся на предполагаемые ключевые элементы, а результаты заносятся в дополнительные строки. В качестве ключевой строки выбирается та, в которой раньше встретится наименьшее частное при чтении таблицы слева направо по столбцам. Например, таблица, содержащая три равных значения , имеет следующий вид:

Б

4

2

3

6

1

0

0

2

4 : 2 = 2

8

4

8

1

0

1

0

4

8 : 4 = 2

10

5

12

-1

0

0

1

5

10 : 5 = 2

Допустим, ключевым столбцом является , который вводится в новый план. Тогда ключевым элементом может быть: 2, 4 или 5. Следуя указанному правилу, получаем таблицу:

2

1

1,5

3

0,5

0

0

1

2

1

2

0,25

0

0,25

0

1

2

1

2,4

-0,2

0,2

0

0,2

1

Сравниваем последовательно слева направо полученные частные по столбцам. В первом и втором столбце все частные одинаковы, а в третьем столбце наименьшее частное 1,5 в первой строке, следовательно, эта строка и будет ключевой с ключевым элементом 2.

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

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

Пример.

Предприятие выпускает три вида продукции: А, В, С, используя при этом три вида ресурсов: . Известны удельные расходы ресурсов, их запасы и прибыль, получаемая от реализации единицы продукции. Указанные данные размещены в таблице.

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

Ресурсы

А

В

С

Запас

4

4

5

200

9

15

5

400

5

6

6

260

Прибыль

12

9

14

Решение. Запишем математическую модель задачи.

Определим план , который удовлетворяет условиям

и обеспечивает максимальное значение целевой функции

.

Для построения начального опорного плана систему неравенств приведем к системе уравнений путем введения дополнительных неотрицательных переменных :

Очевидно, что переменные в этой системе являются базисными, а свободными.

Следует отметить, что смысл переменных и неиспользованные ресурсы вида соответственно и поэтому эти переменные войдут в выражение целевой функции с нулевыми коэффициентами:

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

Б

12

9

14

0

0

0

0

200

4

4

5

1

0

0

50

50

40

0

400

9

15

5

0

1

0

80

0

260

5

6

6

0

0

1

52

0

-12

-9

-14

0

0

0

-240

-560

Начальный опорный план неоптимальный, так как в индексной строке находятся отрицательные коэффициенты: .

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

Ключевой элемент равен 5 и находится на пересечении ключевого столбца и ключевой строки и выделен в таблице.

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

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

.

Элементы второй строки определяются аналогично:

Аналогично проводятся расчеты по всем строкам таблицы, включая индексную.

Б

12

9

14

0

0

0

14

40

1

0

0

50

0

200

5

11

0

-1

1

0

40

0

20

0

0

1

100

560

0

0

0

-32

Контроль. Из второй симплексной таблицы можно выписать план рассматриваемой задачи и значение целевой функции на нем .

Полученный план неоптимальный, поскольку в индексной строке находится отрицательный коэффициент: .

На третьей итерации (третья симплексная таблица) получаем план, который является оптимальным, т.к. все коэффициенты в индексной строке .

Б

12

9

14

0

0

0

14

8

0

1

0

12

40

1

0

0

0

12

0

0

1

592

0

0

0

Оптимальный план можно записать так: .

Следовательно, предприятие для получения максимальной прибыли в размере 592 денежных единицы должно из имеющихся ресурсов изготовить и реализовать 40 единиц продукции вида А и 8 единиц продукции вида С, а продукцию вида В совсем не производить. При этом ресурсы и будут использованы полностью, а ресурс останется в количестве 12 единиц.

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