Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 8 лет назад пользователемАхмед Абдуллаев
2 алгоритм решения оптимизационной задачи л инейного программирования путём перебора вершин выпуклого многогранника в многомерном пространстве.оптимизационной линейного программирования
3 Описание Алгоритм симплекс-метода Двухфазный симплекс-метод Модифицированный симплекс-метод Мультипликативный вариант симплекс-метода Другие варианты симплекс-метода Двойственный симплекс-метод Вычислительная эффективность
4 Задача линейного программирования состоит в том, что необходимо максимизировать или минимизировать некоторый линейный функционал на многомерном пространстве при заданных линейных ограничениях.линейного программирования линейный функционал
5 Заметим, что каждое из линейных неравенств на переменные ограничивает полупространство в соответствующем линейном пространстве. В результате все неравенства ограничивают некоторый многогранник (возможно, бесконечный), называемый также полиэдральным комплексом.полиэдральным комплексом
6 Усиленная постановка задачи Алгоритм
7 Рассмотрим следующую задачу линейного программирования:линейного программирования Теперь поставим эту задачу в эквивалентной усиленной форме. Необходимо максимизировать Z, где:
8 Здесь x переменные из исходного линейного функционала, x s новые переменные, дополняющие старые таким образом, что неравенство переходит в равенство, c коэффициенты исходного линейного функционала, Z переменная, которую необходимо максимизировать.
9 Теперь приведём шаги алгоритма. На каждом шаге мы будем менять множества простых и непростых векторов (двигаться по рёбрам), и матрица будет иметь следующий вид:
10 Выбираем начальное допустимое значение, как указано выше. На первом шаге B единичная матрица, так как простыми переменными являются x s. c B нулевой вектор по тем же причинам.
11 Покажем, что в выражении только непростые переменные имеют ненулевой коэффициент. Заметим, что из выражения простые переменные однозначно выражаются через непростые, так как число простых переменных равно числу уравнений. Пусть простые, а непростые переменные на данной итерации.
12 Уравнение можно переписать, как Умножим его на слева: Таким образом мы выразили простые переменные через непростые, и в выражении эквивалентному левой части равенства, все простые переменные имеют единичные коэффициенты
13 Поэтому, если прибавить к равенству равенство то в полученном равенстве все простые переменные будут иметь нулевой коэффициент все простые переменные вида x сократятся, а простые переменные вида x s не войдут в выражение
14 Выберем ребро, по которому мы будем перемещаться. Поскольку мы хотим максимизировать Z, то необходимо выбрать переменную, которая будет более всех уменьшать выражение-
15 Для этого выберем переменную, которая имеет наибольший по модулю отрицательный коэффициент. Если таких переменных нет, то есть все коэффициенты этого выражения неотрицательны, то мы пришли в искомую вершину и нашли оптимальное решение. В противном случае начнём увеличивать эту непростую переменную, то есть перемещаться по соответствующему ей ребру. Эту переменную назовём входящей.
16 Теперь необходимо понять, какая простая переменная первой обратится в ноль по мере увеличения входящей переменной. Для этого достаточно рассмотреть систему:
17 При фиксированных значениях непростых переменных система однозначно разрешима относительно простых, поэтому мы можем определить, какая из простых переменных первой достигнет нуля при увеличении входящей. Эту переменную назовем выходящей. Это будет означать, что мы натолкнулись на новую вершину.
18 Теперь входящую и выходящую переменную поменяем местами входящая «войдёт» в простую, а выходящая из них «выйдет» в непростые. Теперь перепишем матрицу B и вектор c B в соответствии с новыми наборами простых и непростых переменных, после чего вернёмся ко второму шагу. x''
19 Поскольку число вершин конечно, то алгоритм однажды закончится. Найденная вершина будет являться оптимальным решением.
20 где c B коэффициенты вектора c, соответствующие простым переменным (переменным x s соответствуют 0), B столбцы, соответствующие простым переменным. Матрицу, образованную оставшимися столбцами обозначим D
21 Причины использования Модификация ограничений Фазы решения
22 Если в условии задачи линейного программирования не все ограничения представлены неравенствами типа «», то далеко не всегда нулевой вектор будет допустимым решением. Однако каждая итерация симплекс-метода является переходом от одной вершины к другой, и если неизвестно ни одной вершины, алгоритм вообще не может быть начат.
23 Процесс нахождения исходной вершины не сильно отличается от однофазного симплекс-метода, однако может в итоге оказаться сложнее, чем дальнейшая оптимизация.
24 Все ограничения задачи модифицируются согласно следующим правилам: ограничения типа «» переводятся на равенства созданием дополнительной переменной с коэффициентом «+1». Эта модификация проводится и в однофазном симплекс-методе, дополнительные переменные в дальнейшем используются как исходный базис.
25 ограничения типа «» дополняются одной переменной с коэффициентом «1». Поскольку такая переменная из- за отрицательного коэффициента не может быть использована в исходном базисе, необходимо создать ещё одну, вспомогательную, переменную.
26 Вспомогательные переменные всегда создаются с коэффициентом «+1». ограничения типа «=» дополняются одной вспомогательной переменной.
27 Различия между дополнительными и вспомогательными переменными
28 Несмотря на то, что и дополнительные, и вспомогательные переменные создаются искусственно и используются для создания исходного базиса, их значения в решении сильно отличаются:
29 дополнительные переменные сообщают, насколько соответствующее им ограничение «недоиспользовано». Значение дополнительной переменной, равное нулю, соответствует равенству значений правых и левых частей ограничения.
30 вспомогательные переменные сообщают, насколько данное условие далеко от допустимого (относительно конкретного ограничения). Если значение вспомогательной переменной больше нуля, то данное решение не выполняет определённое ограничение, а значит не является допустимым.
31 После того, как было модифицировано условие, создаётся вспомогательная целевая функция. Если вспомогательные переменные были обозначены, как y i, i {1,.., k}, то вспомогательную функцию определим, как
32 После этого проводится обыкновенный симплекс-метод относительно вспомогательной целевой функции. Поскольку все вспомогательные переменные увеличивают значение, в ходе алгоритма они будут поочерёдно выводится из базиса, при этом после каждого перехода новое решение будет всё ближе к множеству допустимых решений.
33 В модифицированном методе матрица не пересчитывается, хранится и пересчитывается только матрица. В остальном алгоритм похож на вышеописанный. 1. Вычисляем двойственные переменные
34 Проверка оптимальности. преобразуется в. Проверка заключается в вычислении для всех столбцов. Столбец со значением < 0 можно вводить в базис.
35 Часто выбирают минимальное значение, но для этого нужно перебрать все столбцы. Чаще выбирают значение, меньшее некоторого заданного значения
36 Если такого столбца не обнаружится, за принимается максимальное найденное абсолютное значение и соответствующий столбец вводится в базис.
37 3. Определение выводимого. Пусть - вводимый столбец, соответствующий переменной Базисный план - это решение системы Увеличиваем. Умножим слева на, т.е. Здесь - базисный план, - разложение вводимого столбца по базису.
38 Находим максимальное значение, при котором все значения не отрицательны. Если может быть взято как угодно велико, решение не ограничено. В противном случае один из элементов выйдет на нулевое значение. Выводим соответствующий столбец из базиса.
39 4. Пересчет опорного(базисного) плана. Вычисляем новый опорный план по уже приведенной формуле с найденным значением.
40 5. Пересчитываем обратную к базисной. Пусть - выводимый столбец. Матрица B представима в виде где - базисная матрица без выводимого столбца. После замены столбца базисная матрица будет иметь вид Нам нужно найти матрицу, такую что
41 => => => Откуда Замечание. При пересчете матрицы накапливаются ошибки округления. Во избежание получения больших ошибок время от времени матрица пересчитывается полностью. Этот процесс называется "повторением".
42 В мультипликативном варианте матрица не хранится, хранятся лишь множители При решении экономических задач часто матрица ограничений разреженная, в таком случае мультипликативный вариант получает дополнительные преимущества - можно хранить мультипликаторы в сжатом виде (не хранить нули).разреженная
43 Во избежание накопления ошибок округления может использоваться LU- разложение матрицы.LU- разложение При подавляющем числе ограничений типа "неравенство" может быть использован метод переменного базиса. [3] [3] Метод основан на том, что базисная матрица может быть представлена в виде
44 Обратная к ней имеет вид При относительно небольших размерах матрицы остальная часть матрицы может не храниться. Таким подходом удается решить задачи с десятками миллионов строк ограничений (например, из теории игр).
45 Для реализации двойственного метода необходимо перейти от задачи на минимум к задаче на максимум (или наоборот) путем транспонирования матрицы коэффициентов. При переходе от задачи на минимум целевая функция примет вид: при ограничениях
46 Теорема двойственности. Если из пары двойственных задач одна обладает оптимальным планом, то и другая имеет решение, причем экстремальные значения линейных функций этих задач равны. Если линейная функция одной из задач не ограничена, то другая не имеет решения.
47 Симплекс-метод удивительно эффективен на практике, но в 1972 Кли и Минти [4] привели пример, в котором симплекс-метод перебирал все вершины симплекса, что показывает экспоненциальную сходимость метода в худшем случае. С тех пор для каждого варианта метода был найден пример, на котором метод вел себя исключительно плохо. [4]
48 Наблюдения и анализ эффективности метода в практических приложениях привело к развитию других способов измерения эффективности. Симплекс-метод имеет среднюю полиномиальную сходимость при широком выборе распределения значений в случайных матрицах. [5][6]полиномиальную сходимость [5][6] Вычислительная эффективность оценивается обычно при помощи двух параметров:
49 1) Числа итераций, необходимого для получения решения; 2) Затрат машинного времени. В результате численных экспериментов получены результаты:
50 1) Число итераций при решении задач линейного программирования в стандартной форме с ограничениями и переменными заключено между и. Среднее число итераций.Верхняя граница числа итераций равна. 2) Требуемое машинное время пропорционально.
51 Число ограничений больше влияет на вычислительную эффективность, чем число переменных, поэтому при формулировке задач линейного программирования нужно стремиться к уменьшению числа ограничений пусть даже путём роста числа переменных.
52 Спасибо за внимание
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.