Кол. методы МБА 2012 / 2. Оптимизация / Книжка по ЛП / 3. Гр.ан.метод 27-44
.pdf3. ГРАФОАНАЛИТИЧЕСКИЙ МЕТОД РЕШЕНИЯ ЗАДАЧ ЛИНЕЙНОГО ПРОГРАММИРОВАНИЯ
Основные идеи, положенные в основу вычислительных алгоритмов решения задач линейного программирования, иллюстрирует простой и наглядный метод, получивший название графоаналитического (иногда его называют также графическим). Он может использоваться в случаях, когда число переменных решения равно двум. Несмотря на ограниченность своего применения, графоаналитический метод отражает все ключевые особенности решения задач линейного программирования и логику более сложных вычислительных алгоритмов, таких, например, как симплекс метод.
3.1. Построение области допустимых решений в задаче линейного программирования с двумя переменными
Выясним вначале особенности геометрического представления неравенств, входящих в систему ограничений, которые в общем виде для случая двух переменных имеют вид
a11x1 +a12x2 ≤ b1,a 21x1 +a 22x 2 ≤ b2 ,
M M M
a m1x1 +a m2x2 ≤ bm
x1 ≥ 0, x2 ≥ 0 .
Предположим дл определенности, что одно из неравенств системы имеет вид
3x1 +2x2 ≤12 . |
(3.1) |
Пусть оно иллюстрирует условие ограниченности некоторого ресурса, запас которого равен 12. Рассмотрим предельный (граничный) случай
3x1 +2x2 =12 .
Такая замена неравенства на равенство соответствует случаю, когда расход соответствующего ресурса в точности равен запасу. Уравне-
27
ние 3x1 +2x2 =12 задает на координатной плоскости X1OX2 прямую
(граничную прямую), изображенную на рис. 3.1. Для выяснения вопроса о том, где расположена та область значений переменных x1, x 2 ,
которая удовлетворяет условию 3x1 +2x2 ≤12 , достаточно взять лю-
бую точку, лежащую левее и ниже прямой (либо правее и выше), и проверить, удовлетворяет ли она данному неравенству. Взяв, например, точку с координатами (1, 1), т.е. точку, соответствующую значениям x1=1, x2=1, и подставив эти значения в (3.1), получаем верное неравенство 5 ≤12 . Из чего можно сделать вывод о том, что неравенству (3.1) (одному из ограничений задачи) соответствует множество точек (пар значений ( x1, x 2 )), лежащих ниже и левее построенной
граничной прямой.
Таким образом, в случае двух переменных, область соответствующая каждому ограничению ЗЛП, записанному в виде неравенства, представляет собой полуплоскость, расположенную по одну из сторон соответствующей граничной прямой.
Так как переменные x1 и x 2 неотрицательны, то область значений,
соответствующая и неравенству (3.1) и условиям неотрицательности, будет такой, как показано на рис. 3.1.
7 |
X2 |
|
|
|
|
|
|
|
|
|
|
|
|
6 |
|
|
|
|
|
|
5 |
|
|
3x1 + 2x 2 =12 |
|
|
|
4 |
|
|
|
|
|
|
3 |
3x1 |
+2x2 ≤12 |
|
|
|
|
2 |
|
|
|
|||
|
≥ 0 |
|
|
|
|
|
1 |
x1,2 |
|
|
|
X1 |
|
|
|
|
|
|
||
0 |
|
|
|
|
|
|
|
0 |
1 |
2 |
3 |
4 |
5 |
Рис. 3.1. Область допустимых решений, соответствующая ограничениям 3x1 +2x2 ≤12 , x1 ≥ 0, x2 ≥ 0 .
Попутно заметим, что при увеличении или уменьшении запаса ресурса bi, т.е. правой части ограничения, прямая не изменяет угол на-
клона, а лишь перемещается параллельно самой себе в ту или другую
28
сторону. Соответственно изменению запаса ресурса будет изменяться и область допустимых решений, расширяя или ограничивая возможности выбора.
Действительно, если в ограничении (3.1) запас ресурса увеличить с 12 до 18, чему соответствует новое неравенство 3x1 +2x2 ≤18 , то по-
лучим новую прямую 3x1 +2x2 =18 , параллельную исходной – рис. 3.2.
10 |
X2 |
|
|
|
|
8 |
|
|
3x1 + 2x |
2 =12 |
|
6 |
|
|
|
||
|
|
|
|
|
|
4 |
|
|
|
3x1 + 2x2 =18 |
|
2 |
|
|
|
|
X1 |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
0 |
2 |
4 |
6 |
8 |
Рис. 3.2. Изменение положения границы ОДР при изменении запаса ресурса (правой части ограничения).
Выясним, как будет изменяться ОДР с добавлением в систему других ограничений. Пусть, например, помимо (3.1) и условий неотрицательности существует еще одно ограничение x1 +2x2 ≥ 4 . Теперь
требуется построить область, удовлетворяющую системе ограничений
3x1 +2x 2 ≤12, |
|
|
|
+2x 2≥ 4, |
(3.2) |
x1 |
||
|
≥ 0, x 2 ≥ 0. |
|
x1 |
|
Повторим процедуру нахождения области, удовлетворяющей новому условию x1 +2x2 ≥ 4 . Для этого на графике строим прямую
x1 +2x2 = 4 , выясняем путем подстановки, что новому условию удовлетворяет область, лежащая правее и выше прямой x1 +2x2 = 4
(рис.3.3.). Объединяя этот результат с результатом, полученным ранее, находим область допустимых решений, все точки которой удовлетворяют ограничениям системы (3.2). На рис. 3.3 эта область выделена темным цветом.
29
7 |
X2 |
3x1 +2x2 ≤12 |
|
||||
6 |
|
|
|
+2x |
|
≥ 4 |
|
|
x |
1 |
2 |
|
|||
5 |
|
|
|
|
|
||
|
x1,2 ≥ 0 |
|
|
||||
4 |
|
|
|
3x1 + 2x2 =12 |
|||
3 |
|
|
|
||||
|
|
|
|
|
|
|
|
2 |
|
|
|
|
x1 + 2x 2 = 4 |
|
|
1 |
|
|
|
|
|
|
X1 |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
1 |
2 |
|
3 |
|
4 |
5 |
|
Рис. 3.3. ОДР для системы ограничений (3.2). |
Добавим еще одно ограничение в систему (3.2), а именно 2x1 −x2 ≤1 и построим область допустимых решений для новой сис-
темы неравенств
3x1 +2x2 ≤12, |
|
||
|
+2x2 |
≥ 4, |
|
x1 |
(3.3) |
||
|
|
|
|
2x1 −x2 |
≤1, |
|
|
|
≥ 0, x2 ≥ 0. |
|
|
x1 |
|
||
Для этого найдем |
область, удовлетворяющую условию |
2x1 −x2 ≤1. Строим граничную прямую 2x1 −x2 =1 (рис. 3.4.) и вы-
ясняем, что новому условию удовлетворяет область, лежащая левее и выше прямой 2x1 −x 2 =1. Объединив результат, полученный ранее
(рис.3.3), с полуплоскостью, расположенной левее и выше прямой 2x1 −x 2 =1, получаем новую область допустимых решений. Все ее
точки удовлетворяют ограничениям системы (3.4). Геометрически она показана на рис. 3.4.
Таким образом, всякая система ограничений задачи линейного программирования с двумя переменными задает на плоскости некоторую область, представляющую собой, так называемый, выпуклый многоугольник, называемый областью допустимых решений. Выпуклость означает, что отрезок, соединяющий две любые точки области, также целиком принадлежит этой области.
30
7 |
|
|
X2 |
|
3x |
1 |
+2x |
2 |
≤12, |
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
||
6 |
|
|
|
|
x1 |
+2x2≥ 4, |
|
|
|||||
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
−x2 ≤1 |
|
|
||||
5 |
|
|
|
|
2x1 |
|
|
||||||
|
|
|
|
|
|
≥ 0. |
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|||
4 |
|
|
|
|
x1,2 |
|
|
|
2x1 − x2 =1 |
||||
|
|
|
ОДР |
|
|
|
|
|
|
||||
3 |
|
|
|
|
|
|
|
3x1 + 2x2 =12 |
|||||
|
|
|
|
|
|
|
|
|
|||||
2 |
|
|
|
|
|
|
|
|
|
|
|
x1 + 2x2 = 4 |
|
|
|
|
|
|
|
|
|
|
|
|
|||
1 |
|
|
|
|
|
|
|
|
|
|
|
X1 |
|
|
|
|
|
|
|
|
|
|
|
|
|||
0 |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
|
1 |
|
2 |
|
3 |
4 |
Рис. 3.4. Область допустимых решений системы ограничений (3.3).
3.2. Целевая функция в задаче линейного программирования с двумя переменными и ее геометрическое представление
В задаче с двумя переменными целевая функция имеет вид
Z = c1x1 +c2x 2 .
Предположим, что Z =3x1 + x2 . Выясним, как графически можно представить целевую функцию в координатной плоскости X1OX2 .
Для этого придадим Z какое-либо постоянное значение, например, Z=3. Тогда получаем
3x1 + x2 = 3 или x 2 = 3 −3x1.
Это уравнение задает в координатной плоскости X1OX2 прямую с
угловым коэффициентом, равным (- 3). Напомним, что угловой коэффициент прямой - это коэффициент, стоящий при аргументе x1, ко-
торый равен тангенсу угла наклона прямой к оси OX1 и, следовательно, задает ее наклон. Нанесем эту прямую на график, представленный на рис. 3.5. Заметим, что для всех точек, принадлежащих данной прямой, значение целевой функции одинаково (постоянно) и равно 3, по-
скольку все точки прямой удовлетворяют уравнению 3x1 + x2 = 3. Положим теперь, что Z = 5. Тогда в X1OX2 получаем новую пря-
мую (рис. 3.5), уравнение которой
31
3x1 + x 2 = 5 или |
x 2 = 5 −3x1. |
Заметим, что угловой коэффициент новой прямой, также как и у первой (Z=3), равен (- 3). Следовательно, прямые Z=3 и Z=5 параллельны друг другу.
Пусть, теперь Z=6. Рассуждая аналогично, строим на графике прямую, задаваемую уравнением 3x1 + x 2 = 6 . Она также будет па-
раллельна первым двум прямым линиям Z=3 и Z=5, поскольку угло- |
||||||||||||||
вой коэффициент и в этом случае остался равным (- 3) |
|
|||||||||||||
4 |
|
|
X2 |
|
|
|
|
|
|
3x1 + x 2 = 6 x 2 = 6 −3x1. |
||||
|
|
|
Z=6 |
|
|
|
|
Все три прямые, соответствующие |
||||||
|
|
|
|
|
|
|
||||||||
3 |
|
|
|
|
|
|
|
|
|
различным |
значениям |
целевой |
||
|
|
|
|
|
|
|
|
|
||||||
2 |
|
|
|
Z=5 |
|
|
|
|
функции, показаны на рис. 3.5. |
|||||
|
|
|
|
|
|
|
|
|
|
Причем, по мере удаления от нача- |
||||
|
|
|
|
|
|
|
|
|
|
|||||
1 |
|
|
Z=3 |
|
|
|
|
X1 |
ла координат величина Z возраста- |
|||||
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
ет, а при перемещении к началу |
|||||||
0 |
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
координат величина Z уменьшает- |
||||
|
|
|
|
|
|
|
|
|
|
|||||
0 |
1 |
2 |
3 |
4 |
||||||||||
ся. Легко прийти к выводу - разным |
||||||||||||||
|
|
|
|
|
Рис. 3.5. |
|
|
|
|
значениям целевой функции Z со- |
||||
ных прямых. |
|
|
|
|
|
|
ответствует |
семейство |
параллель- |
|||||
|
|
|
|
|
|
|
|
|
Для нахождения наибольших и наименьших значений целевой функции необходимо в первую очередь научиться определять, в каком направлении следует перемещать какую-либо линию Z=const, чтобы значение Z возрастало (убывало). Это можно сделать двумя способами. Первый рассмотрен выше – построив пару прямых для разных значений Z и сопоставив их взаимное расположение, определяют направление возрастания или убывания целевой функции. Однако сделать это удобнее на основе использования некоторых сведений из математического анализа, а именно:
• Если задана функция двух переменных Z = f (x1, x 2 ) , то линии в X1OX2 , для которых Z = f (x1, x 2 ) = const , называют линиями
уровня. Иначе говоря, это те линии, во всех точках которых величина Z постоянна.
•В задачах линейного программирования линиями уровня являются прямые Z=const. Во всех точках, принадлежащих какой-либо линии уровня, значение целевой функции одинаково.
•Важным свойством линий уровня для линейных целевых функций является то, что при их параллельном смещении в одну сторону ве-
32
личина Z только возрастает, а при перемещении в другую сторону только убывает.
•Определить направление возрастания целевой функции можно с
помощью специального вектора,
называемого вектором градиентом X2 B > A Z =функции. f (x1, x 2 ) . Для его
|
обозначения используют символ g . |
|
|
Z = B |
|||||||||
• |
Вектор градиент обладает следую- c2 |
|
|
|
|
|
g ={c1, c2} |
||||||
|
|
|
|
|
|||||||||
|
щим свойством: в каждой точке он |
|
|
|
Z = A |
|
|||||||
|
|
|
|
|
|||||||||
|
перпендикулярен |
соответствую- |
|
|
|
|
|
|
|
|
|||
|
щей линии уровня и указывает |
|
|
|
|
|
|
X1 |
|||||
|
направление |
ее |
возрастания. |
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
c1 |
||||||||
|
|
|
|
|
|
|
|
|
|
||||
• |
В задачах линейного программиро- |
|
|
|
Рис. 3.6. |
||||||||
|
вания с целевой функцией Z = c1x1 +c2x 2 координатами вектора |
||||||||||||
|
g являются ее коэффициенты g ={c1,c2} - рис.3.6. |
Эти утверждения позволяют строить только одну прямую Z=const и далее определять с помощью вектора с координатами g ={c1,c2}, в
каком направлении целевая функция Z убывать.
Пример 3.1. |
|
|
Задана |
целевая |
функция |
Z = 2x1 +2x 2 . |
Требуется |
выяснить, в |
область каких значений параметров оптимизации x1, x 2 следует пере-
мещаться, чтобы значение Z возрастало.
Решение
будет возрастать, а в каком
4 X2
3 Z = 6
2 |
|
|
|
|
|
|
|
|
g ={2,2} |
||
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|||||
1 |
|
|
|
Z = 2 |
|||||||
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
X1 |
||
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
||
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Находим координаты вектора «рос- |
0 |
1 |
2 |
3 |
4 |
та» g . Это коэффициенты целевой |
|
|
Рис. 3.7. |
|
|
функции, следовательно g ={2,2}. |
|
|
|
|
|
Строим вектор в координатной плоскости X1OX2 ( рис. 3.7.). |
|
||||
Построим любую линию уровня |
целевой |
функции, |
например, |
Z = 2 . Тогда линией уровня будет прямая 2x1 +2x 2 = 2. Как видно из рис.3.7., она перпендикулярна вектору градиенту. Имея линию уровня
33
и вектор градиент, легко определить, в область каких значений переменных следует перемещаться для того, чтобы целевая функция возрастала. В рассматриваемом примере это область правее и выше линии Z = 2 . На графике для иллюстрации полученного вывода построена другая линия уровня, соответствующая значению целевой функции Z = 6 .
При перемещении в сторону, противоположную вектору градиенту, целевая функция будет убывать.
Проведенный анализ позволяет сделать следующие выводы.
•Эффективным инструментом для анализа поведения целевой функции являются линии уровня.
•Линии уровня в задачах линейного программирования с двумя переменными – это прямые, во всех точках которых величина Z постоянна.
•Вектор g ={c1,c2}, где c1,c2 – коэффициенты целевой функции, позволяет определить, в какую область значений параметров оптимизации x1, x 2 следует перемещаться, чтобы величина Z возрастал
(при ее максимизации) либо убывала (при ее минимизации).
• При изменении коэффициентов ( c1,c2 ) целевой функции Z = c1x1 +c2x 2 линии уровня меняют наклон и направление возрастания.
3.3. Решение задачи линейного программирования графоаналитическим методом
Объединение результатов, полученных выше, позволяет решить оптимизационную задачу по поиску наибольшего или наименьшего значения целевой функции среди множества значений x1, x 2 , принад-
лежащих области допустимых решений.
Алгоритм нахождения оптимального решения в задачах линейного программирования с двумя переменными заключается в последовательной реализации следующих этапов.
1.Геометрическое представление области (множества) допустимых решений – ОДР.
2.Определение направления возрастания (в задаче максимизации) или убывания (в задаче минимизации) целевой функции.
3.Нахождение оптимального решения – точки (точек), в которой (которых) достигается максимум или минимум целевой функции.
34
Пример 3.2.
Требуется найти такие значения (x1, x 2 ) , которые обращают в
максимум целевую функцию
Z = 5x1 + x 2 max .
И при этом удовлетворяют системе ограничений
3x1 +2x 2 ≤12,x1 +2x 2≥ 4,
2x1 −x 2 ≤1,
и условиям неотрицательности
x1 ≥ 0, x2 ≥ 0.
Решение
Область допустимых решений, соответствующая данной системе ограничений была найдена ранее - рис. 3.4. Исследуем поведение целевой функции в этой области и выясним, в какой из точек ОДР целевая функция достигнет наибольшего значения.
Вектор, указывающий направление роста целевой функции Z = 5x1 + x2 имеет координаты g ={5,1}. Придадим Z какое-либо зна-
чение, например Z=5 . Уравнение линии уровня Z=5 задает на графике прямую 5x1 + x 2 = 5 (рис. 3.8.). Очевидно, что чем далее будет пере-
мещаться прямая в направлении g , тем большие значения будет при-
нимать Z. Область, в которой возможны перемещения, ограничена многоугольником ОДР. Следовательно, наибольшее значение будет достигнуто в крайней точке ОДР. Эта точка - (x1opt , x2opt ) . Именно
в ней и достигается оптимальное решение, при котором Z будет наибольшим из всех возможных. Дальнейшее перемещений линии уровня за пределы ОДР будет приводить к росту Z, однако вне ОДР решения не имеют смысла, т.к. в этих точках будут нарушены ограничивающие условия. Содержательно это означает, что выполнение какойлибо производственной программы ( x1, x 2 ), «расположенной» вне
области допустимых решений невозможно из-за отсутствия достаточного для ее реализации запаса ресурсов.
35
7 |
X2 |
Zmax |
|
|
|
6 |
Z=5 |
|
Точка оптимума |
||
|
g |
||||
5 |
|
|
|
|
|
4 |
|
ОДР |
|
|
2x1 − x2 =1 |
|
|
|
|
|
|
3 |
x2opt |
|
|
3x1 + 2x2 =12 |
|
2 |
|
|
|
|
x1 + 2x2 = 4 |
1 |
|
x1opt |
|
|
X1 |
0 |
|
|
|
||
|
|
|
|
|
|
|
0 |
1 |
2 |
3 |
4 |
|
|
Рис. 3.8 |
|
|
|
Как следует из рис.3.8., точка оптимума, в которой Z принимает наи- |
|||||
большее значение в ОДР – это точка пересечения двух граничных |
|||||
прямых 3x1 +2x 2 =12 и 2x1 −x 2 =1. Для того, чтобы найти коорди- |
|||||
наты точки, одновременно принадлежащей как первой, так и второй |
|||||
прямой, необходимо решить систему уравнений |
|
|
|||
|
|
3x1 +2x 2 =12, |
|
|
|
|
|
|
|
|
|
Решая ее, находим |
2x1 −x 2 =1. |
|
|
||
x1opt = 2, |
x2opt =3. |
|
|
||
|
|
|
|
Тогда максимальное значение целевой функции будет равно
Zmax =5 x1opt +x2opt =5 2 +3 =13.
Таким образом, оптимальному решению соответствуют следующие значения переменных – x1opt = 2, x2opt =3. Они обращают целевую
функцию в максимум ( Zmax =13 ) и при этом удовлетворяют системе исходных ограничений.
Пример 3.3.
Небольшая обувная фабрика выпускает два изделия – кроссовки и домашние тапочки. Для их производства используется три типа ресурсов: кожа, ткань и труд. Доход от реализации одной пары кроссовок составляет 100 рублей, пары тапочек – 50 рублей. Удельные расходы ресурсов, необходимых для пошива одной пары обуви каждого
36