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

Графический метод. Он успешно используется для решения задач линейного программирования, когда число ограничитель­ных уравнений меньше числа элементов решения на два [3]..

Полагаем, что целевая функция имеет вид

Дана система ограничительных уравнений

Предположим, что свободными переменными являются x1 и x2. Выразив базисные переменные через свободные переменные, получим

(3.5)

Элементы решения являются положительными, поэтому об­ласть решения будет лежать в первом квадрате (рис. 3.2).

Последовательно приравнивая базисные переменные нулю, получим уравнения прямых.

Положим х3 = 0, тогда γ13x1 + γ23x2— β33 = 0.

Найдем отрезки х1 и х2, отсекаемые прямой на осях oх1 и ох2, положив х1 = 0, а затем х2 = 0, х1 = β313γ3, х2 = Рз/β323γ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.