Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
5fan_ru_Исследование операций. Курс лекций.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
293.75 Кб
Скачать

6Задачакоммивояжераиметодветвейиграниц

Предположим,чтофирмадолжнапровестирекламнуюкампаниювовсехобластныхго-родахБеларуси,вкаждомгородеровнопоодномуразу.Известно,сколькостоитпереездмеждудвумялюбымигородами.Фирмажелаетснизитьсвоидорожныерасходы.Математическаямодельтакойситуацииназываетсязадачейкоммивояжера,котораясо-стоитвследующем.Заданполныйорграф.Орграфназываетсяполным,есликаждаяпаравершинiиjсоединенадугами(i,j)и(j,i).Известнастоимостьcijкаждойдуги(i,j).Тре-буетсяпостроитьгамильтоновцикл(т.е.цикл,проходящийчерезкаждуювершинуровнопоодномуразу)такой,чтосуммарнаястоимостьвсехегодугбыламинимальной.Отметим,чтоестьвзаимнооднозначноесоответствиемеждугамильтоновымициклами(т.е.маршрутамикоммивояжера)вполномграфесnвершинамииперестановкамиnэлементов.Перестановкаσ=(i1,...,in)соответствуетмаршрутукоммивояжера,прохо-дящемучерезвершиныi1,...,inивключающемудуги(i1,i2),(i2,i3),...,(in1,in),(in,i1).Основнымметодомрешениязадачикоммивояжераявляетсяметодветвейиграниц(МВиГ).Этотметодявляетсяуниверсальнымиможетприменятьсядлярешенияпракти-ческивсехзадачоптимизации.

ОсновныепринципыМВиГдлярешениязадачиминимизациисостоятвследующем.

1)Ветвление.Исходнаязадачаразбивается(ветвится)надвеилиболееподзадачита-кимобразом,чторешениеисходнойзадачиявляетсярешениемхотябыоднойизподзадач.Каждаяизподзадач,всвоюочередь,ветвитсянаболеемелкиеподзадачи.Процессмо-жетповторятьсядотехпор,покаполучаемаяподзадачанестановитсятривиальнойиеерешениелегкоотыскивается.

Этотпроцессможнопредставитьввидетакназываемогодереваветвлений.Вершиныдереваветвленийсоответствуютподзадачамиразбитынауровни.Исходнаязадачаяв-ляетсявершинойнулевогоуровня.Подзадачи,полученныеизисходнойзадачи,являютсявершинамипервогоуровня.Подзадачи,полученныеизвершинпервогоуровня,являютсявершинамивторогоуровня,ит.д.Дугинаправленыизвершинуровняiввершиныуровняi+1.Вкаждуювершинувходитровнооднадуга.

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

числаLBиUBтакие,что

LBFUB,

гдеFминимальноезначениецелевойфункциивзадачеилиподзадаче,LBиUB–егонижняяиверхняяоценкисоответственно.

Нижняяоценкаможетбытьполученаврезультатерешениярелаксированнойилиослаб-леннойзадачи,например,задачикоммивояжера,вкоторойстоимостивсехдуг,входящихвданнуювершину,уменьшенынавеличинуминимальнойизних,ианалогичноизменены(уменьшены)стоимостивсехдуг,выходящихизданнойвершины.

Верхняяоценкаможетбытьполученаврезультатеотысканиялюбогодопустимогореше-ниярассматриваемойзадачиивычислениясоответствующегозначенияцелевойфункции.Длязадачикоммивояжерадостаточнонайтисуммарнуюстоимостьдугкакого-нибудьдо-

пустимогомаршрута.Наилучшая,т.е.наименьшаяизвсехимеющихсявналичииверхнихоценок,называется(текущим)рекордом.

3)Отсеиваниевариантов.Еслидлянекоторойподзадачиеенижняяоценкапревосхо-дитлиборавнарекорду,такуюподзадачуможнодалееневетвить,таккакеерешениебудетзаведомохужелибонелучшерешения,соответствующегорекорду.

4)Оптимальноерешение.Процессвычисленийпрекращается,когданетниоднойпод-задачи,котораяможетпродолжатьветвиться.Вэтомслучаеоптимальноерешениесоот-ветствуеттекущемурекорду.

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

Различаютметодыветвлениявглубинуивширину.

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

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

Пример.Пустьматрица(таблица)стоимостейпереездамеждугородамивыглядитсле-

дующимобразом:

город(i,j)

Минск(1)

Брест(2)

Витебск(3)

Гомель(4)

Гродно(5)

Могилев(6)

1

350

250

350

320

200

2

400

650

500

100

700

3

300

600

320

400

150

4

370

580

280

710

180

5

400

100

550

800

670

6

220

650

170

210

590

Будемрешатьзадачуметодомветвлениявглубь.Вначалепостроим”приведеннуюзадачу”,эквивалентнуюисходной.Используемпроцедуру”приведениетаблицы”,состоящуюввы-читаниинаименьшегочиславкаждомстолбце(строке),затемнаименьшегочиславкаж-дойстроке(столбце).Суммируяэтичисла(изкаждогогороданужновыехатьивкаждыйгороднужновъехать),получаем∆0=(220+100+170+210+100+150)+(30+50)=1030.Далееможноработатьсприведеннойматрицей.Дляполученияреальнойстоимостилю-богомаршрутанеобходимодобавитькполучаемойизприведеннойтаблицыстоимостивеличину∆0.

Приведеннаятаблица:

(i,j)

1

2

3

4

5

6

1

200(250)

30(80)

90(140)

170(220)

0(50)

2

180

480

290

0

550

3

80

500

110

300

0

4

120(150)

450(480)

80(110)

580(610)

0(30)

5

180

0

380

590

520

6

0

550

0

0

490

Дляэлементовприведеннойтаблицыоставимобозначенияcij.

Очевидно,чтонижняяоценкадляприведеннойзадачиравнаLB(0)=0.Дляотысканияверхнейоценкипостроимкакой-нибудьмаршруткоммивояжера.Например,разумнымбу-детвключитьвэтотмаршрутдугуминимальнойстоимости,скажем,(2,5).Далеевыбрать

дугуминимальнойстоимостивида(5,j),j/=2.Это(5,1).Далее,выбратьдугуминималь-

нойстоимостивида(1,j),j/=2,5.Поступаяаналогично,(1,6),(6,3),(3,4),и,безвариантов,

(4,2).ПолучаемверхнююоценкуUB(0)=740.ОнаявляетсярекордомR.

Далееразветвимисходнуюзадачу.Ветвлениебудемосуществлятьповхождениюилиневхождениюнекоторойдугивмаршрут.Будемвыбиратьдугунулевойстоимости,ко-тораядаетнаибольшеезначениенижнейоценкидляподзадачиприееневхождениивмаршрут.Дугинулевойстоимости:(1,6),(2,5),(3,6),(4,6),(5,2),(6,1),(6,3),(6,4).

ВподзадачеP(1,6)(P(1,6))дуга(1,6)невходит(входит)вмаршрут.

РассмотримподзадачуP(1,6).Полагаемстоимостьдуги(1,6)равной.Какая-тодугаиз

1должнавыйтиикакая-тодугадолжнавойтив6.Можнодобавитькнижнейоценкесум-

мунаименьшихчиселвуказанныхстрокеистолбце,обозначаемую∆16=30.Аналогичновычисляем∆2,5,∆3,6,∆4,6,∆5,2,∆6,1,∆6,3,∆6,4.Наибольшеезначениеравно∆5,2=380.Выбираемдугу(5,2)длядальнейшихветвлений.ВычисляемLB(5,2)=LB(0)+∆5,2=380.Нарисуемначальноедеревоветвлений,состоящееиз3вершин-начальной0ивершин,обозначенных(5,2)(соответствующаядуганевходитвмаршруткоммивояжера)и(5,2)(входит),см.рис.

ПрипишемвершинамсоответствующиезначенияLB.

РассмотримподзадачуP(5,2).Посколькудуга(5,2)входитвмаршрут,другиедугинемогутвыйтииз5ивойтив2.Вычеркиваемстроку5истолбец2.Крометого,дуга

(2,5)войтивмаршрутнеможет.Полагаемстоимостьэтойдугиравной.Вычисляем

5,2=350.Послеприведениятаблицаимеетвид:

(i,j)

1

3

4

5

6

1

30

90

0

0

2

0

300

110

370

3

80

110

130

0

4

120

80

410

0

6

0

0

0

320

ВычисляемLB(5,2)=LB(0)+c5,2+5,2=350.

БудемветвитьподзадачуP(5,2),таккакразмерностьсоответствующейматрицымень-шеибыстрееможнополучитьтривиальнуюподзадачу.Вприведеннойтаблицедляэтойподзадачинаходимдугинулевойстоимости:(1,5),(1,6),(2,1),(3,6),(4,6),(6,1),(6,3),(6,4).

R0=UB=c(2,5,1,6,3,4)=740

R1=c(1,5,2,4,3,6)=540

LB=460

24

LB=540=R1

36

✣✢

LB=460

LB=540

15

❘ 36

LB=350

LB=650 ✣✢

52

❅❘ 24

LB=0

LB=480 ✣✢

0

15

LB=??

LB=380

??

52LB=580✣✢

12

LB=??

??

LB=630 ✣✢

12

✣✢

Ответ:c=c(1,5,2,4,3,6)=540+0=540+1030=1570

Наибольшеезначение∆i,jпризаписивуказанныеклеткиравно1,5=130.Выбира-емдугу(1,5)длядальнейшихветвлений.Вдеревоветвленийдобавляемвершины(1,5)и(1,5),следующиезавершиной(5,2).

ВподзадачеP(1,5)дуга(1,5)невходитвмаршрут.Полагаемстоимостьэтойдугиравной

.Вычисляем1,5=130иLB(1,5)=LB(5,2)+∆1,5=480.

РассмотримподзадачуP(1,5).Вычеркиваемстроку1истолбец5изматрицыдляпод-

задачиP(5,2).Дуга(1,5)образуетпутьсужевведеннойвмаршрутдугой:(1,5),(5,2).Поэтомуможноположитьc2,1=.Вычисляем2,1.

Процессостанавливаетсядляматриц2×2.Вэтомслучаеможнонайтирешениелибо

определить,чтоононесуществует.Получивновыйрекорд,можноотсечьнекоторыевет-

ви.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]