Теоретическое введение
Введение
Линейное программирование - область математического программирования, посвященная теории и методам решения экстремальных задач, характеризующихся линейной зависимостью между переменными.
Программирование в управлении можно представить как процесс распределения ресурсов. Существует ряд различных методов, основанных на идеях математического программирования, однако, наиболее широкое применение нашел метод линейного программирования.
Применение методов линейного программирования актуально в сегодняшнее время, так как использование математических моделей является важным направлением совершенствования планирования и анализа деятельности компании. Представление данных в виде математической модели позволяет конкретизировать информацию, создавать и моделировать варианты, выбирать оптимальные решения.
Цель курсовой работы - на практическом примере продемонстрировать использование методов линейного программирования.
Задачи работы обусловлены ее целью:
Во-первых, раскрыть теоретическое содержание данной темы.
Во-вторых, сформулировать и найти оптимальное решение задач
I. Задачи линейного программирования
Что же такое линейное программирование? Это один из первых и наиболее подробно изученных разделов математического программирования. Именно линейное программирование явилось тем разделом, с которого начала развиваться сама дисциплина «математическое программирование.
Можно сказать, что линейное программирование применимо для построения математических моделей тех процессов, в основу которых может быть положена гипотеза линейного представления реального мира: экономических задач, задач управления и планирования, оптимального размещения оборудования и пр.
Задачами линейного программирования называются задачи, в которых линейны как целевая функция, так и ограничения в виде равенств и неравенств. Кратко задачу линейного программирования можно сформулировать следующим образом: найти вектор значений переменных, доставляющих экстремум линейной целевой функции при m ограничениях в виде линейных равенств или неравенств.
Линейное программирование представляет собой наиболее часто используемый метод оптимизации. К числу задач линейного программирования можно отнести задачи:
рационального использования сырья и материалов; задачи оптимизации раскроя;
оптимизации производственной программы предприятий;
оптимального размещения и концентрации производства;
составления оптимального плана перевозок, работы транспорта;
управления производственными запасами;
и многие другие, принадлежащие сфере оптимального планирования.
1. Симплексный метод
Симплекс метод - это характерный пример итерационных вычислений, используемых при решении большинства оптимизационных задач. В вычислительной схеме симплекс-метода реализуется упорядоченный процесс, при котором, начиная с некоторой исходной допустимой угловой точки (обычно начало координат), осуществляются последовательные переходы от одной допустимой экстремальной точки к другой до тех пор, пока не будет найдена точка, соответствующая оптимальному решению.
Симплекс-метод, известный также в нашей литературе под названием метода последовательного улучшения плана, впервые разработал Г.Данциг в 1947 г. Этот метод позволяет переходить от одного допустимого базисного решения к другому, причем так, что значения целевой функции непрерывно возрастают. В результате оптимальное решение находят за конечное число шагов.
Симплекс метод - универсальный метод для решения линейной системы уравнений или неравенств и линейного функционала.
Общая идея симплексного метода (метода последовательного улучшения плана) для решения ЗЛП (задачи линейного программирования) состоит:
- умение находить начальный опорный план;
- наличие признака оптимальности опорного плана;
-умение переходить к не худшему опорному плану.
Алгоритм
Симплекс-метод подразумевает последовательный перебор всех вершин области допустимых значений с целью нахождения той вершины, где функция принимает экстремальное значение. На первом этапе находится какое-нибудь решение, которое улучшается на каждом последующем шаге. Такое решение называется базисным.
Первый шаг. В составленной таблице сначала необходимо просмотреть столбец со свободными членами. Если в нем имеются отрицательные элементы, то необходимо осуществить переход ко второму шагу, если же нет, то к пятому.
Второй шаг. На втором шаге необходимо определиться, какую переменную исключить из базиса, а какую включить, для того, что бы произвести перерасчет симплекс-таблицы. Для этого просматриваем столбец со свободными членами и находим в нем отрицательный элемент. Строка с отрицательным элементом будет называться ведущей. В ней находим максимальный по модулю отрицательный элемент, соответствующий ему ‑
столбец - ведомый. Если же среди свободных членов есть отрицательные значения, а в соответствующей строке нет, то такая таблица не будет иметь решений. Переменная в ведущей строке, находящаяся в столбце свободных членов исключается из базиса, а переменная, соответствующая ведущему столбцу включается в базис. В Таблице 1.1 приведен пример симплекс-таблицы.
Таблица 1.1 –Пример симплекс-таблицы
базисные переменные | Свободные члены в ограничениях | Небазисные переменные | |||||
x1 | x2 | ... | xl | ... | xn | ||
xn+1 | b1 | a11 | a12 | ... | a1l | ... | a1n |
xn+2 | b2 | a21 | a22 | ... | a2l | ... | a2n |
… | … | ... | ... | ... | ... | ... | ... |
… | … | … | … | … | … | … | … |
… | ... | ... | ... | ... | ... | ... | ... |
xn+r | b2 | ar1 | ar2 | ... | arl | ... | arn |
… | … | … | … | … | … | … | … |
… | ... | ... | ... | ... | ... | ... | ... |
… | … | … | … | … | … | … | … |
xn+m | bm | am1 | am2 | ... | aml | ... | amn |
F(x)max | F0 | -c1 | -c2 | ... | -c1 | ... | -cn |
Третий шаг. На третьем шаге пересчитываем всю симплекс-таблицу по специальным формулам.
Четвертый шаг. Если после перерасчета в столбце свободных членов остались отрицательные элементы, то переходим к первому шагу, если таких нет, то к пятому.
Пятый шаг. Если Вы дошли до пятого шага, значит нашли решение, которое допустимо. Однако, это не значит, что оно оптимально. Оптимальным оно будет только в том случае, если положительны все элементы в F-строке. Если же это не так, то необходимо улучшить решение, для чего находим для следующего перерасчета ведущие строку и столбец по следующему алгоритму. Первоначально, находим минимальное отрицательное число в строке F, исключая значение функции. Столбец с этим числом и будем ведущим. Для того, что бы найти ведущую строку, находим отношение соответствующего свободного члена и элемента из ведущего столбца, при условии, что они положительны. Минимальное отношение позволит определить ведущую строку. Вновь пересчитываем таблицу по формулам, т.е. переходим к шагу 3.
Шестой шаг. Если невозможно найти ведущую строку, так как нет положительных элементов в ведущем столбце, то функция в области допустимых решений задачи не ограничена сверху и F max->∞. Если в строке F и в столбце свободных членов все элементы положительные, то найдено оптимальное решение.
Обобщение
При построении симплексного метода предполагалось, что все опорные планы невырожденные, что обеспечивало получение оптимального плана за конечное количество шагов. В случае вырожденного плана вычисления производят аналогично, но в этом случае возможен возврат к старому базису, что приводи к так называемому зацикливанию.
В целом, метод отражает традиционные черты общего подхода к решению задач линейного программирования, включающего в себя канонизацию условий задачи, расчёт симплекс- разностей, проверку условий оптимальности.
Графический метод
Теоретическое введение
Графический метод довольно прост и нагляден для решения задач линейного программирования с двумя переменными. Он основан на геометрическом представлении допустимых решений и ЦФ задачи.
Каждое из неравенств задачи линейного программирования определяет на координатной плоскости х1Ох2 некоторую полуплоскость (рис.2.1), а система неравенств в целом – пересечение соответствующих плоскостей. Множество точек пересечения данных полуплоскостей называется областью допустимых решений (ОДР). ОДР всегда представляет собой выпуклую фигуру, т.е. обладающую следующим свойством: если две точки А и В принадлежат этой фигуре, то и весь отрезок АВ принадлежит ей. ОДР графически может быть представлена выпуклым многоугольником, неограниченной выпуклой многоугольной областью, отрезком, лучом, одной точкой. В случае несовместности системы ограничений задачи ОДР является пустым множеством.
Все вышесказанное относится и к случаю, когда система ограничений включает равенства, поскольку любое равенство аi1x1+ai2x2=bi
можно представить в виде системы двух неравенств (см. рис.2.1)
аi1x1+ai2x2≤bi
аi1x1+ai2x2≥bi
ЦФ L(x)=c1x1+c2x2 при фиксированном значении L(x)=L определяет на плоскости прямую линию c1x1+c2x2=L. Изменяя значения L, мы получим семейство параллельных прямых, называемых линиями уровня.
Это связано с тем, что изменение значения L повлечет изменение лишь длины отрезка, отсекаемого линией уровня на оси Ox2 (начальная ордината), а угловой коэффициент прямой tg a= останется постоянным (см.рис.2.1). Поэтому для решения будет достаточно построить одну из линий уровня, произвольно выбрав значение L.
Вектор C̅=(c1, c2) с координатами из коэффициентов ЦФ при x1 и x2 перпендикулярен к каждой из линий уровня (см. рис.2.1). Направление вектора C̅ совпадает с направлением возрастания ЦФ, что является важным моментом для решения задач. Направление убывания ЦФ противоположно направлению вектора C̅.
Суть графического метода заключается в следующем. По направлению (против направления) вектора в ОДР производится поиск оптимальной точки x=(x1 , x2). Оптимальной считается точка, через которую проходит линия уровня L max (L min ), соответствующая наибольшему (наименьшему) значению функции L(x). Оптимальное решение всегда находится на границе ОДР, например, в последней вершине многоугольника ОДР, через которую пройдет целевая прямая, или на всей его стороне.
При поиске оптимального решения задач линейного программирования возможны следующие ситуации: существует единственное решение задачи; существует бесконечное множество решений (альтернативный оптимум); ЦФ не ограничена; область допустимых решений – единственная точка; задача не имеет решений.
Рисунок 2.1 Геометрическая интерпретация ограничений и ЦФ задачи.