Алгоритмы решения
Наиболее известным и широко применяемым на практике для решения общей задачи линейного программирования (ЛП) является симплекс-метод. Несмотря на то, что симплекс-метод является достаточно эффективным алгоритмом, показавшим хорошие результаты при решении прикладных задач ЛП, он является алгоритмом с экспоненциальной сложностью. Причина этого состоит в комбинаторном характере симплекс-метода, последовательно перебирающего вершины многогранника допустимых решений при поиске оптимального решения.
Первый полиномиальный алгоритм, метод эллипсоидов, был предложен в 1979 году советским математиком Л. Хачияном, разрешив таким образом проблему, долгое время остававшуюся нерешённой. Метод эллипсоидов имеет совершенно другую, некомбинаторную, природу, нежели симплекс-метод. Однако в вычислительном плане этот метод оказался неперспективным. Тем не менее, сам факт полиномиальной сложности задач привёл к созданию целого класса эффективных алгоритмов ЛП — методов внутренней точки, первым из которых был алгоритм Н. Кармаркара, предложенный в 1984 году. Алгоритмы этого типа используют непрерывную трактовку задачи ЛП, когда вместо перебора вершин многогранника решений задачи ЛП осуществляется поиск вдоль траекторий в пространстве переменных задачи, не проходящих через вершины многогранника. Метод внутренних точек, который, в отличие от симплекс-метода, обходит точки из внутренней части области допустимых значений, использует методы логарифмических барьерных функций нелинейного программирования, разработанные в 1960-х годах Фиако (Fiacco) и МакКормиком (McCormick).
Графический метод решения задачи линейного программирования
основан на геометрической интерпретации задачи линейного программирования и применяется в основном при решении задач двумерного пространства и только некоторых задач трёхмерного пространства, так как довольно трудно построить многогранник решений, который образуется в результате пересечения полупространств. Задачу пространства размерности больше трёх изобразить графически вообще невозможно.
Описание метода
Пусть задача линейного программирования задана в двумерном пространстве, то есть ограничения содержат две переменные.
Найти минимальное значение функции
при ограничениях вида
и
Допустим,
что система (2) при условии (3) совместна.
Каждое из неравенств из систем (2) и (3)
определяет
полуплоскость
с
граничными
прямыми:
.
Линейная
функция
(1) при
фиксированных значениях
является
уравнением
прямой
линии:
.
Пример графического решения задачи линейного программирования с 6 условиями.
Построим
многоугольник решений системы ограничений
(2) и график
линейной
функции
(1) пр
.
Тогда поставленной задаче линейного
программирования можно дать
следующую интерпретацию:
Найти точку многоугольника решений, в которой прямая опорная и функция при этом достигает минимума.
Значения
уменьшаются
в направлении вектора
,
поэтому прямую
передвигаем
параллельно самой себе в направлении
вектора
.
Если многоугольник решений
ограничен (см. рисунок), то прямая дважды
становится опорной по отношению к
многоугольнику решений (в точках
и
),
причём минимальное значение принимает
в точке
.
Координаты точки
находим,
решая систему
уравнений прямых
и
.
Если же многоугольник решений представляет собой неограниченную многоугольную область, то возможны два случая.
Случай 1. Прямая , передвигаясь в направлении вектора или противоположно ему, постоянно пересекает многоугольник решений и ни в какой точке не является опорной к нему. В этом случае линейная функция не ограничена на многоугольнике решений как сверху, так и снизу.
Случай 2. Прямая, передвигаясь, всё же становится опорной относительно многоугольника решений. Тогда в зависимости от вида области линейная функция может быть ограниченной сверху и неограниченной снизу, ограниченной снизу и неограниченной сверху, либо ограниченной как снизу, так и сверху.
