Решение задач линейного программирования симплекс-методом.
Идея разработана русским ученым Канторовичем Л.В. в 1939 году. На основе этой идеи американский ученый Д. Данциг в 1949 году разработал симплекс-метод, позволяющий решить любую задачу линейного программирования.
Основные теоремы линейного программирования:
1. Если задача линейного программирования имеет оптимальное решение, то оно совпадает, по крайней мере, с одним из опорных решений системы ограничительных уравнений. Другими словами если задача линейного программирования имеет оптимальное решение, то оно совпадает, хотя бы с одной из вершин области системы ограничений.
2. Об альтернативном оптимуме. Если максимум или минимум линейной функции достигается в нескольких опорных решениях, то любое оптимальное решение есть выпуклая линейная комбинация оптимальных решений.
Геометрически интерпретация данной теоремы означает, что в случае альтернативного оптимума линии уровня проходят через две вершины области допустимых решений, в этом случае оптимальным решением становиться любая точка отрезка, соединяющего эти вершины.
Геометрическая интерпретация симплекс-метода:
Из приведенных выше основных теорем линейного программирования следует, что если задача линейного программирования имеет оптимальное решение, то оно соответствует хотя бы одной угловой точке многогранника решений и совпадает, по крайней мере, с одним из допустимых базисных решений системы ограничений.
На основании этого можно предложить достаточно простой метод решения задачи линейного программирования, который сводится к следующей принципиальной схеме:
· необходимо найти все опорные решения (точки многогранника), множество которых является конечным;
· Вычислить для каждого из опорных решений значение целевой функции;
· Сравнить значения целевой функции в каждом из опорных решений и выбрать оптимальное (максимальное или минимальное).
Теоретически данная схема приведет к нахождению оптимального решения, но практически ее существование связано с большими вычислительными трудностями. Даже в задаче с двумя переменными число опорных решений может оказаться очень большим, а при большом значении переменных оно может достигать огромных чисел и практически осуществление данного перебора станет невозможным. Эти вычислительные трудности возникают в результате того, что рассмотренная принципиальная схема связана с простым перебором опорных решений, т.н. в этой схеме не принимается во внимание тот факт, насколько новое испытуемое решение улучшает значение целевой функции и приближает нас к оптимальному решению.
Если же перебор опорных решений производить направленно, т.е. на каждом шаге улучшая ( или, по крайней мере, не ухудшая) значение целевой функции, то число перебираемых опорных решений можно резко сократить. При использовании такой схемы в отличие от первой, каждое последующее опорное решение выбирается таким образом, чтобы оно было лучше, ( или, по крайней мере , не хуже) предыдущего, именно поэтому на каждом из шагов значение целевой функции улучшается ( или, по крайней мере, не ухудшается)
Необходим метод направленного перебора точек, для практического применения метода направленного перебора необходимо знать:
1. Алгоритм определения какого-либо первоначального, допустимого решения.
2. Алгоритм перехода к лучшему или к не худшему решению.
3. Признак, указывающий на то, что найденное решение оптимально.
Симплекс-метод является методом направленного перебора.
Геометрически интерпретация симплекс метода состоит в последовательном переходе от одной вершины многогранника к другой (от первоначально выбранной вершины к одной из соседних вершин, а именно к той, у которой линейная функция принимает лучшее, или по крайней мере, не худшее значение). Этот процесс происходит до тех пор пока не будет найдено оптимальное решение – вершина, где достигается оптимальное решение функции (если задача имеет конечный оптимум).
Задачу симплекс-методом можно решить и аналитически, рассмотрим алгоритм решения.
Алгоритм симплекс-метода:
1. Выделяем исходный допустимый базис и заполняем первую симплекс-таблицу.
2. Если в последней строке, полученной таблицы кроме, быть может, первого числа нет положительных чисел, то базисное решение является оптимальным, задача решена.
3. Пусть среди указанных в п.2. чисел имеется положительное число, например в столбе xj , отмечаем этот столбец вертикальной стрелкой, просматриваем остальные числа столбца, если среди них нет положительных чисел, то минимум рассматриваемой функции равен бесконечности и задача решения не имеет.
4. Пусть среди просмотренных в п.3. чисел имеются положительные числа, для каждого из таких чисел a составляем отношение , где b – первое число в той же строке, т.е. свободный член. Из всех таких отношений выбираем наименьшее. Пусть оно соответствует строке для базисного переменного xi , отмечаем эту строку горизонтальной стрелкой. Число , стоящее в отмеченной строке и столбце и называется разрешающим элементом таблицы.
5. Переходим к новой таблице, для этого отмеченную строку умножаем на , чтобы на месте разрешающего элемента появилась 1, и пишем ее на месте прежней. В каждой из остальных строк таблицы прибавляем строку, полученную на месте полученной строки, умноженную на такое число, чтобы элемент, стоящий в отмеченном столбце обратился в 0. Полученную строку пишем на месте прежней.
6. С новой таблицей возвращаемся к выполнению пункта 2.
1. Рассмотрим пример решения задачи линейного программирования симплекс-методом.
f(x) = x4 – x5 min
Если в целевой функции нет базисных переменных, то выражаем ее
f(x) = x4 – x5 = 0
Строим первую симплекс-таблицу
Базовые переменные | Свободный член | х1 | х2 | х3 | х4 | х5 |
х1 | -2 | |||||
х2 | -2 | |||||
х3 | ||||||
f(x) | -1 |
Строим вторую симплекс-таблицу
Базовые переменные | Свободный член | х1 | х2 | х3 | х4 | х5 | |
х1 | -3 | ||||||
х5 | -2 | ||||||
х3 | 0,2 | -0,2 | 0,2 | ||||
f(x) | -2 | -1 |
Третья симплекс-таблица
Базовые переменные | Свободный член | х1 | х2 | х3 | х4 | х5 |
х1 | 5,6 | 1,4 | 0,6 | |||
х5 | 2,4 | 0,6 | 0,4 | |||
х4 | 0,2 | -0,2 | 0,2 | |||
f(x) | -2,2 | -0,8 | -0,2 |
Ответ:
f(x)min = -2,2, при
х1 = 5,6
х2 = 0
х3 = 0
х4 = 0,2
х5 = 2,4
2. Если в целевой функции имеются базисные неизвестные, возникает вопрос, как наиболее рационально находить выражения целевой функции через свободные неизвестные.
Пусть целевая функция первоначально имеет следующий вид
f(x) = c0 + c1x1 + c2x2 + … + cnxn min
Пусть мы выделили допустимый базис и заполнили симплекс-таблицу, кроме последней строки, допустим базис – х1, х2, х3, остальные – свободные члены.
с0 | с1 | с2 | … | cn | ||
Базовые переменные | Сводные члены | x1 | x2 | … | xn | |
c1 | x1 | |||||
c2 | x2 | |||||
c3 | x3 | |||||
f(x) | … | |||||
… | ||||||
Рассмотрим пример
f(x) = 2x1 – x2 min
~
-1 | |||||||
Базовые переменные | Сводные члены | x1 | x2 | x3 | x4 | x5 | |
x1 | -1 | ||||||
x4 | 6/2 | 0/0 | 3/1 | -1/ | 1/ | 0/0 | |
x5 | |||||||
f(x) | -2 | ||||||
-1 | |||||||
Базовые переменные | Сводные члены | x1 | x2 | x3 | x4 | x5 | |
x1 | -2/3 | -1/3 | |||||
-1 | x2 | -1/3 | 1/3 | ||||
x5 | 4/3 | -1/3 | |||||
f(x) | -1 | -1 |
Ответ:
f(x)min =2
x1 = 2
x2 = 2
x3 = 0
x4 = 0
x5 = 4
3. При решении задач линейного программирования симплекс-методом критерием оптимальности является условие
где - коэффициенты при неизвестных
Если на каком-либо шаге окажется, что хотя бы одна оценка свободной переменной равна 0, а остальные < 0 , то это является признаком того, что задача имеет альтернативный оптимум.
Мы принимаем в качестве ключевого столбца, где = 0 и ищем новое оптимальное решение. При этом значение целевой функции не измениться.
В этом случае если только одна оценка свободной переменной равна 0, то
, где
Если две оценки и более, например s свободных элементов равно 0, то оптимальное решение определяется по формуле
, где
Пример:
f(x) = 2x2 – 4x3 + 2x5 min
-4 | ||||||||
Базисныеые переменные | Сводные члены | x1 | x2 | x3 | x4 | x5 | ||
x1 | -1 | |||||||
x4 | 12/3 | 0/0 | -2/-0.5 | 4/1 | 1/0.25 | 2/0.5 | ||
f(x) | -2 | -2 | ||||||
-4 | ||||||||
Базовые переменные | Сводные члены | x1 | x2 | x3 | x4 | x5 | ||
x1 | 10/4 | 1/0.4 | 2.5/1 | 0.25/0.1 | 2.5/1 | |||
-4 | x3 | -0.5 | 0.25 | 0.5 | ||||
f(x) | -12 | -1 | -4 | |||||
f(x)min = -12, при
х1 = 10
х2 = 0
х3 = 3
х4 = 0
х5 = 0
-4 | ||||||||
Базовые переменные | Сводные члены | x1 | x2 | x3 | x4 | x5 | ||
x2 | 0.4 | 0.1 | ||||||
-4 | x3 | 0.2 | 0.3 | |||||
f(x) | -12 | -1 | -4 | |||||
f(x)min = -12, при
х1 = 0
х2 = 4
х3 = 5
х4 = 0
х5 = 0
х1 = 10 * t + (1 – t) * 0 = 10
х2 = 0 * t + (1 – t) * 4 = 4 – 4t
х3 = 3 * t + (1 – t) * 5 = 5 – 2t
х4 = 0
х5 = 0
f(x)min = -12, при
,
Дата добавления: 2015-05-13; просмотров: 2182;