- •Н. В. Алексенко р. И. Воробьева
- •Оглавление
- •Введение
- •1. Основные методы решения задач линейного программирования
- •1.1. Введение в линейное программирование
- •1.1.1. Общая задача оптимизации
- •1.1.2. Задачи линейного программирования
- •1.1.3. Стандартная и каноническая задачи линейного программирования
- •1.2. Графический метод решения задачи линейного программирования
- •1.3. Симплекс-метод
- •1.3.1. Идея симплекс-метода
- •1.3.2. Алгоритм симплекс-метода
- •Алгоритм симплекс-метода
- •Алгоритм поиска первоначального опорного плана
- •1.4. Двойственность в линейном программировании
- •1.4.1. Постановка двойственной задачи
- •1.4.2. Теоремы двойственности
- •1.4.3. Двойственный симплекс-метод
- •1.4.4. Экономическая интерпретация задачи, двойственной задаче об использовании ресурсов
- •Исходная задача
- •Двойственная задача
- •1.5. Вопросы для самопроверки
- •2.1. Постановка задачи
- •2.2. Построение первоначального опорного плана транспортной задачи методом наименьших затрат
- •2.3. Проверка найденного опорного плана на оптимальность
- •2.4. Переход от одного опорного плана транспортной задачи к другому
- •2.5. Альтернативный оптимум
- •2.6. Открытая модель транспортной задачи
- •2.7. Приложение транспортной задачи к решению некоторых экономических задач
- •2.8. Вопросы для самопроверки
- •3. Целочисленное программирование
- •3.1. Общая постановка задачи
- •3.2. Метод отсечения Гомори
- •3.3. Графический метод решения задачи целочисленного программирования
- •3.4. Вопросы для самопроверки
- •4. Теория игр
- •4.1. Основные понятия
- •4.2. Решение игр 2 х 2 в смешанных стратегиях графическим способом
- •4.3. Решение игр 2 х n графическим способом
- •4.4. Решение игры n х 2 графическим способом
- •4.5. Сведение матричной игры m X n к задаче линейного программирования (решение любой матричной игры)
- •Функции дохода
- •6.2. Способы представления графов
- •6. 3. Некоторые задачи теории графов
- •6.3.1. Поиск кратчайшего пути в графе
- •Алгоритм поиска кратчайшего пути
- •6.3.2. Поиск кратчайшего гамильтонова цикла
- •6.4. Вопросы и задачи для самопроверки
- •7. Оптимизация сетевого графика
- •7. 1. Сетевая модель. Основные понятия
- •7.2. Основные требования к сетевому графику
- •7.3. Расчет временных параметров сетевого графика
- •7.3.1. Расчет параметров событий
- •Учитывая введенное в п.7.1 определение критического пути и введенные формулы (7.1–7.3), можно записать алгоритм нахождения критического пути.
- •7.3.2. Расчет параметров работ
- •7.3.3. Сетевое планирование в условиях неопределенности
- •7.4. Вопросы и задачи для самопроверки
- •8. Решение задач на компьютере
- •8.1. Решение задач с использованием системы Mathcad
- •8.2. Решение задач линейного программирования с помощью приложения Excel
- •Заключение
- •Библиографический список
- •Приложение
- •Алексенко Наталья Владимировна
- •Воробьева Раиса Ивановна
- •Математика
- •Основные задачи
- •Математического программирования
- •И реализация их на компьютере
- •644099, Омск, ул. Красногвардейская, 9
1.1.3. Стандартная и каноническая задачи линейного программирования
Наиболее часто встречаются две разновидности задачи линейного программирования.
1. Стандартная задача ЛП, когда система S состоит только из неравенств и условий неотрицательности.
.
Примером могут служить рассмотренные выше задачи об оптимальном плане, о банке, о рационе.
2. Каноническая задача ЛП, когда система S состоит только из уравнений и условий неотрицательности переменных.
Указанные
две разновидности легко сводятся одна
к другой. Стандартную задачу легко
свести к канонической введением
дополнительных неотрицательных
переменных
Добавив
к левой части неравенства
;
к левой части неравенства
и
т. д., мы получим каноническую задачу:
Если мы решим каноническую задачу, а затем отбросим дополнительные переменные, то получим решение стандартной задачи.
П
(балансовое
ограничение),
(кредитное
ограничение),
(ликвидное
ограничение).
|
|
|
средства, размещенные в кредитах и ценных бумагах соответственно |
|
|
Приведем задачу к стандартному виду:
Введем
дополнительные неотрицательные
переменные
и получим каноническую задачу ЛП:
1.2. Графический метод решения задачи линейного программирования
Наша цель – изложить методы решения задач линейного программирования. Наиболее простым и наглядным методом линейного программирования является графический метод. Он применяется для решения задач ЛП с двумя переменными, заданными в неканонической форме (не обязательно стандартной), и для задач ЛП с многими переменными в канонической форме при условии, что они содержат не более двух свободных переменных.
Пусть дана задача ЛП с двумя переменными:
где
# – один из знаков
.
Переведем
эту задачу на графический язык. Допустимый
план
представляет собой точку на плоскости
Из аналитической геометрии известно,
что прямая
делит
координатную плоскость
на две полуплоскости так, что координаты
точек одной из них удовлетворяют
неравенству
,
а другой – неравенству
.
Таким образом каждое из неравенств
определяет полуплоскость, а область X
всех допустимых планов (ОДП) – пересечение
полуплоскостей, соответствующих каждому
неравенству, т. е. ОДП представляет собой
некоторую выпуклую область на плоскости
.
В каждой точке области допустимых планов
целевая функция f
принимает определенное числовое
значение. Требуется найти точку или
набор точек ОДП, в которых функция f
достигает
наибольшего (или наименьшего) значения.
Для нахождения экстремального значения
целевой функции при графическом решении
задач ЛП используется вектор – градиент,
обозначим его
Этот вектор показывает направление
наискорейшего роста целевой функции,
он равен
т. е. координатами вектора
в нашем случае являются коэффициенты
целевой функции
Рассмотрим
линию уровня целевой функции, т. е. линию,
вдоль которой f
сохраняет
постоянное значение:
Так как это уравнение линейное, то
соответствующая линия – прямая на
плоскости
.
При изменении уровня прямая смещается
параллельно самой себе. Параллельно
перемещая линию уровня по направлению
вектора
,
будем увеличивать уровень, а в направлении,
противоположном
,
уровень будет уменьшаться. Как известно,
линия уровня перпендикулярна вектору
– градиенту. Перемещение линии уровня
производится до тех пор, пока у неё не
окажется только одна общая точка с ОДП.
Эта точка, определяющая единственное
решение задачи ЛП и будет точкой
экстремума функции f.
Если
окажется, что линия уровня параллельна
одной из сторон ОДП, то в этом случае
экстремум достигается во всех точках
соответствующей стороны, и задача ЛП
будет иметь бесчисленное множество
решений. Говорят, что такая задача ЛП
имеет
альтернативный оптимум,
и все её решения
находятся по формулам:
где
и
– оптимальные решения в вершинах ОДП,
соответствующих указанной стороне.
Задача ЛП может быть неразрешимой, когда определяющие ее ограничения окажутся противоречивыми.
Может
оказаться, что целевая функция не
достигает экстремального значения в
области допустимых планов. В этом случае
линия уровня, перемещаясь в направлении
вектора
или в противоположном направлении,
всегда будет пересекать область
допустимых планов. Следовательно,
целевая функция будет неограниченно
возрастать или неограниченно убывать,
т. е.
или
Можно предложить следующий алгоритм графического решения задач ЛП.
Находим область допустимых планов X, решая графически систему ограничений.
Если X = , то задача неразрешима.
Если X , то рассматриваем линии уровня
при монотонном изменении
от
до
При увеличении
прямая
перемещается по направлению вектора
при уменьшении
в направлении,
противоположном
.
Среди линий уровня, имеющих общие точки
с областью допустимых планов Х, выбираем
линию с наибольшим уровнем, если решается
задача на максимум, и с наименьшим
уровнем, если решается задача на минимум.
Рассмотрим этот метод на нескольких примерах.
Пример 1. Задача о рационе. Ранее в п.1.1.2 мы формулировали эту задачу и составили её математическую модель:
Прежде, чем приступить к решению задачи, преобразуем систему ограничений, умножив второе и третье неравенства системы на 5. Получим:
Построим
область допустимых планов как пересечение
полуплоскостей,
определяемых неравенствами системы
ограничений. Для построения первой
полуплоскости строим граничную прямую
соответствующую неравенству
Эта прямая делит плоскость
на две полуплоскости. Для того, чтобы
определить полуплоскость, задаваемую
неравенством
,
берём произвольную точку, лежащую по
ту ли иную сторону от граничной прямой,
например точку О(0; 0) и подставляем
координаты этой точки в неравенство:
так как координаты точки О(0; 0) удовлетворяют
неравенству, то решением неравенства
будет полуплоскость, содержащая точку
О(0; 0). Направление полуплоскости на
рисунках будем показывать стрелкой
(рис.
1.2.1).
Затем
строим прямую
предварительно приведя это уравнение
к уравнению прямой в отрезках, делением
на 600:
Из этой записи видно, что прямая проходит
через точку (600; 0) оси
и точку (0; 600) оси
.
Теперь найдем полуплоскость, определяемую
неравенством
Для этого подставим координаты любой
точки, не лежащей на граничной прямой
в неравенство, для удобства вычисления
лучше брать точку (0; 0), если, конечно,
она не лежит на граничной прямой.
Подставим координаты точки О(0; 0) в
неравенство (2):
координаты точки (0; 0) не удовлетворяют
неравенству, следовательно, решением
неравенства
является полуплоскость, не содержащая
точку (0; 0).
Аналогично строим все остальные полуплоскости и как результат их пересечений – область Х допустимых планов, представляющую собой выпуклую область, отмеченную на рис.1.2.1 штриховкой.
Заметим, что условие неотрицательности переменных, т. е. неравенства (4) и (5), означает, что область Х лежит в первой координатной четверти. Поэтому можно было построить область, удовлетворяющую неравенствам (1), (2) и (3), а затем выбрать ту часть этой области, которая лежит в первой координатной четверти.
Построим
вектор – градиент целевой функции
:
Отложим
этот вектор из начала координат О(0; 0).
Перпендикулярно вектору
проведем линию уровня, например линию
,
т. е. прямую
.
Нас интересуют те
линии уровня
,
которые имеют общие точки с областью
допустимых планов Х. Если перемещать
линию уровня
параллельно самой себе в направлении
вектора
,
то при некотором значении уровня прямая
достигнет области допустимых планов.
Назовем эту точку – «точкой входа».
На рис. 1.2.1 видно, что «точкой входа» в область допустимых планов Х будет точка А(600; 0).
При дальнейшем перемещении линии уровня в этом же направлении уровень, т. е. значение целевой функции , будет расти.
Следовательно,
Ответ:
Минимальная стоимость рациона, включающего
в себя 600 единиц продукта П1
и не содержащего продукт П1,
составляет 1200 д. ед.; при этом потребление
вещества А составит минимально допустимую
норму 120 ед.(т. к. в точке А ограничение
(2) выполняется как равенство), а потребление
вещества В превысит минимально допустимую
норму на 80 ед. (т. к.
на
80).
Пример 2. Задача об оптимальном использовании ресурсов. Рассмотрим конкретную задачу об оптимальном использовании ресурсов (табл.1.2.1), рассмотренную в общем виде в п.1.1.2.
Таблица 1.2.1
Задача о ресурсах
-
P1
P2
Запасы
R1
1
1
150
R2
1
3
300
Прибыль
1
2
Математическая модель этой задачи имеет вид:
Область допустимых планов Х этой задачи изображена на рис. 1.2.2 и представляет собой выпуклый многоугольник OABC.
Строим
вектор
В направлении вектора
перемещаем линию уравнения
перпендикулярно этому вектору.
Точкой
«выхода» линии уровня из области
допустимых планов Х является точка В,
её координаты определяются как пересечение
прямых, заданных уравнениями
Решая
систему, получим координаты точки
соответствующей
оптимальному решению, т. е.
при этом
Таким образом, предприятие должно выпускать 75 единиц продукции первого вида (Р1) и 75 единиц продукции второго вида (Р2), при этом все сырье R1 и R2 будет полностью израсходовано, а прибыль от реализации продукции составит 225 д. е.
Уже на этих примерах можно видеть справедливость следующего утверждения: если задача линейного программирования разрешима, то оптимальное значение целевой функции достигается по крайней мере в одной из вершин области допустимых планов.
Рассмотренный в этом параграфе геометрический метод решения задач линейного программирования обладает рядом достоинств. Он прост, нагляден, позволяет быстро и легко получить ответ.
Однако при использовании этого метода возникают «технические» погрешности, которые неизбежно возникают при приближенном построении графиков. Второй недостаток геометрического метода заключается в том, что многие величины, имеющие четкий экономический смысл (такие, как остатки ресурсов, избыток питательных веществ и т. п.) не выявляются наглядно при геометрическом решении задач. Но самое главное – геометрический метод можно применить только в случае, когда число переменных в стандартной задаче равно двум. Если в задаче три и более переменных, а в реальных экономических задачах возникает именно такая ситуация, то наглядно представить себе область допустимых планов трудно. Поэтому необходимы аналитические методы, позволяющие решать задачи линейного программирования с любым числом переменных и выявить экономический смысл входящих в них величин. Эти методы будут рассмотрены в дальнейшем.
