Автор: Пользователь скрыл имя, 13 Ноября 2011 в 11:38, реферат
Математическое программирование – это прикладная отрасль математики, которая является теоретической основой решения задач оптимального планирования.
В зависимости от природы множества X задачи математического программирования классифицируются как:
задачи дискретного программирования (или комбинаторной оптимизации) — если X конечно или счетное;
задачи целочисленного программирования — если X является подмножеством множества целых чисел;
задачи нелинейного программирования, если ограничения или целевая функция содержат нелинейные функции и X является подмножеством конечномерного векторного пространства;
задачи линейного программирования, если ограничения и целевая функция содержат только линейные функции.
Введение 3
История возникновения математического программирования 5
Линейное программирование 5
Решение задач линейного программирования 8
Задача линейного целочисленного программирования 8
Задача линейного программирования 10
Понятие критерия оптимальности 12
Симплекс-метод 13
Метод потенциалов 17
Венгерский метод 21
Метод полного исключения Жордана 24
Графический метод 26
Решение задачи оптимизации методом линейного программирования 31
Постановка задачи 31
Решение задачи 31
Заключение 35
Список использованной литературы: 36
Алгоритм
симплекс-метода:
1).
Записать задачу в
2).
Разделить переменные на
3). Выразить базисные переменные через свободные: решить систему линейных уравнений (ограничений-неравенств) – относительно базисных переменных;
4).
Проверить неотрицательность
5).
Выразить функцию цели через
свободные переменные: базисные
переменные, входящие в функцию,
выразить через свободные
6). Вычислить полученное базисное решение и функцию цели на нем: приравнять к 0 свободные переменные;
7).
Проанализировать формулу
8).
Определить включаемую в базис
и исключаемую из базиса
9).
Используя новое разделение
Формальная
модель задачи линейного программирования
обычно задается в форме, так называемой,
симплекс-таблицы, удобной для выполнения
операций симплекс-метода:
1 | X1 | X2 | … | Xm | Xm+1 | … | Xn | |
X0 | A0,0 | 0 | 0 | … | 0 | A0,m+1 | … | A0,n |
X1 | A1,0 | 1 | 0 | … | 0 | A1,m+1 | … | A1,n |
X2 | A2,0 | 0 | 1 | … | 0 | A2,m+1 | … | A1,n |
… | … | … | … | … | … | … | … | … |
Xm | Am,0 | 0 | 0 | … | 1 | Am,m+1 | … | Am,n |
Верхняя
строка симплекс-таблицы представляет
целевую функцию задачи. Каждая строка
симплекс-таблицы, кроме первой, соответствует
определенному ограничению-
На начальном
шаге алгоритма симплекс-метода должно
быть выбрано базисное допустимое решение
(X1, ..., Xm) ≥ 0 при Xj = 0 (j
= m+1, ..., n), следовательно, все свободные
члены ограничений Ai,0
≥ 0 (i = 1, ..., m). Когда это условие выполнено,
симплекс-таблица называется прямо-допустимой,
так как в этом случае базисные переменные,
равные Ai,0 , определяют допустимое
решение прямой задачи линейного программирования.
Если все коэффициенты целевой функции
A0,j ≥ 0 (j = 1, ..., m), то симплекс-таблица
называется двойственно-допустимой, поскольку
соответствующее решение является допустимым
для двойственной задачи линейного программирования.
Если симплекс-таблица является одновременно
прямо и двойственно допустимой, т.е. одновременно
все Ai,0 ≥ 0 и A0,j
≥ 0, то решение оптимально.
Поскольку
допустимыми являются лишь неотрицательные
значения управляемых параметров, то изменение
целевой функции за счет вариации свободных
переменных, через которые она выражена,
возможно только в сторону увеличения,
т.e. будет ухудшаться. Если среди ее коэффициентов
имеются A0,j < 0, то значение целевой
функции еще можно уменьшить (т.e. улучшить),
увеличивая значение любой свободной
переменной Xj с отрицательным коэффициентом
A0,j при побочном уменьшении базисных
переменных, чтобы оставались справедливы
ограничения задачи. Вообще можно использовать
любую свободную переменную Xj
с A0,j <0, но на практике обычно действуют
в соответствии со стратегией наискорейшего
спуска, выбирая минимальный элемент A0,p
< 0 из всех отрицательных A0,j
:
Столбец p симплекс-таблицы, соответствующий выбранному коэффициенту A0,p < 0, называется ведущим столбцом. Свободная переменная ведущего столбца должна быть введена в базис вместо одной из текущих базисных переменных. Очевидно, из базиса следует исключить такую переменную Xq, которая раньше других обращается в нуль при увеличении переменной Xp ведущего столбца. Ее индекс легко определить, если среди положительных элементов ведущего столбца p найти элемент, удовлетворяющий условию:
.
Элемент Aq,p называется ведущим элементом, cтрока q симплекс-таблицы, содержащая ведущий элемент, называется, соответственно, ведущей строкой. Переменная ведущей строки Xq заменяется в базисе переменной ведущего столбца Xp и становится свободной переменной с значением 0, в то время как новая базисная переменная Xp достигнет максимально возможного значения, равного:
.
После указанного взаимообразного обмена переменными Xp и Xq между наборами свободных и базисных переменных нужно модифицировать исходную каноническую модель задачи путем приведения ее к диагональной форме относительно нового множества базисных переменных. Для указанного преобразования можно формально использовать процедуру исключения Гаусса, которая состоит из двух элементарных операций, применяемых к системе алгебраических уравнений:
Исключения Гаусса позволяют привести систему уравнений к диагональной форме относительно желаемого множества переменных. В данном случае исключение Гаусса применяется так, чтобы все элементы симплекс-таблицы в ведущем столбце, кроме ведущего элемента Aq,p, стали нулевыми, а ведущий элемент стал равным единице:
Ai,p = 0, если i ≠ q ,
Ai,p = 1, если i = q.
Указанные
шаги симплекс-метода повторяются, пока
не будет получена симплекс-таблица,
которая одновременно является прямо
и двойственно допустимой. Если в такой
симплекс-таблице текущие базисные переменные
будут равными Ai,0, а свободные - нулю,
то будет получено оптимальное решение.
Определение
значения целевой функции и переменных
в одной вершине называется итерацией.
Число итераций, требуемых для решения
задачи линейного программирования, обычно
колеблется от 2m до 3m, хотя для некоторых
специально построенных задач вычисления
по правилам симплекс-метода превращаются
в прямой перебор базисных допустимых
решений. Однако трудные для симплекс-метода
задачи на практике встречаются крайне
редко, что объясняет широкое распространение
и большую популярность данного метода
линейного программирования по сравнению
с другими подходами.
Метод
потенциалов
Метод потенциалов впервые предложили Л. В. Канторович и М. К. Гавурин в 1949 г. Позже аналогичный метод разработал Г. Данциг, исходя из общих идей ЛП.
Метод
потенциалов позволяет, исходя из некоторого
опорного плана, построить за конечное
число итераций решение задачи.
На предварительном этапе строят начальный опорный план и составляют матрицу:
,
где - предварительные потенциалы пунктов:
.
Предварительный этап. С помощью известного метода (например северо-западного угла или минимального элемента) определяют начальный опорный план Х0 и вычисляют предварительные потенциалы:
.
По найденному опорному плану Х0 строят схему из основных коммуникаций плана. Основные коммуникации Pij плана - это те, которым отвечают базисные компоненты плана, т.е. коммуникации для которых > 0. Далее образуют следующие множества: J1 - множество индексов всех пунктов Bj, которые связаны с пунктом А1 основными коммуникациями; І1 - множество индексов тех пунктов Аі, которые связаны основными коммуникациями с множеством J1; J2 - множество пунктов Bj, которые связаны основными коммуникациями с множеством І1 и т.д. Образование таких множеств Ік продолжаем до тех пор, пока не получим пустое множество.
Поскольку на выполнение условий оптимальности оказывают влияние лишь разности то за начало отсчета (нуль) можно принять потенциал любого из пунктов.
Полагаем для определенности и вычислим систему потенциалов относительно А1. Тогда где . После того как потенциалы всех пунктов найдены, строим матрицу:
Очевидно,
позиции матрицы С1, отвечающие
базисным элементам плана Х0, будут
заняты нулями. Если матрица С1 не
содержит отрицательных элементов, то
Х0 - оптимальный план. В противном
случае Х0 - неоптимальный план, который
может быть улучшен. Тогда переходим к
выполнению однотипных итераций.
(k+1)-ая
итерация. Каждая итерация, кроме первой,
где отсутствует первый этап, состоит
из двух этапов. Предположим, что уже проведено
k итераций (k=1,2,...), в результате которых
получен план Хk и вспомогательная
матрица Сk. Цель (k+1)-й итерации -
построение матрицы Сk+1, а также
либо установление оптимальности плана
Хk, либо нахождение более экономичного
плана Xk+1.
Первый
этап. Вычисляют матрицу Сk+1. Преобразование
матрицы Сk в матрицу Сk+1
состоит в следующем. Выбирают наибольший
по модулю отрицательный элемент Сk.
Пусть это элемент
. Тогда вычеркивают (или выделяют)
строку λ, в которой он содержится. Просматривают
эту строку и отыскивают множество существенных
его элементов. Хk -существенными
элементами называют те элементы
, которые отвечают базисным элементам
плана Хk т.е. для которых
. Вычеркивают столбцы, которые содержат
эти элементы. Далее просматривают вычеркнутые
столбцы и ищут в них новые существенные
элементы, которые лежат в строках отличных
от уже вычеркнутых ранее. Если такие элементы
имеются, то вычеркивают строки, в которых
они содержатся. Процесс выделения продолжают
до тех пор, пока очередное множество
новых существенных элементов не окажется
пустым. Поскольку каждые строка и столбец
не могут быть выделены дважды, то весь
процесс заканчивается не более чем за
шагов. Далее строят матрицу Сk+1.
Для этого величину
прибавляют ко всем элементам выделенных
строк и вычитают из элементов всех выделенных
столбцов матрицы Сk. При этом все
существенные элементы матрицы Сk
остаются равными нулю, а кроме того, в
нуль превращается и элемент
.
Если
все элементы матрицы Сk+1
окажутся неотрицательными, то Xk
- оптимальный план, и на этом процесс заканчивается.
В противном случае переходят ко второму
этапу.
Второй этап. Цель этого этапа - построить более экономичный план Хk+1. Выбирают наибольший по модулю отрицательный элемент матрицы Сk+1. Пусть это элемент . Строят цепочку из положительных элементов плана, которая замыкается на . После того, как цепочка построена, в ней находят минимальный нечетный по порядку следования элемент:
Прибавляют ко всем четным элементам (по порядку следования) цепочки и к элементу и вычитают из всех нечетных элементов. Остальные элементы Хk оставляют без изменения.
Новый план Хk+1 построен. Он является базисным, так как число его ненулевых элементов не изменилось.
Пусть Lk - транспортные издержки, отвечающие плану Хk. Тогда новое значение целевой функции, отвечающее плану Xk+1, находят по соотношению
.
Так как и , то . Поэтому Хk+1 - улучшенный опорный план.