Линейного программирования

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

В основе графического метода в случае двух (трех) переменных лежат следующие представления. Множество допустимых планов Линейного программирования - student2.ru можно представить в виде некоторого многогранного выпуклого множества на плоскости (в пространстве). Оптимальное решение, если оно существует и единственно, лежит в угловой точке множества допустимых решений, где пересекаются прямые (плоскости), ограничивающие это множество.

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

Рассмотрим для определенности задачу максимизации для целевой функции, зависящей от двух переменных:

Линейного программирования - student2.ru ,

Линейного программирования - student2.ru (1.12)

Шаг 1. Построение множества допустимых планов.

Каждое Линейного программирования - student2.ru -тое ограничение задачи записывается как равенство Линейного программирования - student2.ru . Геометрически полученное уравнение определяет прямую линию, которая делит плоскость на две полуплоскости, в одной из которых выполняется условие Линейного программирования - student2.ru , в другой Линейного программирования - student2.ru . Полуплоскость, для точек которой выполняется требуемое ограничение Линейного программирования - student2.ru , назовем допустимой полуплоскостью.

Если пересечение допустимых полуплоскостей для всех ограничений не пусто, тогда оно представляет собой область допустимых решений, которая называется многоугольником решений. Множество точек, принадлежащих этому многоугольнику, образует множество допустимых планов Линейного программирования - student2.ru (1.12) исходной задачи. При условии не отрицательности переменных многоугольник будет лежать в первой четверти.

Шаг 2.Нахождение оптимального плана.

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

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

Для нахождения оптимальной точки рассмотрим целевую функцию задачи Линейного программирования - student2.ru . Запишем ее в виде:

Линейного программирования - student2.ru , где Линейного программирования - student2.ru .

Это уравнение задает линии уровня целевой функции, которые являются параллельными прямыми линиями в пространстве переменных Линейного программирования - student2.ru .

Вектор нормали к прямой Линейного программирования - student2.ru к линии уровня целевой функции называется градиентом Линейного программирования - student2.ru . Градиент указывает направление возрастания целевой функции.

Для нахождения точки экстремума графическим методом, необходимо сначала построить линию уровня для некоторого произвольного значения целевой функции. Затем осуществить ее параллельное передвижение в направлении градиента, если решается задача максимизации, и в обратном направлении, при решении задачи минимизации. Смещение производится до тех пор, пока не будет достигнута «последняя» точка области допустимых планов Линейного программирования - student2.ru . Для задач максимизации (минимизации) такой точке области D соответствует наибольшее из возможных значений линии уровня. Последнее означает, что для нахождения точки экстремума в задаче линейного программирования мы должны сначала построить линию уровня для некоторого произвольного значения целевой функции. Затем необходимо осуществлять ее параллельное передвижение (так, чтобы она оставалась перпендикулярной вектору с ) до тех пор, пока не достигнем такой точки области допустимых планов D , из которой смещение в направлении вектора с было бы невоз­можно. Такой метод решения получил название графического . Заметим, что решение задачи поиска минимума линейной функ­ции осуществляется аналогично, с той лишь разницей, что дви­жение по линиям уровня должно производиться в направлении, обратном градиенту целевой функции, т. е. по вектору (-с ).

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

Шаг 3. Нахождение максимального значения функции Линейного программирования - student2.ru .

Аналитически оптимальная точка с координатами Линейного программирования - student2.ru находится как точка пересечение двух прямых. Вектор Линейного программирования - student2.ru является оптимальным планом задачи. Затем вычисляется значение целевой функции в оптимальной точке Линейного программирования - student2.ru .

Задача. При производстве товаров А и В используются три вида ресурсов: R1, R2, R3. Сведения о количестве ресурсов, необходимых для производства единицы каждого товара, запасе ресурсов и ценах, по которым товары продаются, приведены в табл. 1.3. Найдите оптимальный план, максимизурующий доход.

    Таблица 1.3
  Товары  
Ресурсы A B Запас ресурсов
R1
R2
R3
Цена товара 3 у.е. 5 у.е.  

1). Искомые переменные задачи:

Линейного программирования - student2.ru — объем производства товара А (шт.);

Линейного программирования - student2.ru — объем производства товара B (шт.);

2). Ограничения задачи.

а) Ограничения на ресурсы. Расход используемых ресурсов не должен превышать их запас.

Линейного программирования - student2.ru , (ресурс R1),

Линейного программирования - student2.ru , (ресурс R2), (1.13)

Линейного программирования - student2.ru , (ресурс R3).

b) Ограничения на знак. Объемы производства товаров не могут быть отрицательными: Линейного программирования - student2.ru , Линейного программирования - student2.ru .

3). Целевая функция Линейного программирования - student2.ru максимизирует доход компании.

Запишем математическую постановку задачи максимизации в стандартном виде, в скобках указаны номера ограничений:

Линейного программирования - student2.ru

Шаг 1. Построение множества допустимых планов.

Рассмотрим первое ограничение Линейного программирования - student2.ru , запишем его в виде уравнения Линейного программирования - student2.ru , которое задает прямую линию на плоскости. Построим уравнение этой прямой линии в прямоугольной системе координат Линейного программирования - student2.ru . Для этого найдем пересечение данной прямой с осями координат.

Пусть Линейного программирования - student2.ru , подставив это значение в уравнение прямой найдем Линейного программирования - student2.ru . Аналогично, пусть Линейного программирования - student2.ru , подставив это значение в уравнение прямой найдем Линейного программирования - student2.ru . Прямая проходит через две точки с координатами A Линейного программирования - student2.ru и В Линейного программирования - student2.ru . Проведем прямую.

Определим допустимую полуплоскость методом пробной точки. Возьмем точку в начале координат Линейного программирования - student2.ru и подставим в первое ограничение, получим верное неравенство Линейного программирования - student2.ru . Следовательно, начало координат принадлежит допустимой полуплоскости. В качестве пробной точки можно взять любую точку на плоскости, не принадлежащую данной прямой.

Линейного программирования - student2.ru

Рис. 1.1. Допустимая полуплоскость для ограничения (1)

Аналогично построим допустимые полуплоскости для ограничений (2) и (3). Условия неотрицательности переменных (4) ограничивают область допустимых планов первой четвертью.

В результате будет построена искомая область допустимого плана Линейного программирования - student2.ru , которая ограничена многоугольником OACDE (рис. 1.2). Для точек Линейного программирования - student2.ru выполняются все ограничения задачи.

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

Линейного программирования - student2.ru

Рис. 1.2. Область допустимого плана OACDE

Шаг 2.Нахождение оптимального плана.

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

Построим градиент целевой функции Линейного программирования - student2.ru , он указывает направление возрастания целевой функции. Любой вектор, коллинеарный градиенту Линейного программирования - student2.ru также будет указывать направление возрастания целевой функции, по этому, при необходимости вектор Линейного программирования - student2.ru можно растянуть или перенести параллельно самому себе (рис. 1.3).

Построим линии уровня целевой функции Линейного программирования - student2.ru , где Линейного программирования - student2.ru — константа. Линии уровня представляют собой прямые линии, перпендикулярные градиенту. Придавая константе Линейного программирования - student2.ru различные значения, будем передвигать их в направлении градиента. Последняя вершина многоугольника решений, с которой пересечется линия уровня целевой функции и будет оптимальной точкой.

Линейного программирования - student2.ru

Рис. 1.3. Направление градиента указано пунктиром

На рис. 1.4. изображены пунктиром линии уровня для трех значений константы Линейного программирования - student2.ru . Видно, что оптимальному плану соответствует точка D.

Линейного программирования - student2.ru

Рис. 1.4. Поиск оптимальной точки

Оптимальная точка D является пересечением двух прямых, соответствующих ограничениям (2) и (3). Поэтому координаты оптимальной точки определяются как решения системы линейных алгебраических уравнений (СЛАУ):

Линейного программирования - student2.ru (1.14)

Найдем решение СЛАУ (1.14). Второе уравнение можно разделить на 2, получим:

Линейного программирования - student2.ru

Выразим Линейного программирования - student2.ru из второго уравнения Линейного программирования - student2.ru и подставим в первое уравнение.

Линейного программирования - student2.ru

Решим первое уравнение, получим Линейного программирования - student2.ru , найдем Линейного программирования - student2.ru .

Оптимальный план Линейного программирования - student2.ru . Оптимальное значение целевой функции (доход) составит Линейного программирования - student2.ru у.е.

Наши рекомендации