Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Жолобов Ввведение в Математическое 2008

.pdf
Скачиваний:
294
Добавлен:
16.08.2013
Размер:
2.42 Mб
Скачать

Допустим, на этом шаге решается некоторая задача ЛП , и эта задача имеет оптимальное целочисленное решение Xk, доставляющее целевой функции значение Zk . Тогда Xk считается достаточно близким к оптимальному решением, если имеет место:

V k Z k

 

, где – заданная точность решения, например, =

 

V k

 

 

 

= 0.01

 

 

Пример 2.18

Дана оптимальная симплекс-таблица некоторой задачи, которая решается методом ветвей и границ:

Баз

Сбаз

А0

 

1

3

0

0

 

 

 

 

 

А1

А2

А3

А4

А1

1

5/2

 

 

1

0

1/2

-1/2

А2

3

3

 

 

0

1

0

1

 

 

23/2

 

 

 

 

 

 

 

 

 

0

0

1/2

5/2

Очевидно, что ветвление следует провести по переменной x1.

 

 

Исходная

 

 

 

 

задача ЛП

 

 

З2

 

 

 

 

З1

 

 

 

 

Исходная

 

 

 

Исходная

задача ЛП

 

 

задача ЛП

x1 2

 

 

x1 3

Для того,чтобы определить, по какой ветви следует идти (какая из двух задач З1 и З2 должна решаться в первую очередь), найдем штрафы сверху и снизу.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

1

 

 

 

 

 

 

 

 

1 {x10 }

} =

5

 

 

 

 

 

 

 

5

штраф сверху;

З1: Z 1

min{

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

U

 

j

x1j

 

 

2

 

 

 

 

1

 

 

 

2

 

 

x1 j 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

{x10 }

 

} =

1

 

 

 

 

 

 

1

 

 

З2: Z 1

min{

 

 

2

штраф снизу.

j

 

 

 

 

 

 

 

D

 

x1j

 

2

 

1

 

 

2

 

 

 

 

 

 

x1 j 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

Ввиду того, что штраф снизу меньше, чем сверху, в первую очередь следует решать задачу З2, которая получается из исходной задачи добавлением ограничения :

x1 [x10] = [5/2] = 2 .

301

Как технически осуществить решение задачи З2 ? Ведь исходной задачи нет. Есть только оптимальная симплекс-таблица, в которой записано решение исходной задачи.

Здесь используется следующий прием.

В первой строке симплекс-таблицы записано уравнение: x1 =

4

=x10 - x1j xj или x1 = 5/2 - (1/2)x3+(1/2)x4 . Учитывая, что дополни-

j 3

тельное ограничение имеет вид x1 2, его можно записать следующим образом: x1 = 5/2 - (1/2)x3+(1/2)x4 2 .

Отсюда: - (1/2)x3+(1/2)x4 -1/2 .

Придадим этому ограничению нестрогому неравенству форму ограничения-уравнения путем введения в правую часть дополнительной (неотрицательной) переменной x5 :

(1/2)x3+(1/2)x4 + x5 = -1/2 .

Теперь можно воспользоваться оптимальной симплекстаблицей исходной задачи. Добавив в эту таблицу новую строку, соответствующую этому ограничению, и один столбец, можно получить исходную симплекс-таблицу для решения задачи З2:

Баз

Сбаз

А0

1

3

0

0

0

 

 

 

А1

А2

А3

А4

А5

А1

1

5/2

1

0

1/2

-1/2

0

А2

3

3

0

1

0

1

0

А5

0

-1/2

0

0

-1/2

1/2

1

 

 

1

0

0

1

-1

-2

 

 

23/2

0

0

1/2

5/2

0

А1

1

2

Эту часть можно не считать

А2

3

3

А3

0

1

 

 

 

 

11

 

Получено оптимальное решение задачи З2 . Заносим эту задачу в список.

Начинается решение задачи З1, которая получается из исходной задачи путем введения дополнительного ограничения x3 3.

Штраф сверху известен:

 

 

 

 

 

 

 

 

1

1

 

 

 

 

 

1 {x10

}

} =

5

 

 

 

 

 

5

Z 1

min{

2

j

 

 

 

 

 

 

 

 

 

 

U

 

x1j

 

 

2

 

1

 

 

2

 

x1 j 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

То есть самое большое значение ЦФ, которое может быть по-

лучено, это 23/2 - 5/2=9.

Но в списке уже есть задача с целочисленным решением и

302

лучшим (большим) оптимальным значением ЦФ (задача З2). Следовательно, задача З1 бесперспективна: ее не следует решать и заносить в список задач.

Теперь в списке есть единственная задача с целочисленным решением (задача З2). Следовательно, получено оптимальное решение исходной задачи:

Zопт= 11, Xопт=(2,3).

2.4.5. Метод ветвей и границ для задачи о коммивояжере

Пусть A1, A2,..., An, – множество городов.

C=(cij) – квадратная матрица "расстояний" между городами прядка n.

Пусть коммивояжер выезжает из города A1 и возвращается в этот город, побывав в каждом из остальных городов по одному разу.

Пусть далее – множество всех возможных маршрутов. Обозначим 1,i2 ,i3 ,...,ik (2 k n-1) – подмножество всех допустимых

маршрутов, каждый из которых характеризуется тем, что выезжая из города A1, коммивояжер последовательно посещает города

Ai2 , Ai3 ,..., Aik , а затем – оставшиеся города и возвращается в город

A1.

Конкретизируем принцип ветвления. Пусть коммивояжер находится в пункте A1 – в исходном пункте. Выбором первого города, в который нужно въехать из A1, множество всех возможных мар-

шрутов разбивается

на непересекающиеся подмножества 1,2,

1,3,... 1,n (рис. 2.26):

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.........

 

 

 

 

1,2

 

 

1,3

1,n

 

 

Рис.2.26.

Ветвление в задаче коммивояжера

Пусть теперь после посещения городов Ai2 , Ai3 ,..., Aik (2 k n-

-1) принимается решение о выборе очередного города, в который нужно въехать, выехав из города Aik .

Фактически, этим решением множество допустимых маршрутов 1,i2 ,i3 ,...,ik разбивается на подмножества:

303

1,i2 ,i3 ,...,ik , j , где j {1,i2,i3,...,ik}.

Очевидно, что подмножество 1,i2 ,i3 ,...,in 1 состоит из одного-

единственного маршрута:

A1, Ai2 , Ai3 ,..., Ain 1 , Ain , A1 , где in {1,i2,i3,...,in-1}.

Выбора нет.

Конкретизируем принцип вычисления нижней границы (оценки). Оценку подмножества 1,i2 ,i3 ,...,ik 1 ,ik (2 k n-1) будем вы-

числять следующим образом:

( 1,i2 ,i3 ,...,ik 1 ,ik )= c1,i2 + ci2 ,i3 +...+ cik 1

+(n-k) min {ci,l

i {1,i2 ,...,ik } l {i2 ,...,ik } i l

,i +

min {ci , j }+

k

j {1,i2 ,...,ik }

k

 

 

}.

Здесь

 

 

 

 

 

 

c1,i

+ ci

,i +...+ ci

,i

фактическая стоимость всех уже состо-

2

2

3

k 1

k

 

 

 

явшихся переездов;

 

 

 

 

min

{ci , j }– стоимость самого короткого переезда из пунк-

j {1,i2 ,...,ik }

k

 

 

 

 

 

 

 

 

 

та ik в пункт j , в котором еще не был коммивояжер;

(n-k) – количество оставшихся переездов;

 

 

min

{ci,l }– стоимость самого короткого из оставшихся пе-

i {1,i2 ,...,ik }

 

 

 

 

 

l {i2 ,...,ik }

 

 

 

 

 

 

реездов.

 

 

 

 

k=n-1 оценка ( 1,i

 

,...,i ) совпадает со

Очевидно,

что при

,i

 

 

 

 

 

2

3

k

стоимостью единственного маршрута, составляющего множество1,i2 ,i3 ,...,ik – это стоимость маршрута (рис. 2.27):

304

A1, Ai2 , Ai3 ,..., Ain 1 , Ain , A1 , где in {1,i2,i3,...,in-1}. n-2 города (разные)

1

i2

i3

 

in-1

 

 

 

 

 

 

 

 

min

{ci n 1 , j } = cin 1 ,in

 

 

 

j {1, i2

,..., i n 1

}

 

 

 

 

 

in

Последний переезд:

 

 

 

 

[n-(n-1)]

min

{ci,l } =1

 

 

i {1,i2

,...,in 1} или i in

 

 

 

 

l {i2

,...,in 1}илиl 1

 

 

 

 

 

 

 

 

 

 

Рис.2.27. Маршрут

Как видно, предложенная оценка весьма оптимистическая. Однако, по мере продвижения (по мере разбиения множества допустимых маршрутов), эта оценка уточняется – убывать, в принципе, не может.

Таким образом, конкретизирован еще один принцип метода ветвей и границ – принцип уточнения оценок.

Теперь о последнем принципе – о принципе оптимальности. Здесь вполне естественна следующая схема.

Имеется список подмножеств допустимых маршрутов. Каждое из этих подмножеств имеет свою оценку.

Пусть на очередном шаге работы алгоритма из списка выбирается подмножество с минимальной оценкой.

Если этому подмножеству соответствует полный маршрут (т.е. k=n-1) , то этот маршрут является оптимальным.

305

Пример 2.19

В задаче нужно объехать 5 городов, выехав из города 1. Стоимости переездов представлены в таблице.

 

4

9

6

1

2

 

9

2

10

11

11

 

8

1

5

4

3

 

8

1

11

1

8

 

Разбиваем полное множество всех маршрутов на 4 подмножест-

ва:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

12

 

13

 

14

 

15

Находим оценку (нижнюю границу) каждого из этих подмножеств. Подмножество 12:

 

 

 

4

 

9

6

1

 

2

 

 

 

9

2

10

 

 

 

 

 

11

 

11

 

 

8

1

 

5

 

4

3

 

8

 

 

 

 

1

 

11

1

8

 

 

 

 

 

 

 

 

 

 

 

 

( 12)=c12+ min{c2, j } +(5-2)

min{ci ,l }=4+2+3 1=9.

j 1,2

 

i 1,2

 

 

 

 

 

 

 

l 2

 

 

 

 

Подмножество 13:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

 

9

6

1

 

2

 

 

 

2

10

 

 

 

9

 

11

 

11

 

 

8

1

 

5

 

4

3

 

8

 

1

 

11

1

8

 

 

 

 

 

 

 

 

 

( 13)=c13+ min{c3, j } +(5-2)

min{ci ,l }=9+1+3 1=13.

j 1,3

 

i 1,3

 

 

 

 

l 3

306

Подмножество 14:

 

 

 

4

9

 

 

6

 

 

 

1

 

2

 

 

9

 

 

 

 

 

10

 

 

 

 

 

2

 

 

 

 

11

 

11

 

 

 

8

 

 

1

 

5

 

4

3

 

 

 

 

 

8

 

1

 

11

1

 

 

8

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

( 14)=c14+ min{c4, j } +(5-2)

min{ci ,l }=6+3+3 1=12.

j 1,4

 

i 1,4

 

 

 

 

 

 

 

 

 

 

 

l 4

 

 

 

 

 

 

 

 

Подмножество 15:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

9

 

 

6

 

 

 

1

 

2

 

 

9

 

 

2

 

 

 

 

 

 

 

 

10

 

11

 

11

 

 

 

8

 

 

1

 

5

 

4

3

 

 

 

 

 

8

 

1

 

11

1

 

 

8

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

( 15)=c15+ min{c5, j } +(5-2)

min{ci ,l }=1+1+3 2=8.

j 1,5

 

i 1,3

 

 

 

 

 

 

 

 

l 3

Заносим подмножества (вместе с оценками) в список.

Из списка выбирается подмножество с минимальной оценкой (это

15 с оценкой 8).

Подмножество 15 разбивается на 3 подмножества:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

8

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

9

 

 

13

 

 

12

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

12

 

 

13

 

 

14

 

 

15

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

152

153

154

Вычисляются нижние границы вновь образованных подмножеств. Подмножество 152 :

( 152)=c15+ c52+ min{c2, j }+(5-3)

min{ci ,l } =1+11+2+2 3=20.

j 1,5,2

i 1,5,2

 

l 5,2

307

Подмножество 153 :

( 153)=c15+ c53+ min{c3, j } +(5-3)

j 1,5,3

min{ci ,l }=1+1+8+2 2=14.

i 1,5,3 l 5,3

Подмножество 154 :

( 154)=c15+ c54+ min{c4, j }+(5-3)

j 1,5,4

min{ci ,l } =1+8+3+2 2=16.

i 1,5,4 l 5,4

Заносим подмножества (вместе с оценками) в список.

Из списка выбирается подмножество с минимальной оценкой (это

12 с оценкой 9).

Подмножество 15 разбивается на 3 подмножества:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

8

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

9

 

 

1

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

12

 

 

13

 

 

 

14

 

 

15

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

4

 

 

6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

12

 

 

 

12

 

 

12

 

 

 

 

 

 

 

152

 

 

153

 

 

154

3

 

 

 

4

 

 

5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Вычисляются нижние границы вновь образованных подмножеств.

 

 

Подмножество 123 :

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

( 123)=c12+ c23+ min{c3, j

} +(5-3) min{ci ,l } =4+9+1+2 1=16.

 

 

 

 

 

 

 

 

 

 

j 1,2,3

 

 

 

i 1,2,3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

l 2,3

 

 

 

 

 

 

 

 

Подмножество 124 :

( 124)=c12+ c24+ min{c4, j } +(5-3)

j 1,2,4

min{ci ,l } =4+2+3+2 1=11.

i 1,2,4 l 2,4

Подмножество 125 :

( 125)=c12+ c25+ min{c5, j } +(5-3)

j 1,2,5

min{ci ,l } =21.

i 1,2,5 l 2,5

Заносим подмножества (вместе с оценками) в список.

Из списка выбирается подмножество с минимальной оценкой (это124 с оценкой 11).

Подмножество 124 разбивается на 2 подмножества:

308

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

8

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

9

 

 

 

1

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

12

 

 

13

 

14

 

15

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

1

1

 

 

 

1

 

 

 

 

 

 

 

2

 

 

 

1

 

 

 

 

 

6

 

 

 

1

 

 

 

1

 

 

 

 

 

0

 

 

 

4

 

 

6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

123

 

124

 

 

 

 

125

 

 

 

 

 

152

 

 

153

 

 

154

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1243

 

 

 

12

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

45

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Вычисляются нижние границы вновь образованных подмножеств.

 

 

 

Подмножество 1243 :

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

( 1243)=c12+c24+c43+ min {c3, j

} +(5-4)+ min {ci ,l } =

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

j 1,2,4,3

 

 

i 1,2,4,3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

l 2,3,4

 

 

 

 

 

 

=4+2+3+1+1=11.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Это подмножество соответствует полному маршруту:

 

 

 

 

 

 

1 2 4 3 5 1.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

При этом оценка этого маршрута – минимальная.

 

 

 

 

 

 

 

 

Действительно, ( 1245) можно не вычислять, так как исходная

 

 

оценка ( 124)=11 при пересчете может только ухудшиться.

 

 

 

 

 

 

Для справки: ( 1245)=26.

 

 

 

 

 

 

 

 

 

 

 

 

Контрольные вопросы и задачи к разделу 2.4

 

 

 

 

 

1.Приведите основные принципы метода ветвей и границ.

2.Что такое бесперспективное подмножество решений? В чем заключается критерий определения перспективности подмножества решений?

3.Дайте определение рекорда в методе Ленд и Дойг.

4.Какие преимущества даёт использование штрафов в вычислительной схеме метода Ленд и Дойг?

5.Напишите формулу вычисления оценки нижней границы в методе ветвей и границ для решения задачи коммивояжера.

6.Решите задачу ЛЦП методом Ленд и Дойг (графически):

309

x1 2x2 max x1 3x2 15

7x1 x2 35

x1, x2 0, целые.

7. В процессе решения задачи ЛЦП методом Ленд и Дойг была получена оптимальная симплекс-таблица частной задачи:

 

 

 

1

1

1

2

Баз

Сбаз

A0

A1

A2

A3

A4

A3

1

5.5

1

0.5

1

0

A4

2

7

3

7

0

1

Табл.N

 

19.5

6

13.5

0

0

Проведите ветвление частной задачи с вычислением штрафов. 8. Решите задачу коммивояжера методом ветвей и границ.

Город

1

2

3

4

1

-

3

1

5

2

2

-

2

1

3

3

5

-

2

4

2

2

3

-

9.Решите задачу коммивояжера методом ветвей и границ.

Город

1

2

3

4

5

1

-

2

1

2

1

2

3

-

4

1

3

3

4

2

-

1

5

4

2

5

3

-

1

5

4

3

1

2

-

2.5. Приближенные методы решения дискретных задач

2.5.1. Обзор приближенных методов

На примере метода отсечения мы столкнулись с теми принципиальными трудностями, которые отличают задачи ЛП от задач ЛЦП.

В ряде случаев для получения решения задачи ЛЦП можно идти по пути округления оптимального решения задачи ЛП.

310