Задачи линейного программирования

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

Запишем задачу ЛП с двумя переменными в канонической форме:

Задачи линейного программирования - student2.ru (2.1)

Задачи линейного программирования - student2.ru Задачи линейного программирования - student2.ru (2.2)

Задачи линейного программирования - student2.ru .

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

Каждая построенная прямая Задачи линейного программирования - student2.ru , делит всю плоскость на две полуплоскости. При этом, координаты точек только одной полуплоскости удовлетворяют соответствующему неравенству Задачи линейного программирования - student2.ru . Для того, чтобы найти какую полуплоскость определяет неравенство Задачи линейного программирования - student2.ru , можно взять любую точку, не принадлежащую прямой Задачи линейного программирования - student2.ru и подставить ее координаты в неравенство Задачи линейного программирования - student2.ru . Если неравенство выполняется, то искомая полуплоскость та, которая содержит рассматриваемую точку; если неравенство не выполняется, то искомая полуплоскость та, которая не содержит рассматриваемую точку.

Известно, что множеством решений системы ограничений (2.2) является либо выпуклый многоугольник, либо выпуклая многоугольная область, при условии, что система (2.2) совместна. Множество неотрицательных решений системы (2.2), называют множеством допустимых решений.

Предположим, что множество допустимых решений системы (2.2) не пусто. Предположим также, что целевая функция Задачи линейного программирования - student2.ru ограничена на множестве допустимых решений системы (2.2) в задаче на максимум сверху (в задаче на минимум - снизу). В этом случае задача ЛП на максимум (минимум) имеет, по крайней мере, одно решение.

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

Вектор Задачи линейного программирования - student2.ru указывает направление наискорейшего возрастания целевой функции Задачи линейного программирования - student2.ru . Для линейной целевой функции вектор Задачи линейного программирования - student2.ru расположен перпендикулярно линиям уровня. Если переходить от одной линии уровня к другой в направлении вектора-градиента, то значение целевой функции Задачи линейного программирования - student2.ru будет возрастать и достигнет максимума в последней точке Задачи линейного программирования - student2.ru соприкосновения линии уровня Задачи линейного программирования - student2.ru с областью допустимых решений системы неравенств (2.2).

Заметим, что задача ЛП может иметь и бесчисленное множество решений. Это возможно, когда целевая функция достигает наибольшего значения в двух соседних вершинах области допустимых решений системы (2.2), а значит и вдоль всего отрезка соединяющего эти вершины. В этом случае говорят, что задача ЛП имеет альтернативное решение. Например, пусть целевая функция в задаче ЛП достигает максимального значения в области допустимых решений на всем отрезке Задачи линейного программирования - student2.ru : Задачи линейного программирования - student2.ru Задачи линейного программирования - student2.ru , где Задачи линейного программирования - student2.ru и Задачи линейного программирования - student2.ru , в этом случае оптимальное решениезадачи можно записать в виде: Задачи линейного программирования - student2.ru Задачи линейного программирования - student2.ru Задачи линейного программирования - student2.ru .

Задача №2.1.

Изобразить графически множество неотрицательных решений системы неравенств:

Задачи линейного программирования - student2.ru . Задачи линейного программирования - student2.ru

Решение.

В системе координат Задачи линейного программирования - student2.ru построим граничные прямые Задачи линейного программирования - student2.ru ; Задачи линейного программирования - student2.ru ; Задачи линейного программирования - student2.ru ; Задачи линейного программирования - student2.ru ; Задачи линейного программирования - student2.ru .

Задачи линейного программирования - student2.ru

рис. 2.1

Каждая построенная прямая Задачи линейного программирования - student2.ru Задачи линейного программирования - student2.ru , делит всю плоскость на две полуплоскости. Определим полуплоскости, координаты точек, которых удовлетворяют соответствующему неравенству. Так как ни одна из прямых не проходит через начало координат, то для определения нужной полуплоскости возьмем точку Задачи линейного программирования - student2.ru .

Например, координаты точки Задачи линейного программирования - student2.ru удовлетворяют неравенству (2.3), т.к. Задачи линейного программирования - student2.ru . Следовательно, искомая полуплоскость та, которая содержит точку Задачи линейного программирования - student2.ru Координаты точки Задачи линейного программирования - student2.ru не удовлетворяют неравенству (2.6), т.к. Задачи линейного программирования - student2.ru . Следовательно, искомая полуплоскость та, которая не содержит точку Задачи линейного программирования - student2.ru

Отметив для каждого неравенства область решений, найдем пересечение всех отмеченных областей, получим выпуклый пятиугольник Задачи линейного программирования - student2.ru . Область Задачи линейного программирования - student2.ru лежит в первой четверти, следовательно, найдена область неотрицательных решений системы неравенств (2.3) –(2.7).

Задача № 2.2.

На множестве неотрицательных решений системы неравенств

Задачи линейного программирования - student2.ru (2.8)

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

1) Задачи линейного программирования - student2.ru ;

2) Задачи линейного программирования - student2.ru ;

3) Задачи линейного программирования - student2.ru .

Решение.

Областью неотрицательных решений системы неравенств (2.8) является выпуклый пятиугольник Задачи линейного программирования - student2.ru (см. решение предыдущей задачи).

1) Построим нулевую линию уровня Задачи линейного программирования - student2.ru : Задачи линейного программирования - student2.ru ( Задачи линейного программирования - student2.ru ). Прямая Задачи линейного программирования - student2.ru проходит через начало координат перпендикулярно вектору нормали Задачи линейного программирования - student2.ru .

Построим вектор-градиент Задачи линейного программирования - student2.ru .

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

Определим координаты точки Задачи линейного программирования - student2.ru : Задачи линейного программирования - student2.ru . Решим систему Задачи линейного программирования - student2.ru Задачи линейного программирования - student2.ru Задачи линейного программирования - student2.ru . Отсюда оптимальное решение Задачи линейного программирования - student2.ru , при этом Задачи линейного программирования - student2.ru .

2) Построим нулевую линию уровня Задачи линейного программирования - student2.ru : Задачи линейного программирования - student2.ru ( Задачи линейного программирования - student2.ru ). Прямая Задачи линейного программирования - student2.ru проходит через начало координат перпендикулярно вектору нормали Задачи линейного программирования - student2.ru .

Направлением наискорейшего убывания функции Задачи линейного программирования - student2.ru , будет направление обратное вектору Задачи линейного программирования - student2.ru . Поэтому оптимальным решением задачи будет первая точка соприкосновения линии уровня Задачи линейного программирования - student2.ru с областью допустимых решений, т.е. точка Задачи линейного программирования - student2.ru (рис. 2.3). Координаты точки Задачи линейного программирования - student2.ru найдем из условия Задачи линейного программирования - student2.ru . Решим систему Задачи линейного программирования - student2.ru Задачи линейного программирования - student2.ru Задачи линейного программирования - student2.ru . Следовательно, оптимальное решение Задачи линейного программирования - student2.ru , при этом Задачи линейного программирования - student2.ru

Задачи линейного программирования - student2.ru

Рис. 2.2 рис. 2.3

Задачи линейного программирования - student2.ru

Рис. 2.4

3) Построим нулевую линию уровня Задачи линейного программирования - student2.ru : Задачи линейного программирования - student2.ru ( Задачи линейного программирования - student2.ru ). Прямая Задачи линейного программирования - student2.ru проходит через начало координат перпендикулярно вектору нормали Задачи линейного программирования - student2.ru .

Направление наискорейшего возрастания функции Задачи линейного программирования - student2.ru , будет определять вектор Задачи линейного программирования - student2.ru . Передвигая линию уровня Задачи линейного программирования - student2.ru , от нулевой Задачи линейного программирования - student2.ru в направление вектора Задачи линейного программирования - student2.ru заметим, что решением задачи будет весь отрезок Задачи линейного программирования - student2.ru (рис. 2.4), так как линии уровня Задачи линейного программирования - student2.ru параллельны отрезку Задачи линейного программирования - student2.ru . Следовательно, решением задачи будет множество точек Задачи линейного программирования - student2.ru , где Задачи линейного программирования - student2.ru ; Задачи линейного программирования - student2.ru Задачи линейного программирования - student2.ru .

Координаты точки Задачи линейного программирования - student2.ru известны: Задачи линейного программирования - student2.ru . Определим координаты точки Задачи линейного программирования - student2.ru : Задачи линейного программирования - student2.ru . Решим систему Задачи линейного программирования - student2.ru Задачи линейного программирования - student2.ru Задачи линейного программирования - student2.ru .

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

Задача № 2.3.

Задачу ЛП решить графически:

Задачи линейного программирования - student2.ru

Задачи линейного программирования - student2.ru (2.9)

Задачи линейного программирования - student2.ru .

Решение.

В системе координат Задачи линейного программирования - student2.ru построим граничные прямые Задачи линейного программирования - student2.ru ; Задачи линейного программирования - student2.ru ; Задачи линейного программирования - student2.ru . Решением системы неравенств будет выпуклая не ограниченнная многоугольная область. На рис. 2.5 область неотрицательных решений системы (2.9) отмечена штриховкой.

Задачи линейного программирования - student2.ru

Рис.2.5

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

Задача № 2.4.

Найти область неотрицательных решений системы неравенств

а) Задачи линейного программирования - student2.ru (2.10) в) Задачи линейного программирования - student2.ru . (2.11)

Решение.

а) Решением системы неравенств (2.10) является точка А(4;6) (рис. 2.6).

в) Система неравенств (2.11) не имеет решения (рис. 2.7).

       
  Задачи линейного программирования - student2.ru
    Задачи линейного программирования - student2.ru
 

Рис.2.6 рис. 2.7

Задача № 2.5.

Решить задачу №1.1 графически.

Решение.

В задаче №1.1 построена модель задачи ЛП:

Задачи линейного программирования - student2.ru

Задачи линейного программирования - student2.ru (2.12)

Задачи линейного программирования - student2.ru .

Необходимо спланировать объемы производства Задачи линейного программирования - student2.ru продукции вида Задачи линейного программирования - student2.ru и вида Задачи линейного программирования - student2.ru таким образом, чтобы максимизировать прибыль Задачи линейного программирования - student2.ru , не выходя за рамки производственных возможностей, заданных системой (2.12).

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

В системе координат Задачи линейного программирования - student2.ru построим граничные прямые: Задачи линейного программирования - student2.ru ; Задачи линейного программирования - student2.ru ; Задачи линейного программирования - student2.ru ; Задачи линейного программирования - student2.ru . Областью допустимых решений системы ограничений (2.12) будет шестиугольник Задачи линейного программирования - student2.ru . Координаты всех точек, лежащих внутри и на границе шестиугольника Задачи линейного программирования - student2.ru удовлетворяют системе неравенств (2.12). Шестиугольник Задачи линейного программирования - student2.ru - это область производственных возможностей. Любая точка шестиугольника Задачи линейного программирования - student2.ru , соответствует объемам производства продукции Задачи линейного программирования - student2.ru и Задачи линейного программирования - student2.ru , для которых имеющихся в наличии ресурсов будет достаточно. Наша задача из всех точек, принадлежащих множеству производственных возможностей выбрать ту, которая соответствует наибольшему значению прибыли, получаемой при реализации всей произведенной продукции.

2) Построим вектор-градиент Задачи линейного программирования - student2.ru . Через начало координат перпендикулярно вектору Задачи линейного программирования - student2.ru проведем нулевую линию уровня Задачи линейного программирования - student2.ru : Задачи линейного программирования - student2.ru ( Задачи линейного программирования - student2.ru ). Прямая Задачи линейного программирования - student2.ru с областью производственных возможностей имеет только одну общую точку О(0;0), которая соответствует нулевым объемам производства.

Задачи линейного программирования - student2.ru

рис. 2.8

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

Строя линии уровня Задачи линейного программирования - student2.ru в направлении Задачи линейного программирования - student2.ru , будем получать линии равных производственных возможностей, т.е. при разных объемах производства значение прибыли вдоль всей линии Задачи линейного программирования - student2.ru будет постоянно. Чем северо-восточней расположена линия уровня, тем большему значению прибыли она соответствует.

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

3) Определим координаты точки Задачи линейного программирования - student2.ru : Задачи линейного программирования - student2.ru . Решим систему Задачи линейного программирования - student2.ru Задачи линейного программирования - student2.ru Задачи линейного программирования - student2.ru .

Отсюда оптимальное решение Задачи линейного программирования - student2.ru , при этом Задачи линейного программирования - student2.ru .

Ответ: Оптимальные объемы производства продукции Задачи линейного программирования - student2.ru - 10 единиц; продукции Задачи линейного программирования - student2.ru - 6 единиц. Прибыль, получаемая при реализации всей изготовленной продукции, составит 58 д.е.

Задачи для самостоятельного решения:

Задача № 2.6.

На множестве неотрицательных решений системы неравенств

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

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

1) Задачи линейного программирования - student2.ru ;

2) Задачи линейного программирования - student2.ru ;

3) Задачи линейного программирования - student2.ru .

Задача № 2.7.

Задачу ЛП решить графически:

Задачи линейного программирования - student2.ru

Задачи линейного программирования - student2.ru

Задачи линейного программирования - student2.ru .

Задача № 2.8.

Задачу ЛП решить графически:

Задачи линейного программирования - student2.ru

Задачи линейного программирования - student2.ru

Задачи линейного программирования - student2.ru .

Задача № 2.9.

Задачу ЛП решить графически:

Задачи линейного программирования - student2.ru

Задачи линейного программирования - student2.ru

Задачи линейного программирования - student2.ru .

Задача № 2.10.

Решить графически задачу № 1.2.

Задача № 2.11.

Решить графически задачу № 1.11.

Задача № 2.12.

Решить графически задачу № 1.19.

Симплексный метод

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

Но на практике число опорных решений может быть достаточно велико. Существует алгоритм, позволяющий на каждом шаге получать решения, по крайней-мере не хуже, чем на предыдущем шаге. Такой перебор позволяет сократить число шагов. Данный метод называется симплексным методом.

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

Симплексный метод предусматривает три основных элемента:

1) способ определения какого-либо первоначального базисного решения задачи;

2) правило перехода к лучшему (по крайней мере, к не худшему) решению;

3) критерий проверки оптимальности найденного решения.

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

Критерий оптимальности решения при отыскании максимума (минимума) целевой функции в задаче ЛП: если в выражении целевой функции через свободные переменные отсутствуют положительные (отрицательные) коэффициенты при свободных переменных, то решение оптимально.

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