- •Введение
- •Часть 1. Линейное программирование
- •1.1. Построение линейных экономико-математических моделей
- •Примеры задач
- •1.2. Формы записи задач линейного программирования
- •1.3. Свойства решений задач линейного программирования
- •1.4. Геометрический смысл и графический метод решения задач линейного программирования
- •1.5. Симплексный метод решения задач линейного программирования
- •1.6. Симплексный метод с искусственым базисом
- •1.7. Элементы теории двойственности
- •А. Симметричная двойственная пара
- •В. Несимметричная двойственная пара
- •1.8. Основные теоремы двойственности
- •1.9. Транспортная задача
- •Алгоритм метода потенциалов
- •1.10. Задача об оптимальных назначениях
- •Часть 2. Нелинейное программирование
- •2.1. Дробно-линейное программирование
- •2.1.1. Постановка задачи
- •Общую задачу дробно-линейного программирования (в дальнейшем длп) обычно записывают в виде:
- •2.1.2. Графическое решение задач длп
- •2.1.3. Симплекс-метод в длп
- •2.2. Общая задача нелинейного программирования. Классификация вычислительных методов
- •Условия (1) и (2), а также
- •По постановке задачи.
- •2. По характерным чертам алгоритмов.
- •2.3. Эффективные методы одномерной минимизации
- •2.4. Графический метод решения задач нелинейного программирования
- •2.5. Методы минимизации для задач без ограничений, использующие производные
- •2.6. Методы минимизации, не использующие производные
- •2.7. Методы решения задач нелинейного программирования с ограничениями
- •2.7.1. Методы линейной аппроксимации
- •2.7.2. Понятие о методах штрафных функций
- •Список использованной литературы:
- •Содержание
- •Часть 1. Линейное программирование 3
- •Часть 2. Нелинейное программирование 47
Алгоритм метода потенциалов
Он состоит из предварительного шага и общего повторяющегося шага.
Предварительный шаг включает в себя
1) Построение исходного ДБР (любым из известных методов).
2) Отыскание потенциалов Ui и Vj .
3) Проверку исходного ДБР на оптимальность.
Остановимся на пунктах 2) и 3), которые продемонстрируем для нашей задачи (см. табл. 1.9.1). Вводим неизвестные Ui и Vj и для всех базисных клеток построенного начального плана составляем уравнения вида Ui – Vj = cij и решаем полученную систему уравнений:
V1 – U1 = 5;
V2 – U2 = 2;
V3 – U2 = 2;
V4 – U1 = 10; (1.9.4)
V4 – U2 = 5;
V4 – U3 = 9;
V5 – U3 = 2.
Мы получили 7 уравнений с 8-ю неизвестными (система неопределенная), однако для проверки плана на оптимальность нам достаточно найти любое из решений. Обычно одно из неизвестных (как правило, то, которое чаще всего встречается в системе) полагают равным нулю, а остальные находят однозначно. Положим U2 = 0, тогда решение системы будет иметь вид: {V1 = 0; V2 = 2; V3 = 2; V4 = 5; V5 = –2; U1 = –5; U2 = 0; U3= –4}. Теперь для проверки плана на оптимальность полученные результаты удобно представить в виде так называемой таблицы потенциалов:
Таблица 1.9.2
Vj Ui |
0 |
2 |
2 |
5 |
–2 |
–5 |
5 5 0 |
7 8 –1 |
7 7 0 |
10 10 0 |
3 3 0 |
0 |
0 4 –4 |
2 2 0 |
2 2 0 |
5 5 0 |
–2 6 –8 |
–4 |
4 7 –3 |
6 3 3 |
6 5 1 |
9 9 0 |
2 2 0 |
Таблица заполнена по следующим правилам. В первой строке и в первом столбце стоят значения потенциалов Ui и Vj, полученные из решения системы (1.9.4). Каждая внутренняя клетка имеет такой формат (смысл обозначений приведен выше):
-
С*ij Cij
∆ij
В соответствии с теоремой о разрешимости транспортной задачи для того, чтобы проверяемый план был оптимальным, необходимо, чтобы во всех клетках таблицы потенциалов ∆ij были неположительны. При наличии положительных ∆ij план может быть улучшен в смысле уменьшения целевой функции. В нашем примере имеются две положительные оценки: ∆32 = 3 и ∆33 = 1, следовательно план не оптимален и его надо улучшать. Это делается в процессе общего повторяющегося шага. Принципы его следующие.
Так же, как и в симплекс-методе, одна из базисных перевозок выводится из базиса, а на ее место вводится новая, небазисная. Вводимая перевозка хkl соответствует небазисной клетке с максимальной положительной ∆ij (в нашем случае ∆32 = 3), значит, вводим в базис перевозку х32. Для определения перевозки, которую надо вывести из базиса, строим так называемый цикл пересчета, т. е. замкнутую ломаную линию, которая строится на таблице перевозок по следующим правилам:
-
Цикл начинается и заканчивается в клетке (k, l).
-
Ломаная может совершать повороты под прямым углом только в базисных клетках.
-
Цикл, удовлетворяющий условиям 1 – 2 может быть только один.
-
Исходная клетка цикла (k, l) помечается знаком (+), следующая базисная клетка, в которой ломаная делает поворот, знаком (–), и далее по очереди в клетках поворота чередуются знаки (+) и (–).
Нетрудно понять, что клеток, помеченных знаком (+), будет столько же, сколько и помеченных знаком (–). Эти клетки будут называться клетками, соответственно, положительной полуцепи и отрицательной полуцепи. Заметим, что ломаная цикла может иметь самый причудливый вид, иногда даже с самопересечениями. Построив цикл, находим клетку из отрицательной полуцепи с минимальной перевозкой хps = t. Это и будет перевозка, выводимая из базиса. Значения же базисных перевозок пересчитываются следующим образом:
– базисные перевозки, не входящие в цикл, остаются без изменения;
– из перевозок отрицательной полуцепи вычитается величина t;
– к перевозкам положительной полуцепи прибавляется величина t.
Замечание 1. Если в результате вычитания t в нуль обратится не одна, а несколько перевозок, то для избежания вырожденности плана в одной из клеток следует поставить –––, а в остальных − базисные нули.
Замечание 2. Если t = 0, т. е. в отрицательной полуцепи присутствовал базисный нуль, то значение целевой функции не изменится, однако ДБР все равно надо поменять.
Замечание 3. Нетрудно вывести формулу для приращения (в нашем случае в сторону уменьшения) целевой функции от шага r – 1 к шагу r:
Zr = Zr–1 – t* max ∆ij.
Построенный цикл пересчета приведен в табл. 1.9.1. Мы видим, что t = 125, значит именно это количество груза «перегоняется» по циклу. Соответственно, целевая функция уменьшится на 125*3 = 375 единиц и станет равной:
Z1 = 3950 – 375 = 3575. Для улучшенного плана строим новую таблицу перевозок:
Таблица 1.9.3
bj аi |
100 |
125 |
325 |
250 |
100 |
200 |
5 100 |
8 ––– |
7 ––– |
10 100 |
3 ––– |
450 |
4 ––– |
2 ––– |
(–) 2 325 |
(+) 5 125 |
6 ––– |
250 |
7 –––– |
3 125 |
(+) 5 ––– |
(–) 9 25 |
2 100 |
Теперь для проверки полученного плана на оптимальность нам опять надо составить и решить систему потенциалов – в этом и проявляется сущность общего повторяющегося шага. Выписываем и решаем систему уравнений:
V1 – U1 = 5; V1 = 4; U1 = –1;
V2 – U3 = 3; V2 = 3; U2 = 4;
V3 – U2 = 2; V3 = 6; U3 = 0;
V4 – U1 = 10; V4 = 9;
V4 – U2 = 5; V5 = 2.
V4 – U3 = 9;
V5 – U3 = 2;
Результаты решения системы заносим в новую таблицу потенциалов (табл.1.9.4).
Таблица 1.9.4
Vj Ui |
4 |
3 |
6 |
9 |
2 |
–1 |
5 5 0 |
4 8 – 4 |
7 7 0 |
10 10 0 |
3 3 0 |
4 |
0 4 – 4 |
–1 2 –3 |
2 2 0 |
5 5 0 |
–2 6 –8 |
0 |
4 7 –3 |
3 3 0 |
6 5 1 |
9 9 0 |
2 2 0 |
Теперь мы видим одну положительную оценку: ∆33 = 1, значит снова надо строить цикл пересчета и улучшать план перевозок. Цикл приведен в табл. 1.9.3, а улучшенный план в табл. 1.9.5. (очевидно, t = 25).
Таблица 1.9.5
bj аi |
100 |
125 |
325 |
250 |
100 |
200 |
5 100 |
8 ––– |
7 ––– |
(–) 10 100 |
(+) 3 ––– |
450 |
4 ––– |
2 ––– |
(–) 2 300 |
(+) 5 150 |
6 ––– |
250 |
7 –––– |
3 125 |
5 25 (+) |
9 ––– |
(–) 2 100 |
Z2 = 3575 – 1*25 = 3550. Снова выписываем и решаем систему потенциалов:
V1 – U1 = 5; V1 = 3; U1 = –2;
V2 – U3 = 3; V2 = 3; U2 = 3;
V3 – U2 = 2; V3 = 5; U3 = 0;
V3 – U3 = 5; V4 = 8;
V4 – U1 = 10; V5 = 2.
V4 – U2 = 5;
V5 – U3 = 2;
Результаты решения системы заносим в новую таблицу потенциалов (табл.1.9.6):
Таблица 1.9.6
Vj Ui |
3 |
3 |
5 |
8 |
2 |
–2 |
5 5 0 |
5 8 – 3 |
7 7 0 |
10 10 0 |
4 3 1 |
3 |
0 4 – 4 |
0 2 –2 |
2 2 0 |
5 5 0 |
–2 6 –7 |
0 |
3 7 –4 |
3 3 0 |
5 5 0 |
8 9 –1 |
2 2 0 |
Еще раз мы видим положительную оценку, на этот раз ∆15 = 1, снова строим цикл пересчета (на табл. 1.9.5). Улучшенный план заносим в табл. 1.9.7.
Таблица 1.9.7
bj аi |
100 |
125 |
325 |
250 |
100 |
200 |
5 100 |
8 ––– |
7 ––– |
10 0 |
3 100 |
450 |
4 ––– |
2 ––– |
2 200 |
5 250 |
6 ––– |
250 |
7 –––– |
3 125 |
5 125 |
9 ––– |
2 ––– |
Здесь t = 100 и встретился случай, упомянутый в замечании 1. Базисный ноль ставим в клетку (1, 4), а клетка (3, 5) уходит из базиса. Z2 = 3575 – 1*100 = 3450. Проверяем данный план на потенциальность:
V1 – U1 = 5; V1 = 5; U1 = 0;
V2 – U3 = 3; V2 = 5; U2 = 5;
V3 – U2 = 2; V3 = 7; U3 = 2;
V3 – U3 = 5; V4 = 10;
V4 – U1 = 10; V5 = 3.
V4 – U2 = 5;
V5 – U1 = 3;
Строим таблицу потенциалов:
Таблица 1.9.8
Vj Ui |
5 |
5 |
7 |
10 |
3
|
0 |
5 5 0 |
5 8 –3 |
7 7 0 |
10 10 0 |
3 3 0 |
5 |
0 4 –4 |
0 2 –2 |
2 2 0 |
5 5 0 |
–2 6 –8 |
2 |
3 7 –4 |
3 3 0 |
5 5 0 |
8 9 –1 |
1 2 –1 |
В последней таблице потенциалов нет ни одной положительной оценки, следовательно, последний план перевозок, представленный в табл. 1.9.7, оптимален. Решение транспортной задачи обычно приводят в виде:
Хопт = {x11 = 100, x15 = 100, x23 = 200, x24 = 250, x32 = 125, x33 = 125} ,
Zопт = 3450.
Замечание 4. Если в последней таблице потенциалов, соответствующей оптимальному плану, мы видим оценки ∆ij = 0 не только в базисных клетках (это естественно!), но и в небазисных, то этот факт говорит о том, что оптимальный план не единственный. Чтобы получить альтернативный оптимальный план с тем же самым значением целевой функции, можно построить еще один цикл пересчета, начинающийся в небазисной клетке с ∆ij = 0. Таких планов будет столько же, сколько есть небазисных клеток с нулевыми оценками оптимальности.
Заметим, что алгоритм метода потенциалов монотонен (в смысле не- возрастания целевой функции) и конечен, ввиду конечности множества допустимых решений транспортной задачи.