Некоторые методы решения задач линейного программирования
Графический метод. Он успешно используется для решения задач линейного программирования, когда число ограничительных уравнений меньше числа элементов решения на два [3]..
Полагаем, что целевая функция имеет вид
Дана система ограничительных уравнений
Предположим, что свободными переменными являются x1 и x2. Выразив базисные переменные через свободные переменные, получим
(3.5)
Элементы решения являются положительными, поэтому область решения будет лежать в первом квадрате (рис. 3.2).
Последовательно приравнивая базисные переменные нулю, получим уравнения прямых.
Положим х3 = 0, тогда γ13x1 + γ23x2— β3/γ3 = 0.
Найдем отрезки х1 и х2, отсекаемые прямой на осях oх1 и ох2, положив х1 = 0, а затем х2 = 0, х1 = β3/γ13γ3, х2 = Рз/β3/γ23γ3.
Отметим на рис. 3.2- штриховкой ту сторону прямой, по которую x3 > 0. Учтем, что коэффициенты могут быть и отрицательными и положительными, однако xi всегда положительны.
Затем полагаем х4 = 0 из второго уравнения (3.5) и снова проводим прямую и штриховкой отмечаем область, где х4 > 0 и т. д. Получаем область допустимых решений (ОДР), она всегда выпукла.
Оптимальное решение находится в этой области или на её границе. Для отыскания его запишем целевую функцию через -свободные переменные. В окончательном виде имеем
где γ1*, γ2* — результирующие значения коэффициентов при свободных переменных; D*—свободный член.
Преобразуем целевую функцию к виду К* = γ1*x1 + γ2*x2, где K*=K-D*.
•Рис. 3.2. Графический метод решения задач линейного программирования
Рис. 3.3. График, поясняющий решение задачи методом линейного программирования
Очевидно, в зависимости от значения переменных х1 и x2 экстремум для .K* и K—D* будет одним и тем же. Если положить K*= 0, то получим уравнение прямой, проходящей через начало координат: γ1*x1 + γ2*x2= 0.
Эту прямую называют основной. Она имеет угловой коэффициент Ку = —γ1*/γ2*. Заметим, что угловой коэффициент прямой не изменится, если прямая не проходит через начало координат. Следовательно, придавая различные значения K*, мы будем «перемещать» основную прямую параллельно самой себе.
Построим основную прямую на графике (рис. 3.2) и начнем перемещать её в ОДР параллельно самой себе в сторону убывания К*, т. е. ищем минимальное значение целевой функции. Одна из вершин области или граница, которую пересечет основная прямая, дает оптимальное решение [2].
Таким образом, решение может быть единственным, если основная прямая пересекает одну вершину, или множество решений, если она пересекает границу ОДР.
Пример. Рассмотрим поставленную задачу о комплектах проводов при следующих данных: С1 =2; С2 = 3; а11 = 2; a12 = l; a21 = 1; а22 = 2; b1 = 8; b2 = 6.
Обозначим количество комплектов проводов первого и второго видов через х1 и х2 — соответственно.
Целевая функция, минимизирующая затраты, имеет вид:
K = 2x1 +3x2 → min.
Составим ограничительные уравнения, 2x1 +x2 ≥ 8; x1≥ 0, x2 ≥ 0, x1 + 2x2 ≥ 6, или у1 =2x1 +x2 — 8; у2 = x1 + 2x2 — 6. Построим график ограничительных прямых у1 =0 и у2 =0 (рис. 3.3).
Первая прямая отсекает отрезки на осях x1 и x2 соответственно равные 4 и 8.
Вторая прямая отсекает отрезки, равные 6 и 3. Найдем угловые коэффициенты прямых уk1 = — 2; уk2 = —0,5; уkоп = —2/3.
Находим вершину А. Оптимальным решением является x1 = 3,5, x2 = 1,5. Другие вершины не дают оптимального решения,
так как основная прямая пересекает в ОДР первой вершину А. Следовательно, К = 2x1 +3x2 = 2 * 3,5 + 3.*1,5 = 11,5.
Наиболее распространенным методом решения задачи линей-ного программирования является симплекс-метод, предложенный в 1941 г. Денцигом. Идея линейного программирования была известна с конца тридцатых годов двадцатого столетия однако его практическое использование ограничивалось отсутствием подходящих методов решения. С появлением симплекс-метода линейное программирование широко использоваться в решении оптимизационных экономических и технических задач.
Метод состоит в последовательном улучшении плана решения задачи, когда в ходе решения возможна взаимная замена базисных и свободных переменных.
Ранее отмечалось, чтo оптимальное значение целевой функции достигается в одной из вершин области допустимых ний, где хотя бы две базисные переменные равны нулю, гак как каждая из пересекающихся прямых получена при пулевых значениях базисных переменных. Такое положение имело место, когда переменных было на две больше числа ограничительных уравнений, но в задачах, решаемых методами линейно программ ирования, разность между количеством переменных и числом ограничительных уравнений может быть любой, в том числе и более двух. В этих случаях применяют симплекс-метод, хотя он может использоваться и при любых других значениях этой разности.
Предположим, что составлена задача линейного программирования, записана целевая функция и ограничительные уравнения. Выбраны свободные и базисные переменные. Допустим, что свободными переменными выбраны х1 и х2. Тогда, выразив базисные переменные через свободные, получим
.
Целевая функция имеет вид
.
ее решение через свободные переменные
.
Положим равными нулю все свободные переменные, тогда К = D. Это и будет оптимальным решением, если γ1* и γ2* являются положительными, так как любое увеличение х приводит к увеличению K, а это ухудшает решение.
Если какой-то из коэффициентов отрицателен, то, увеличивая значение переменной, имеющей отрицательный коэффициент, улучшаем решение. Очевидно, если увеличивать его до бесконечности, то будет соответственно уменьшаться К. Решения в даном случае не существует. Если решение все же существует, то при увеличении свободной переменной может произойти нарушение ограничительных уравнений, вследствие перевода некоторых неизвестных в отрицательную область.
В данном случае поступают следующим образом: наиболее критичные свободные переменные переводят в разряд базисных, а базисные — в разряд свободных. Затем вновь полученные значения переменных нужно подставить в целевую функцию. Такую замену продолжают до тех пор, пока все коэффициенты целевой функции станут положительными. Заметим, что при задаче максимизации целевой функции они все должны быть отрицательными, так как задача максимизации отличается от задачи минимизации умножением целевой функции на—1.
Пример. Минимизировать целевую функцию К = С1x1 + С2х2 → min при известных ограничениях
Приведем ограничения к стандартному виду
Положим x1 и x2 = 0, тогда у1 = 5, у2 = 3. Целевая функция К = 0, но x2 имеет отрицательный коэффициент, поэтому K = 0 не есть оптимальное решение. Найдем критические переменные.
Такой переменной является x2. При x1 = 0 у1 обращается в нуль только при значении x2 = 1,25, а при втором уравнении y2 обращается в нуль только при x2=1,5. Следовательно, более критичным является x2 первого уравнения.
Переведем x2 первого уравнения в базисную переменную, а у1 — в свободную переменную. Следовательно, мы перешли к новому базису.
Составим новую систему ограничительных уравнений:
Подставим x2 во второе уравнение:
Запишем целевую функцию через новые свободные переменные. Найдем x1 из этого уравнения: x1 = — 2у2 + у1 + 1. Под ставим его в первое уравнение: x2 = — 1.5у2 + 0,5у1 + 2. Введем значения х1 и x2 в целевую функцию:
При у1 = 0, у2 = 0 K = — 2. Следовательно, x1 = 1, x2 = 2.