- •Методические указания для лабораторных занятий Симплексный метод решения задач линейного программирования
- •Бакалавр
- •Введение
- •Методика решения задачи линейного программирования прямым симплексным методом
- •Последовательность выполнения задания
- •2.1.1 Построение экономико-математической модели задачи
- •По трудовым ресурсам, чел.-дни.
- •Подготовка задачи к решению симплексным методом
- •2.1.3 Основные идеи симплексного метода
- •2.1.4 Алгоритм прямого симплексного метода
- •2.2 Экономический смысл решения
- •3 Вопросы для самоконтроля
- •Библиографический список
2.1.3 Основные идеи симплексного метода
Для решения задачи линейного программирования надо из множества допустимых решений выбрать оптимальное решение. Построить какое-либо допустимое решение сравнительно просто. Но построить и проанализировать бесконечное их множество с целью выбрать оптимальное решение, доставляющее экстремум целевой функции, на первый взгляд, невозможно. Поэтому, ставится, казалось бы, невыполнимая задача: построив и проанализировав сравнительно небольшое количество допустимых решений, выбрать оптимальное среди всего, как правило, бесконечного их множества. В симплексном методе эта «невыполнимая» задача решается с помощью реализации двух идей.
Первая идея – рассматриваются не все допустимые решения, а лишь базисные допустимые решения. Смысл рассмотрения базисных решений становится ясным из следующих очень важных утверждений, доказываемых в теории линейного программирования:
Если задача линейного программирования имеет оптимальное решение (единственное), то это решение является базисным. Если же оптимальное решение не единственное, то среди множества оптимальных решений все равно найдется базисное.
Целевая функция задачи линейного программирования достигает своего экстремального значения в угловой точке многогранника (многоугольника) решений. То есть, оптимальное решение выбирается из множества допустимых решений, представляющих собой координаты угловых точек многогранника (многоугольника) решений, которые являются базисными решениями задачи линейного программирования.
Казалось бы, алгоритм достаточно прост: надо построить все базисные решения для данной задач и выбрать из них наилучшее, для которого значение функции Z максимально (или минимально). Однако подобный алгоритм также практически нереализуем для сколько-нибудь серьезной задачи.
Отсюда вытекает вторая идея симплексного метода: получив некоторое базисное решение, выяснить, существует ли решение лучше. Если существует, то рассматривать именно лучшее решение, а не любое другое базисное решение.
Геометрически симплексный метод может быть интерпретирован как движение по соседним угловым точкам многогранника (многоугольника) решений.
2.1.4 Алгоритм прямого симплексного метода
Прямым симплексным методом решаются задачи, все ограничения которых имеют тип «не более», т.е. ( < ).
Основу алгоритма симплексного метода составляет последовательность итераций и шагов, реализующих идеи симплексного метода и обеспечивающих переход от одного базисного решения к другому до получения оптимального решения, либо вывода о том, что задача решения не имеет.
Схема расчетов на каждой итерации остается одной и той же, меняются лишь входные данные. Каждая из итераций состоит из четырех шагов, имеющих определенный вычислительный смысл.
ИТЕРАЦИЯ 1
ШАГ 1. Выписываем исходное допустимое базисное решение и соответствующее ему значение целевой функции Z.
На первой итерации в качестве базисных выбираем дополнительные переменные (в нашем примере это Х3, Х4, Х5). Небазисные переменные Х1 и Х2 приравниваем к нулю. Тогда из задачи (2) получим:
Х3 = 2000, Х4 = 28000, Х5 = 9000.
Выписываем полностью исходное допустимое базисное решение:
Х1 Х2 Х3 Х4 Х5
Х1 =
0 0 2000 28000 9000
и соответствующее ему значение целевой функции:
Z1 = 1500 * 0 + 5000 * 0 + 0 * 2000 + 0 * 28000 + 0 * 9000 = 0
Примечание 1. Исходя из смысла задачи об оптимальном использовании ресурсов, ситуация, отвечающая исходному плану Х1, означает бездеятельность предприятия. Ресурсы (пашня, труд, удобрения) не используются, поэтому прибыль, отраженная в целевой функции, равна нулю.
ШАГ 2. Проверяем оптимальность полученного решения.
Шаг 2 сводится к тому, что даем первой из небазисных переменных единичное приращение и вычисляем, к каким это приведет изменениям для значений базисных переменных. Затем вычисляем изменение значения функции Z. Если оно положительное, то делаем вывод о целесообразности ввода данной небазисной переменной в базис. На этом шаг 2 можно закончить и другие небазисные переменные не исследовать.
Итак, пусть : Δ Х1 = 1
Тогда изменения для базисных переменных Х3, Х4, Х5 запишутся так:
Δ Х3 = -1
Δ Х4 = -4
Δ Х5 = -2
Подставляя эти изменения значений переменных в целевую функцию, получим:
Δ Z = 1500 * 1 + 5000 * 0 + 0 * (-1) + 0 * (-4) + 0 * (-2) = 1500 > 0
Вывод: Решение Х1 неоптимальное. Переменную Х1 целесообразно ввести в базис, поскольку от этого значение целевой функции Z увеличится
Примечание 2. Т.е., один гектар пашни засевается пшеницей (Х1). Тогда недоиспользованная площадь пашни (Х3) уменьшится на 1 га. А так как каждый гектар пшеницы требует 4 чел.-дн. труда, то недоиспользованный труд (Х4) уменьшится на 4 чел.-дн. Соответственно количество недоиспользованного удобрения (Х5) уменьшится на 2 кг д.в. Целевая функция увеличится на 1500.
Примечание 3. Если мы сделали вывод о целесообразности ввода в базис какой-либо небазисной переменной (в нашем примере это переменная Х1), то другие небазисные переменные (в нашем примере это Х2) испытывать на данном шаге на предмет целесообразности ввода в базис не обязательно.
Примечание 4. Если на какой-либо из итераций на шаге 2 мы убедимся, что ни одну из небазисных переменных нецелесообразно вводить в базис, это будет означать, что получено оптимальное решение.
ШАГ 3. Определяем, какая из прежних базисных переменных должна быть выведена из базиса.
Переменную Х1 нельзя увеличивать до бесконечности, а только до той величины, которая будет удовлетворять условиям неотрицательности переменных:
Х3 > 0, Х4 > 0, Х5 > 0 (3)
Переменная Х2 пока остается равной нулю (т.е. под сахарную свеклу площадь пашни пока не выделяется).
Выразим из системы ограничений задачи (2) базисные переменные Х3, Х4, Х5 через вновь вводимую в базис переменную Х1:
Х3 = 2000 - Х1
Х4 = 28000 - 4Х1 (4)
Х5 = 9000 - 2Х1
Так как переменные Х3, Х4, Х5 должны удовлетворять условиям неотрицательности, то соотношения (4) можно записать так:
2000 - Х1 > 0 Х1 < 2000 : 1 < 2000 (*)
28000 - 4Х1 > 0 откуда Х1 < 28000 : 4 < 7000
9000 - 2Х1 > 0 Х1 < 9000 : 2 < 4500
Для одновременного выполнения условий (3) необходимо, чтобы значение переменной Х1 не превышало 2000, потому что когда Х1 увеличится до значения, равного 2000 обратится в нуль Х3 (см. первое ограничение задачи (2)). При дальнейшем увеличении Х1 до значения 4500, обратится в нуль Х5 (см. третье ограничение задачи (2)). При этом значение Х3 станет меньше нуля и нарушится условие неотрицательности (см первое ограничение задачи (2)). Увеличение Х1 до 7000 приведет к тому, что Х3 и Х5 станут меньше нуля (см. первое и третье ограничения задачи (2)), т.е. нарушится условие неотрицательности переменных.
Таким образом, на данном шаге мы выяснили, какая из базисных переменных первой обратится в нуль при вводе небазисной переменной в базис, и то уравнение, в которое она входит. Это означает, что замена базисной переменной должна произойти именно в этом уравнении. В нашем примере замена прежней базисной переменной произойдет в первом уравнении, где получено наименьшее значение Х1. Пометим это уравнение символом (*).
Окончательно делаем вывод: в новом базисе будут находиться переменные Х1, Х4, Х5, а переменная Х3 становится небазисной (обращается в ноль).
Примечание 4. Если некоторая базисная переменная не уменьшается при переходе к новому базису, а увеличивается или остается прежней, то уравнение, которое ее содержит, на шаге 3 не рассматривается.
ШАГ 4. Пересчет системы линейных уравнений задачи (2) с учетом нового состава базисных переменных.
На предыдущем шаге мы выяснили, что базисной переменной в первом уравнении становится Х1, во втором и третьем уравнениях остаются прежние переменные (соответственно Х4 и Х5).
Преобразуем систему уравнений задачи (2) так, чтобы переменная Х1 осталась только в первом уравнении с коэффициентом, равным +1, и отсутствовала бы в двух других.
Для этого выполним ряд действий:
1. Перепишем в новую систему уравнений (4) первое уравнение из системы (2) в том же виде.
Примечание 5. Если коэффициент при вновь вводимой в базис переменной отличен от единицы, то нужно сделать соответствующие преобразования, т.е. разделить почленно все уравнение на этот коэффициент.
Исключим переменную Х1 из второго уравнения системы (2).
Для этого из второго уравнения системы (2) вычтем первое уравнение новой системы (4), умноженное на 4:
4Х1 + 40Х2 + Х4 = 28000
4Х1 + 4Х2 + 4Х3 = 8000
36Х2 - 4Х3 + Х4 = 20000
Это будет второе уравнение новой системы (4).
3. Исключим Х1 из третьего уравнения системы (2).
Для этого из третьего уравнения системы (2) вычтем первое уравнение новой системы (4), умноженное на 2:
2Х1 + 9Х2 + Х5 = 9000
2Х1 + 2Х2 + 2Х3 = 4000
7Х2 - 2Х3 + Х5 = 5000
Это будет третье уравнение новой системы (4).
После таких преобразований новая система уравнений будет иметь вид:
Х1 + Х2 + Х3 = 2000
36Х2 - 4Х3 + Х4 = 20000 (4)
7Х2 - 2Х3 + Х5 = 5000
ИТЕРАЦИЯ 2
ШАГ 1. Выписываем очередное допустимое базисное решение:
Х1 Х2 Х3 Х4 Х5
Х2 =
2000 0 0 20000 5000
и соответствующее ему значение целевой функции:
Z2 = 1500 * 2000 + 500 * 0 + 0 * 0 + 0 * 20000 + 0 * 5000 = 3000000
ШАГ 2. Проверяем оптимальность полученного решения.
Примечание 6. Можно сформулировать следующее правило, упрощающее расчеты на шаге 2: “Изменения базисных переменных равны соответствующим коэффициентам из столбца испытуемой небазисной переменной, взятым с противоположными знаками”.
Пусть Δ Х2 = 1
Тогда Δ Х1 = - 1
Δ Х4 = -36
Δ Х5 = - 7
Δ Z2 = 1500 * (-1) + 5000 * 1 + 0 * 0 + 0 * (-36) + 0 * (-7) = 3500 > 0
Вывод: Решение Х2 неоптимальное. Переменную Х2 целесообразно ввести в базис, поскольку от этого значение целевой функции Z увеличится
ШАГ 3. Определяем, какая из прежних базисных переменных должна быть выведена из базиса.
Значение переменной Х2 нельзя увеличивать до бесконечности, а только до такой величины, которая будет удовлетворять условиям неотрицательности переменных:
Х1 > 0 , Х4 > 0 , Х5 > 0 (5)
Определим значение Х2 из следующих соотношений, полученных на основе системы уравнений (4), при условии, что Х3 = 0:
Х1 = 2000 - Х2 2000 - Х2 > 0 Х2 < 2000
5
Х4 = 20000 - 36Х2 => 20000 - 36Х2 > 0 => Х2 < 555 -- (*)
9
2
Х5 = 5000 - 7Х2 5000 - 7Х2 > 0 Х2 < 714 –
7
Для выполнения условий (5) необходимо, чтобы выполнялось условие:
5
Х2 = 555 --
9
Данное значение Х2 получилось во втором уравнении. Это означает, что замена базисной переменной должна произойти во втором уравнении задачи (4), т.е. Х2 станет базисной, а Х4 выйдет из базиса.
Окончательно делаем вывод: в новом базисе будут находиться переменные:
Х1, Х2, Х5.
Примечание 7. Для простоты расчетов можно на третьем шаге выполнить более простые преобразования. Для этого правые части уравнений разделить на коэффициенты при вновь вводимой в базис переменной и выбрать меньшее отношение.
Так, Шаг 3 (Итерации2) можно записать более компактно, т.е.:
Определяем, какая из прежних базисных переменных должна быть выведена из базиса. Для этого найдем отношения:
2000 : 1 = 2000
5
20000 : 36 = 555--- (*)
9
2
5000 : 7 = 714---
7
Меньшее значение получилось во втором уравнении. Это означает, что замена базисной переменной должна произойти во втором уравнении задачи (4), т.е. Х2 станет базисной, а Х4 выйдет из базиса.
Окончательно делаем вывод: в новом базисе будут находиться переменные:
Х1, Х2, Х5.
ШАГ 4. Пересчет системы линейных уравнений с учетом нового состава базисных переменных.
Преобразуем систему уравнений (4) так, чтобы во второе уравнение новой системы (6) переменная Х2 вошла с коэффициентом +1, и отсутствовала бы в двух других.
Для этого:
1. Получим второе уравнение новой системы (6). Для этого второе уравнение системы (4) почленно разделим на 36 и коэффициент при Х2 станет равным +1:
1 1 5
X2 -- -- Х3 + -- Х4 = 555 --
9 36 9
2. Исключим переменную Х2 из первого уравнения системы (4).
Для этого вычтем из первого уравнения системы (4) второе уравнение системы (6):
Х1 + Х2 + Х3 = 2000
1 1 5
Х2 - -- Х3 + --- Х4 = 555—
9 36 9
10 1 4
Х1 + ---Х3 - --- Х4 = 1444---
9 36 9
Это будет первое уравнение новой системы (6).
Исключим переменную Х2 из третьего уравнения системы (4).
Для этого вычтем из третьего уравнения системы (4) второе уравнение системы (6), умноженное почленно на 7:
7Х2 - 2Х3 + Х5 = 5000
--
7 7 35000
7Х2 - -- Х3 + --- Х4 = ----------
9 36 9
11 7 1
- -- Х3 - --- Х4 + Х5 = 1111----
9 36 9
Это будет третье уравнение новой системы (6).
После преобразований новая система уравнений будет иметь вид:
10 1
4
Х1 + -- Х3 - -- Х4 = 1444--
9 36 9
1 1
5
Х2 -- -- Х3 + -- Х4 = 555-- (6)
9 36 9
11 7
1
-- --Х3 - -- Х4 + Х5 = 1111--
9 36 9
ИТЕРАЦИЯ 3
ШАГ 1. Выписываем очередное допустимое базисное решение
Х1 Х2 Х3 Х4 Х 5
Х3 = 4 5 1
1444-- 555-- 0 0 1111--
9 9 9
и соответствующее ему значение целевой функции:
4 5 1
Z3 = 1500 * 1444-- + 5000 * 555-- + 0 * 0 + 0 * 0 + 0 * 1111-- = 49446000
9 9 9
ШАГ 2. Проверяем оптимальность полученного решения.
Пусть Δ X3 = 1
10 1 11
Тогда Δ Х1 = -- -- , Δ Х2 = --- , Δ Х5 = ---
9 9 9
10 1 11 10000
Δ Z = 1500 * (- -- ) + 5000 * -- + 0 * 1 + 0 * 0 + 0 * -- = -- ----- < 0
9 9 9 9
Вывод: Так как Δ Z < 0, переменную Х3 нецелесообразно вводить в базис, поскольку значение целевой функции от этого уменьшится.
Примечание 8. Если на шаге 2 сделан вывод о нецелесообразности ввода в базис какой-либо переменной, то необходимо проверить поочередно остальные небазисные переменные на предмет целесообразности их ввода в базис.
В нашем примере следует продолжить шаг 2.
Шаг 2 продолжается.
Пусть Δ Х4 = 1
1 1 7
Тогда Δ Х1 = -- Δ Х2 = -- --- Δ Х5 = ---
36 36 36
1 1 7 3500
Δ Z = 1500 * --- + 5000 * ( -- --- ) + 0 * 0 + 0 * 1 + 0 * -- = -- ----- < 0
36 36 36 36
Вывод: Так как Δ Z < 0, то переменную Х4 нецелесообразно вводить в базис, поскольку значение целевой функции от этого уменьшится.
Общий вывод по шагу 2: Так как на данной итерации ни одну из небазисных переменных нецелесообразно вводить в базис, решение Х3 является оптимальным.
Сделаем простейшую проверку правильности проведенных арифметических расчетов, подставляя значения переменных из оптимального решения Х3 в уравнения задачи (2):
4
5
1444-- + 555-- + 0 = 2000
9 9
4 5
4 х 1444-- + 40 х 555-- + 0 = 28000 =>
9 9
4 5 1
2 х 1444-- + 9 х 555-- + 1111-- = 9000
9 9 9
2000 = 2000
=> 28000 = 28000
9000 = 9000
