|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Решение задач линейного программирования симплекс-методом4.7.1. Идея симплекс-метода. Как отмечалось в п.4.1?, допустимая область задачи линейного программирования (заданной в любой форме: стандартной, канонической, общей) представляет собой многогранное множество, а решение задачи (если оно существует) находится в одной или нескольких его вершинах (и если в нескольких, – то и на всей грани, содержащей эти вершины). Исходя из этого, можно было бы предложить метод решения задачи линейного программирования, заключающийся в переборе всех вершин многогранного множества и сравнении значения целевой функции в них. Решением задачи была бы та вершина (те вершины и содержащая их грань), где значение целевой функции максимально (минимально). Однако такой способ решения для реальных экономических задач, содержащих большое число переменных и ограничений, практически неприемлем. Напомним, что вершиной многогранного множества в
Тогда для нахождения вершин допустимого множества нужно решить всевозможные системы линейных уравнений, содержащие Кроме того, необходимо каким-то образом установить, что решение задачи вообще существует. Это необходимо сделать, поскольку может случиться так, что мы найдем вершину, в которой целевая функция принимает наилучшее значение среди всех вершин, однако функция не ограничена на допустимом множестве и решения не существует. Но идея целенаправленного перебора нашла свое воплощение в так называемом симплекс-методе (или симплексном методе). Эта идея была реализована в 1947 году американским математиком Джорджем Данцигом. Решение задачи линейного программирования симплекс-методом осуществляется в два этапа: · на первом этапе находится одна из вершин многогранного множества – точка, удовлетворяющая всем ограничениям задачи, т.е. некоторое допустимое решение; · на втором этапе осуществляется последовательное улучшение найденного решения путем перехода от данной вершины к одной из соседних вершин с лучшим значением целевой функции. Если такой вершины не окажется и, кроме того, значение функции не может улучшаться неограниченно, процесс завершается, поскольку в последней вершине находится наилучшее решение – любое движение от нее только ухудшает значение целевой функции (см. рис.1).
При этом возможны два вырожденных случая: 1) если многогранное множество не ограничено, то задача может (но не обязательно) не иметь решения: можно двигаться вдоль ребра многогранного множества, улучшая значение целевой функции до бесконечности, не встречая вершины (см. рис.2).;
2) соседние вершины (одна или несколько) имеют такое же значение целевой функции, как и достигнутое; в этом случае, если мы двигаемся в сторону нестрогого улучшения целевой функции (чтобы не потерять ни одного решения), может произойти зацикливание алгоритма – мы будем бесконечно переходить от одной вершины к другой и обратно с равными значениями целевой функции (см. рис.3).
Алгоритм симплекс-метода учитывает оба этих случая: в первом случае он выдает информацию об отсутствии решения задачи; во втором – предпринимаются специальные меры, исключающие зацикливание. 4.7.2. Понятие симплекса. Название «симплекс-метод» происходит от слова «симплекс». Определение Выпуклой оболочкой Например, выпуклой оболочкой невыпуклого четырехугольника
Очевидно, выпуклой оболочкой выпуклого множества будет само это множество (доказать!) Определение Пусть Проиллюстрируем данное определение на примерах. Пусть Пусть
Заметим, что симплекс – выпуклое, замкнутое, ограниченное множество. Посмотрим, какое отношение имеет симплекс к методу решения задач линейного программирования. Как уже отмечалось в п. 4.1?, для решения задачи симплекс-методом задачу линейного программирования необходимо представить в канонической форме: все функциональные ограничения задачи должны иметь вид равенств и все переменные должны быть неотрицательны:
Каждое функциональное ограничение Множество функциональных ограничений представляет собой систему Пусть имеем одно ограничение:
В первом случае мы имеем дело с одномерным симплексом, во втором – допустимое множество не ограничено (симплексом не является). Пусть имеем одно ограничение:
В случае треугольника имеем двумерный симплекс. В остальных – неограниченное множество. Пусть имеем два ограничения:
Таким образом, мы видим, что допустимая область в задаче линейного программирования, заданной в канонической форме, либо не ограничена, либо представляет собой симплекс. В связи с этим следует отметить, что возможный вид допустимых областей в задачах линейного программирования, заданных в канонической форме, весьма специфичен и значительно менее разнообразен, чем в задачах, заданных в стандартной форме. Так, например, если в двумерной задаче (на плоскости) каноническая форма допускает лишь отрезки и лучи, то стандартная форма – любые выпуклые многоугольники и неограниченные выпуклые многоугольные множества. Обратим внимание также, что на рис. 1 – 3 приведены иллюстрации для задач, ограничения в которых записаны в виде неравенств, поскольку любое ограничение в виде равенства снижает размерность допустимой области (как минимум) на единицу, а значит, в этом случае на плоскости могут быть только линии, в трехмерном пространстве – плоские фигуры (да и то не всякие) или линии. Отметим также, что для одной и той же (по сути) задачи линейного программирования размерность (число переменны) ее канонической формы всегда не ниже размерности стандартной формы. Чаще всего при моделировании экономической задачи ограничения задаются в виде неравенств. Проиллюстрируем на простейшем примере различие в виде допустимых множеств для задачи линейного программирования, заданной в стандартной и канонической формах. Пример Пусть имеем задачу линейного программирования в стандартной форме (рис.10а):
Стандартный перевод ее в каноническую форму даст (рис.10б):
Как видно из рис.10, размерность допустимой области для задачи, заданной в стандартной форме, совпадает с размерностью пространства («плоский» треугольник на плоскости), а размерность допустимой области для задачи, заданной в канонической форме, на единицу меньше размерности пространства («плоский» треугольник в трехмерном пространстве). 4.7.3. Пример решения задачи симплекс-методом. Для иллюстрации идейной стороны симплекс-метода продемонстрируем работу его алгоритма (в упрощенном варианте) на решении простой задачи с графической иллюстрацией его шагов. Пример 1 Пусть имеем задачу линейного программирования в стандартной форме:
Изобразим допустимое множество (рис.11). Очевидно, оно будет неограниченным.
Приведем задачу к каноническому виду. Для этого из левых частей функциональных ограничений-неравенств вычтем неотрицательные невязки
Обратим внимание, что если в точке Описанная манипуляция совершается таким образом, чтобы, во-первых, не выйти за пределы допустимого множества, а, во-вторых, чтобы значение целевой функции при этом улучшалось (в нашей задаче – уменьшалось). Для сокращения объема записей необходимые вычисления можно оформлять в виде таблиц. Чтобы проиллюстрировать существо метода и его формальную сторону будем каждый шаг алгоритма сопровождать тремя действиями: 1) показом на графике, 2) фактическими расчетами на системе ограничений и 3) манипуляцией на таблице. Для этого перепишем задачу (3) в виде (то, что мы функцию минимизируем и все переменные неотрицательны, будем помнить, а записывать не будем):
или, что то же самое (нужно для заполнения таблицы):
Кроме того, составим соответствующую таблицу коэффициентов (см.табл.1). Таблица 1
Итак, сначала нужно попасть в допустимое множество (шаг 1). Шаг 1. Начнем движение из начала координат – точка Как попасть в допустимое множество? Будем двигаться вдоль какой-либо из осей в положительном направлении в надежде попасть в некоторую вершину допустимого множества. Заметим, что это не всегда удается, а именно – если допустимое множество не имеет общих точек с осями. Очевидно, указанное движение целесообразно только в том случае, если коэффициент при соответствующей переменной в уравнении из (4) положителен (в таблице, наоборот, – отрицателен). В противном случае мы только уменьшим базисную переменную, стоящую в левой части равенства. Если же в строке с отрицательным значением Что означает такое движение формально? Это означает, что одну из координат мы начинаем увеличивать, причем увеличиваем ее до тех пор, пока все переменные не станут неотрицательными. Попробуем увеличивать переменную Таблично это оформляется так: коэффициенты из столбца Строка с наибольшим из полученных положительных значений помечается и называется разрешающей строкой. Элемент, стоящий на пересечении разрешающей строки и разрешающего столбца, называется разрешающим элементом. Если все полученные значения отрицательны, это значит, что на данной оси нет точек из допустимого множества. Тогда следует попробовать двигаться по другой оси.
Таблица 2
Если при движении по всем осям получаются только отрицательные значения, то это значит, что допустимое множество не имеет с осями координат общих точек. В этом случае применяются другие методы попадания в допустимую область, с которыми можно ознакомиться, например, в [ ]. Таким образом, мы можем увеличивать значение
Соответствующие преобразования в таблице осуществляются по следующим правилам: 1. Разрешающий элемент 2. Остальные элементы разрешающей строки остаются без изменения. 3. Остальные элементы разрешающего столбца умножаются на (-1); 4. Все оставшиеся элементы преобразуются по формуле 5. Все элементы полученной таблицы делятся на В нашем случае после преобразований 1 – 4 получаем (см. табл.3): Таблица 3
После преобразования 5 будем иметь (см. табл.4): Таблица 4
Шаг 2. Поскольку мы уже попали в вершину допустимой области, т.е. получили опорное решение, перейдем теперь к процессу уменьшения значения целевой функции. По рис.11 видно, что мы можем двигаться либо в точку Возьмем, например,
причем одно из них должно выполняться как равенство. Значит,
Для таблицы это означает, что мы выбрали в качестве разрешающего столбца столбец ( Таблица 5
После выбора разрешающего элемента проводим преобразования 1 – 4 (см. табл.6): Таблица 6
После преобразования 5 будем иметь (см. табл.7): Таблица 7
Шаг 3. Каквидно из таблиц 4 и 7, значение целевой функции после выполнения шага 2 уменьшилось с 640 до 520. Посмотрим, можем ли мы еще уменьшить ее значение. Из (7) видно, что уменьшить ее значение можно за счет увеличения значения переменной
т.е. значение переменной Таким образом,
Для таблицы это означает, что мы выбрали в качестве разрешающего столбца столбец (
После выбора разрешающего элемента проводим преобразования 1 – 4 (см. табл.9): Таблица 9
После преобразования 5 будем иметь (см. табл. 10): Таблица 10
Из выражения для целевой функции в (8) видно, что увеличение (от нуля) значения свободных переменных приведет только к увеличению значения целевой функции. А значит, мы достигли ее глобального минимума. То же самое видно из последней таблицы: все коэффициенты при свободных переменных отрицательны в записи вида (5), где все знаки перед коэффициентами противоположные по сравнению с (8). Значение же целевой функции записано в клетке Следует отметить, что в настоящее время при практических расчетах никто таблицами уже не пользуется, поскольку алгоритм симплекс-метода, а также другие методы решения задач линейного программирования имеют компьютерную реализацию, включенную во многие широко распространенные стандартные и специальные программные системы. В частности, средства решения задач линейного программирования включены в состав системы Microsoft Excel – см. раздел 4.9.
Поиск по сайту: |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.574 сек.) |