- •Министерство образования и науки республики казахстан
- •А.У. Калижанова, н.И. Аманжолова, а.И. Ерзин, ю.А. Кочетов методы оптимизации и исследование операций Учебное пособие
- •Оглавление
- •Введение
- •1. Методы оптимизации
- •Общая задача линейного программирования
- •1.2. Графический метод решения задач линейного программирования.
- •1.3. Симплексный метод решения задачи линейного программирования
- •1.4. Отыскание оптимального плана. Условия оптимальности
- •1.5. Решение задач линейного программирования симплекс-методом.
- •1.6. Решение задач линейного программирования методом искусственного базиса
- •1.7. Двойственность в лп. Понятие двойственности
- •1.8. Транспортная задача линейного программирования
- •2. Построение остовных деревьев
- •2.1. Минимальное остовное дерево. Алгоритмы Прима, Краскала, Борувки
- •2.2. Остовные деревья и их приложения
- •2.3. Примеры и упражнения
- •3. Задачи построения кратчайших путей
- •3.1. Алгоритм Дейкстры
- •3.2. Алгоритм Беллмана – Форда
- •3.3. Алгоритм Флойда – Уоршелла
- •3.4. Примеры и упражнения
- •4. Задача штейнера
- •4.1. Постановки задачи Штейнера и ее сложность
- •4.2. Приближенные алгоритмы
- •4.3. Некоторые задачи синтеза сетей, использующие деревья Штейнера
- •4.4. Примеры и упражнения
- •5. Задача коммивояжера
- •5.1. Вычислительная сложность
- •5.2. Конструктивные алгоритмы
- •5.3. Нижние оценки
- •5.3.1. Примитивная нижняя оценка
- •Оценка линейного программирования
- •5.3.4. Задача о назначениях
- •Локальный поиск
- •5.4.1. Основные определения
- •5.4.2. Окрестности на перестановках
- •5.4.3. Окрестности Лина – Кернигана
- •5.4.4. Экспоненциальные окрестности
- •Метаэвристики
- •5.5.1. Алгоритм имитации отжига
- •5.5.2. Поиск с запретами
- •5.5.3. Локальный поиск с чередующимися окрестностями
- •5.5.4. Генетические алгоритмы
- •Упражнения
- •Библиографический список
- •А.У. Калижанова, н.И. Аманжолова, а.И. Ерзин, ю.А. Кочетов. Методы оптимизации и исследование операций
1.3. Симплексный метод решения задачи линейного программирования
Построение опорных планов. Доказано, что оптимальное решение задачи линейного программирования связано с угловыми точками многогранника решений, т. е. с опорными планами, каждый из которых определяется системой m линейно независимых векторов, содержащихся в данной системе из n векторов А1, А2, ..., Аn. Верхняя граница количества опорных планов, содержащихся в данной задаче, определяется числом сочетаний Сnm. При больших m и n найти оптимальный план, перебирая все опорные планы задачи, очень трудно. Поэтому необходимо иметь схему, позволяющую осуществлять упорядоченный переход от одного опорного плана к другому. Такой схемой является симплексный метод, который позволяет, исходя из известного опорного плана задачи, за конечное число шагов получить ее оптимальный план. Каждый из шагов (или итераций) состоит в нахождении нового плана, которому соответствует меньшее значение линейной функции, чем значение этой же функции в предыдущем плане. Процесс продолжают до получения оптимального плана. Если задача не обладает планами или ее линейная функция не ограничена на многограннике решений, то симплексный метод позволяет установить это в процессе решения.
1. Построение опорных планов
Пусть поставлена задача линейного программирования.
Найти минимальное значение функции Z = C1x1 + C2x2 + … + Cnxn при ограничениях:
|
|
где bi ³і 0 (I=1,2,…,m).
Предположим сначала, что система ограничений задачи содержит m единичных векторов, причем без ограничения общности можно положить, что единичными являются первые m векторов. Тогда необходимо минимизировать линейную функцию
|
(1.11) |
При ограничениях:
|
(1.12) |
|
(1.13) |
Запишем систему в векторной форме:
|
(1.14) |
где
Векторы
А1,
А2,
…, Аm
– линейно независимые единичные
векторы m-мерного пространства. Они и
образуют базис этого пространства.
Поэтому в разложении (1.14) за базисные
неизвестные выбираем х1,
х2,
..., хm,
свободные неизвестные хm+1,...,
хn
приравниваем нулю и, учитывая, что bi
³і
0 (i=1,2,…,m),
а векторы А1,
А2,...,
Аm
– единичные, получаем первоначальный
план:
Плану соответствует разложение
|
(1.15) |
где векторы А1,А2,…,Аm линейно независимы, следовательно, построенный первоначальный план является и опорным.
Рассмотрим, как, исходя из первоначального опорного плана, можно построить второй опорный план. Векторы А1,А2,…,Аm образуют базис в m-мерном пространстве, поэтому каждый из данных векторов соотношения можно разложить по векторам базиса, причем единственным образом:
Предположим, что для некоторого вектора, не входящего в базис, например для вектора Аm+1, является положительным хотя бы один из коэффициентов хi,m+1 в разложении
|
(1.16) |
Зададимся
некоторой величиной qq
> 0 (пока неизвестной), умножим на нее
обе части равенства (1.16) и вычтем результат
почленно из равенства (1.15). Получаем
Таким
образом, вектор
является планом, если его компоненты неотрицательны.
Так как qq>0, то все компоненты вектора Х1, в которые входят неположительные xi,m+1, неотрицательны. Поэтому надо рассмотреть только компоненты, включающие положительные хi,m+1 (i=1, 2, ...,m), т. е. необходимо определить такое qq>0, при котором для всех хi, m+1³і0.
Из неравенства хi-qq xi,m+1³і0 получаем qq£Јxi/xi,m+1, следовательно, вектор xi является планом задачи для любого qq, удовлетворяющего условию
|
(1.17) |
где минимум берется по i, для которых xi,m+1>0.
Опорный план не может содержать (m + 1) положительных компонент, поэтому в плане Х1 необходимо обратить в нуль по крайней мере одну из компонент. Положим в (1.17), что
тогда компонента плана X1, для которой достигается минимум, обращается в нуль. Пусть эта компонента стоит на первом месте, т. е.
Подставляя значение qq0 в (7), получаем разложение
которому, соответствует новый опорный план:
где хi' = xi - qq0xi,m+1 (i = 2, 3, ..., m), х'm+1 = qq0.
Исключение одного вектора из базиса и включение вместо него другого с помощью qq0 соответствуют переходу от одного базиса к другому с помощью метода Жордана – Гаусса, поэтому система векторов А2, А3,…, Аm, Аm+1 линейно независима и является новым базисом.
Для определения следующего опорного плана необходимо любой вектор, не входящий в базис А2, А3, ..., Аm, Аm+1, разложить по векторам этого базиса, а затем определить такое qq0 > 0, при котором исключался бы один из векторов этого базиса.
Таким образом, процесс получения новых опорных планов заключается в выборе вектора, который подлежит включению в базис, и определении вектора, подлежащего исключению из базиса. Критерий, используемый для определения вектора, который включается в базис, является одним из основных элементов симплексного метода. Заметим, что если вектор Аm+1 подлежит включению в базис, а в его разложении все xi,m+1£Ј0, то, очевидно, нельзя выбрать такое qq > 0, которое исключало бы один из векторов разложения. В этом случае план Х1 содержит m + 1 положительных компонент, а система векторов А1, А2, А3, ..., Аm, Аm+1 является линейно зависимой и определяет не угловую, а внутреннюю точку многогранника решений, в которой линейная функция не может достигать минимального значения. Это указывает на то, что гиперплоскость, соответствующая линейной функции, не может стать опорной к многограннику решений, как бы далеко ни перемещать ее в направлении, обратном вектору N, т. е. линейная функция не ограничена на многограннике решений.
Таким образом, если система ограничений задачи линейного программирования при неотрицательных свободных членах содержит единичный базис, то без дополнительных вычислений можно получить первоначальный опорный план, а также коэффициенты разложения векторов по векторам базиса.
