
- •1. Теоретические основы. Двойственный симплекс метод.
- •Алгоритм симплекс-метода:
- •2. Практическая задача
- •2.1 Постановка задачи
- •2.2 Решение задачи
- •3. Разработка программного обеспечения
- •3.1 Входные данные
- •3.2 Выходные данные
- •3.3 Основные функции программного обеспечения
- •3.4 Блок-схема
- •3.5 Интерфейс программы
- •3.6 Руководство по эксплуатации
- •4. Проведение исследования
- •Заключение
- •Список используемой литературы
- •Приложение
Оглавление
Введение.........................................................................................................................................................................................2
1. Теоретические основы. Двойственный симплекс-метод.....................................................................3
2. Практическая задача.................................................................................................................................11
2.1 Постановка задачи......................................................................................................................11
2.2 Решение задачи...........................................................................................................................12
3. Разработка программного обеспеченья..................................................................................................15
3.1 Входные данные.........................................................................................................................15
3.2 Выходные данные......................................................................................................................15
3.3 Основные функции программного обеспечения....................................................................15
3.4 Блок-схема...................................................................................................................................16
3.5 Интерфейс программы...............................................................................................................17
3.6 Руководство по эксплуатации...................................................................................................18
4. Проведение исследований.......................................................................................................................20
Заключение....................................................................................................................................................21
Список используемой литературы..............................................................................................................22
Приложение...................................................................................................................................................23
Введение
Симплекс-метод – это один специализированных методов оптимизации, нацеленный на решение задач линейного программирования. Он был предложен американцем Г. Данцигом в 1951 г.
Симплекс-метод состоит в продвижении по выпуклому многограннику ограничений от вершины к вершине, при котором на каждом шаге значение целевой функции улучшается до тех пор, пока не будет достигнут оптимум.
Существует ручное решение двух задач симплекс-методом с подробными объяснениями для того, чтобы понять алгоритм решения задач симплекс-методом. В первом случае задача содержит знаки неравенства только " ≤ " (задача с начальным базисом), во втором случае задача может содержать знаки " ≥ ", " ≤ " или " = " (задача с искусственным базисом), они решаются по-разному.
Обычно выделяют особые случаи при которых применяется симплекс-метод:
1) Когда прямая, представляющая целевую функцию параллельна прямой, соответствующей одному из неравенств-ограничений целевая функция, принимает одно и тоже оптимальное значение на некотором множестве точек границы области допустимых решений. Эти решения называются альтернативными оптимальными решениями. Наличие альтернативных решений можно определить по оптимальной симплекс-таблице. Если в z-строке оптимальной таблицы есть нулевые коэффициенты небазисных переменных, то есть альтернативные решения.
2) Если в разрешающем столбце симплекс-таблицы все коэффициенты меньше или равны нуль, то нельзя выбрать разрешающую строку, в этом случае решение неограниченно.
3) Если ограничения задачи линейного программирования несовместны, то задача не имеет допустимых решений. Такая ситуация не может возникнуть, если все неравенства, составляющие систему ограничений, имеют тип " ≤ " с неотрицательными правыми частями, т.к. в этом случае дополнительные переменные могут составить допустимое решение. Для других типов ограничений используются искусственные переменные. Если задача имеет решение, то в оптимальной таблице в базисе нет искусственных переменных (Ri). Если они там есть, то задача не имеет решений.
1. Теоретические основы. Двойственный симплекс метод.
Общая формулировка задачи линейного программирования.
Пусть задана система m линейных алгебраических уравнений с n неизвестными:
(1.1)
и линейная функция относительно переменных х1, х2, ¼, хn:
(1.2)
Требуется найти такие неотрицательные значения переменных х1, х2, ¼, хn, которые бы удовлетворяли системе линейных уравнений (1.1) и, кроме того, обращали в максимум линейную функцию (1.2).
Заметим, что если по условиям задачи требуется отыскать минимум функции L, записанной в виде (1.2), то задачу можно свести к задаче максимизации функции L¢, связанной с функцией L так:
L¢ = - L = -c1x1 - c2x2 - ¼ - cnxn. (1.3)
Максимум функции (1.3) и минимум функции (1.2) будут достигаться при одном и том же наборе переменных (х1, х2, ¼, хn), удовлетворяющих условиям неотрицательности переменных и уравнениям (1.1), областью определения задачи.
Допустимым решением задачи линейного программирования будем называть любую совокупность переменных
х1 ³ 0, х2 ³ 0, ¼ , хn ³ 0,
удовлетворяющих уравнениям (1.1).
Оптимальным решением будем называть то из допустимых решений, для которого линейная форма L обращается в максимум (минимум).
Двойственная задача линейного программирования.
Пусть задана каноническая задача ЛП
(2.1)
Если целевая функция f(x) = cx достигает максимального значения на множестве D, то обоснованным представляется вопрос о том, каким образом можно построить верхнюю оценку для нее. Очевидно, что если через и обозначить некоторый m-мерный вектор, то
cx = cx+u(-Ax+b) = (c-uA)x+bu
Предположим, что и можно выбрать таким образом, чтобы иА ≥ с. Тогда при любых х≥0 справедливо неравенство
сх≤bи (2.2)
Стремясь получить наилучшую оценку (2.2), мы приходим к формулировке некоторой новой экстремальной задачи, которая в некотором смысле логически сопряжена с задачей (2.1) и называется двойственной. Оговоримся, что приведенные рассуждения не носят строгого характера и предназначены только для того, чтобы подготовить читателя к приводимому ниже формальному определению двойственной задачи линейного программирования.
Если задана каноническая задача ЛП
то задача ЛП
называется двойственной по отношению к ней. Соответственно, задача (D, f) no отношению к (D*, f*) называется прямой (или исходной).
Приведенное выше определение задачи, двойственной по отношению к канонической ЗЛП, может быть распространено на случай общей задачи линейного программирования.
Если задана общая задача ЛП
где D определяется системой уравнений и неравенств
то двойственной по отношению к ней называется общая задача ЛП
где D* определяется системой уравнений и неравенств
Как следует из приведенной схемы при переходе от прямой задачи ЛП к двойственной:
1. Тип оптимума меняется на противоположный, т. е. максимум на минимум, и наоборот.
2. Вектор коэффициентов целевой функции c и столбец ограничений b меняются местами.
3. Матрица ограничений задачи А транспонируется.
4. Множество индексов переменных, на которые наложено условие неотрицательности в прямой задаче (например, хj≥0 или ui≥0), определяют номера ограничений, имеющих форму неравенств в двойственной задаче (аjи≥сj или aix≤bi).
5. Множество номеров ограничений, имеющих форму неравенств в прямой задаче (например, aix≤bi или аjи≥сj), определяют множество индексов переменных, на которые накладывается условие неотрицательности, в двойственной задаче (ui≥0 или хj≥0).
Из приведенного определения вытекает важное свойство — симметричность отношения двойственности, т. е. задача, двойственная по отношению к двойственной, совпадает с прямой (исходной) задачей:
((D*)*, (f*)*)≡(D, f),
Тем самым имеет смысл говорить о паре взаимно двойственных задач.
В матричной форме пара двойственных общих задач линейного программирования может быть кратко записана как:
и
Каждой задаче линейного программирования соответствует так называемая двойственная задача. В ней по сравнению с исходной задачей строки переходят в столбцы, неравенства меняют знак, вместо максимума ищется минимум (или наоборот, вместо минимума - максимум). Задача, двойственная к двойственной - эта сама исходная задача. Сравним исходную задачу (слева) и двойственную к ней (справа):
45Х1+80Х2 → max, 400W1+450W2 → min ,
5Х1+20Х2≤400, 5W1+10W2≥45,
10Х1+15Х2≤450, 20W1+15W2≥80,
Х1≥0, W1≥0,
Х2≥0. W2≥0.
Почему двойственная задача столь важна? Можно доказать, что оптимальные значения целевых функций в исходной и двойственной задачах совпадают (т.е. максимум в исходной задаче совпадает с минимумом в двойственной). При этом оптимальные значения W1 и W2 показывают стоимость материала и труда соответственно, если их оценивать по вкладу в целевую функцию. Чтобы не путать с рыночными ценами этих факторов производства, W1 и W2 называют "объективно обусловленными оценками" сырья и рабочей силы.
Материал взят из книги Акулича "Математическое программирование в примерах и задачах".