1
МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ Нижегородский государственный университет имени Н.И.Лобачевского Факуль...
156 downloads
323 Views
674KB Size
Report
This content was uploaded by our users and we assume good faith they have the permission to share this book. If you own the copyright to this book and it is wrongfully on our website, we offer a simple DMCA procedure to remove your content from our site. Start by pressing the button below!
Report copyright / DMCA form
1
МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ Нижегородский государственный университет имени Н.И.Лобачевского Факультет вычислительной математики и кибернетики МЕТОДИЧЕСКОЕ ПОСОБИЕ по курсу "Математические основы информатики" для студентов факультета ВМК специальность "Прикладная информатика" Часть 3
Нижний Новгород - 2004 год
2
Методическое пособие по курсу "Математические основы информатики" для студентов факультета ВМК специальности "Прикладная информатика" Часть 3. / Нжег.гос.ун-т, 2004, с.119
В методическом пособии излагается материал по курсу лекций "Математические основы информатики", читаемых в третьем семестре второго курса факультета ВМК. Третья часть пособия содержит материалы курса, связанные с экстремальными задачами переборного типа. Методическое пособие подготовлено профессором М.Х.Прилуцким.
3
ОГЛАВЛЕНИЕ 1. РАБОЧАЯ ПРОГРАММА КУРСА "МАТЕМАТИЧЕСКИЕ ОСНОВЫ ИНФОРМАТИКИ"...........................................................................................5 ПРЕДИСЛОВИЕ ..................................................................................................................................5 СОДЕРЖАНИЕ КУРСА .....................................................................................................................5 ПРАКТИЧЕСКИЕ ЗАНЯТИЯ ...........................................................................................................6 ЛИТЕРАТУРА (основная) ..................................................................................................................7 ЛИТЕРАТУРА (дополнительная) .....................................................................................................7
2. КРАТКИЙ КОНСПЕКТ ЛЕКЦИЙ. ...............................................................8 2.1.Задачи целочисленного булева программирования................................................................9 2.2. Каноническая и многомерная задачи о ранце и их интерпретации..................................10 2.3. Задача коммивояжера и ее интерпретации. ...........................................................................11 2.4. Задачи о назначениях и их интерпретации. ...........................................................................14 2.5. Задача целочисленного линейного программирования в общей постановке. ................16 2.6. Метод ветвей и границ. ..............................................................................................................17 2.7. Общая схема метода ветвей и границ Джеффриона-Марстена..........................................18 2.8. Решение канонической задачи о ранце методом ветвей и границ.....................................20 2.9. Решение многомерной задачи о ранце методом ветвей и границ. .....................................22 2.10. Решение задачи коммивояжера методом ветвей и границ................................................24 2.11. Решение задачи целочисленного линейного программирования методом ветвей и границ ...................................................................................................................................................25 2.12. Решение задачи о ранце с использованием табличной схемы..........................................27 2.13. Решение задачи о ранце с использованием рекуррентных соотношений динамического программирования ................................................................................................28 2.14. Решение задачи коммивояжера с использованием рекуррентных соотношений динамического программирования ................................................................................................29 2.15. Задачи теории расписаний.......................................................................................................30 2.16. Задачи теории расписаний с одним обслуживающим прибором .....................................30 2.17. Перестановочный прием в задачах теории расписаний ....................................................33 2.18. Теорема Лившица-Кладова.....................................................................................................34
4 2.19. Задачи теории расписаний в общей постановке..................................................................34 2.20. Задача Джонсона. Графики Ганта .........................................................................................36 2.21.Постановка задачи теории расписаний как задачи частично-целочисленного линейного программирования.........................................................................................................38 2.22. Сетевые модели. Расчет временных характеристик сетевых моделей ...........................40 2.23. Потоки в сетях. Теорема Форда-Фалкерсона о максимальном потоке ..........................42 2.24. Алгоритм Форда-Фалкерсона нахождения максимального потока в транспортной сети ........................................................................................................................................................46 2.25. Решение задачи о назначениях алгоритмом Куна ..............................................................48 2.26. Минимаксные задачи о назначениях ..................................................................................50 2.27. Задачи о назначениях с индивидуальными предпочтениями ..........................................51
3. ЗАДАЧНИК С РЕШЕНИЕМ ТИПОВЫХ ЗАДАЧ ....................................53 3.1. Задачи о ранце..............................................................................................................................53 3.1.1. Решение задачи о ранце методом ветвей и границ ...........................................................53 3.1.2. Решение задачи о ранце методом динамического программирования (табличная форма) ............................................................................................................................................................57 3.1.3. Решение задачи о ранце методом динамического программирования (рекуррентная схема).................................................................................................................................................58 3.1.4. Решить задачу о ранце ........................................................................................................59 3.2. Задачи коммивояжера ...............................................................................................................61 3.2.1. Решение задачи коммивояжера методом ветвей и границ ................................................61 3.2.2. Решение задачи коммивояжера с использованием рекуррентных соотношений динамического программирования.................................................................................................64 3.2.3. Решить задачу коммивояжера ...............................................................................................65 3.3. Задача Джонсона для двух станков. График Ганта для оптимального расписания....68 3.3.1. Решить задачу Джонсона. Построить график Ганта для оптимального расписания .......70 3.4. Задачи о назначениях .................................................................................................................74 3.4.1. Решить задачу о назначениях алгоритмом Куна .................................................................79 3.5. Минимаксные (максиминные) задачи о назначениях .........................................................82 3.5.1. Решить минимаксные и максиминные задачи о назначениях............................................85 3.6. Задачи о назначениях с индивидуальными предпочтениями ............................................87 3.6.1. Решить задачи о назначениях с индивидуальными предпочтениями методом ветвей и границ ................................................................................................................................................92 3.7. Нахождение максимального потока в транспортной сети алгоритмом ФордаФалкерсона..........................................................................................................................................97 3.7.1. Найти максимальный поток в транспортной сети.............................................................101 3.8. Расчет временных характеристик сетевых моделей ..........................................................106 3.8.1. Рассчитать временные характеристики сетевой модели ..................................................108
4. ДОМАШНИЕ КОНТРОЛЬНЫЕ ЗАДАНИЯ...........................................113
5
5. ВОПРОСЫ К ЭКЗАМЕНУ......................................................................115
1. РАБОЧАЯ ПРОГРАММА КУРСА "МАТЕМАТИЧЕСКИЕ ОСНОВЫ ИНФОРМАТИКИ" Часть 3. Специальность: "Прикладная информатика" ПРЕДИСЛОВИЕ
Целью курса является ознакомление студентов с фундаментальными понятиями, основными определениями и математическими методами информатики фундаментальной естественной науки, изучающей процессы передачи и обработки информации. В процессе изучения данного курса студенты обучаются законам и методам обработки информации, вопросам построения математических моделей для конкретных технических, экономических, социальных и физических систем, формализуемые как задачи дискретной оптимизации, изучают классические алгоритмы решения таких задач. Материалы данного курса будут использоваться в курсах "Прикладная информатика", " Теория вероятности и математическая статистика","Модели и методы принятия решений", и др.
СОДЕРЖАНИЕ КУРСА
3 семестр
6
МОДЕЛИ ПРИНЯТИЯ РЕШЕНИЙ 2. ЭКСТРЕМАЛЬНЫЕ ЗАДАЧИ ПЕРЕБОРНОГО ТИПА. Задачи целочисленного булева программирования. Каноническая и многомерная задачи о ранце и их интерпретации. Задача коммивояжера и ее интерпретации. Задачи о назначениях и их интерпретации. Задача целочисленного линейного программирования в общей постановке. Метод ветвей и границ. Общая схема метода ветвей и границ Джеффриона-Марстена. Решение канонической задачи о ранце методом ветвей и границ. Решение многомерной задачи о ранце методом ветвей и границ. Решение задачи коммивояжера методом ветвей и границ. Решение задачи целочисленного линейного программирования методом ветвей и границ. Решение задачи о ранце с использованием табличной схемы. Решение задачи о ранце с использованием рекуррентных соотношений динамического программирования. Решение задачи коммивояжера с использованием рекуррентных соотношений динамического программирования. Задачи теории расписаний. Задачи теории расписаний с одним обслуживающим прибором. Перестановочный прием в задачах теории расписаний. Теорема Лившица-Кладова. Задачи теории расписаний в общей постановке. Задача Джонсона. Графики Ганта. Постановка задачи теории расписаний как задачи частично-целочисленного линейного программирования. Сетевые модели. Расчет временных характеристик сетевых моделей. Потоки в сетях. Теорема Форда-Фалкерсона о максимальном потоке. Алгоритм Форда-Фалкерсона поиска максимального потока в транспортной сети. Алгоритмы решения задач о назначениях. Минимаксные задачи о назначениях. Задачи о назначениях с индивидуальными предпочтениями. ПРАКТИЧЕСКИЕ ЗАНЯТИЯ
ЭКСТРЕМАЛЬНЫЕ ЗАДАЧИ ПЕРЕБОРНОГО ТИПА.
7
1.Решение канонической и многомерной задач о ранце методом ветвей и границ. 2.Решение задачи коммивояжера методом ветвей и границ. 3.Решение задачи целочисленного линейного программирования методом ветвей и границ. 4.Задачи теории расписаний. 5.Расчет временных характеристик сетевой модели. 6.Потоки в сетях. Алгоритм Форда-Фалкерсона. 7.Решение задачи о назначениях алгоритмом Куна. 8.Минимаксные и максиминные задачи о назначениях. Задачи о назначениях с индивидуальными предпочтениями.
ЛИТЕРАТУРА (основная)
1.Корбут А.А., Финкельштейн Ю.Ю. Дискретное программирование. М. Наука, 1969. 2.Таха Х. Введение в исследование операций. М. Мир,1985,Том 1. 3.Вагнер Г. Основы исследования операций. М. Мир, 1972, том 1. ЛИТЕРАТУРА (дополнительная)
1.Танаев В.С., Шкурба В.В. Введение в теорию расписаний. М.Наука,1975. 2.Форд Л., Фалкерсон Д., Потоки в сетях. М. Мир, 1966. 3.Филлипс Д., Гарсиа-Диас А. Методы анализа сетей. М. Мир, 1984. 4.Сергиенко И.В."Математические модели и методы решения задач дискретной оптимизации" Киев, Наукова думка, 1988.
8
5.Батищев Д.И., Прилуцкий М.Х. "Оптимизация управленческих решений в сетевых моделях" Учебное пособие. Горький, ГГУ,1985. 6.Батищев Д.И., Коган Д.И. Вычислительная сложность экстремальных задач переборного типа. Учебное пособие. Изд. ННГУ, Н.Новгород, 1994.
2. КРАТКИЙ КОНСПЕКТ ЛЕКЦИЙ.
9
2.1.Задачи целочисленного булева программирования.
Под задачей математического программирования понимается задача (1): extr f(x),
(1)
x∈ D где D = {х
g (x) j
≤ 0,
j=1,2,...,n, x ∈ Q, Q ⊆ Rm }.
Здесь g j (x), j=1,2,...,n, и f(x) - произвольные функции, а extr - max или min. Функция f(x) называется целевой функцией, функционалом или критерием задачи (1), а D множеством или областью допустимых решений задачи (1). Среди задач типа (1) выделяют задачи, которые называют регулярными. Для них: - для каждого допустимого вектора x, x ∈D, может быть определена непустая окрестность; -можно указать достаточно эффективно проверяемые необходимые и достаточные условия локальной оптимальности, т.е. локальный оптимум может быть найден на множестве D при помощи конечного процесса ( или бесконечного сходящегося); -локальный оптимум целевой функции совпадает с глобальным. Примерами регулярных задач являются задачи выпуклого программирования (функция f(x) - вогнута, а функции g(x) -выпуклые). Если функции f(x) и g(x) - линейные, то задача называется задачей линейного программирования. Если область Q не является связной, то задача (1) называется дискретной задачей математического программирования или задачей дискретного программирования. Если функции f(x) и g(x) при этом являются линейными, то такая задача называется задачей целочисленного линейного программирования. Если
10
компоненты вектора x могут принимать лишь значения 0 или 1, то такая задача называется задачей целочисленного булева программирования. 2.2. Каноническая и многомерная задачи о ранце и их интерпретации.
Содержательное описание. Есть несколько “предметов” , о которых известны их “веса” и “полезности”. Задан “ранец” определённой грузоподъёмности. Требуется поместить в “ранец” “предметы” таким образом, чтобы они все “убрались” в “ранец” и суммарная “полезность” от них была максимальна. Математическая модель. Исходные параметры модели. Пусть i=1,2,...,m - номера предметов, v(i) - “вес” “предмета” с номеров i, c(i) - “полезность” “предмета” с номером i, i=1,2,...,m, v(0) - “вместимость” “ранца”. Варьируемые параметры модели. Обозначим через x - m мерный вектор, элементы которого x(i)=1, если “предмет” с номером i будет помещен в “ранец” и x(i)=0, если “предмет” с номером i не будет помещен в “ранец”. Ограничения математической модели. m
∑ v(i) x(i) ≤ v(0) ,
(1)
i =1
x(i)
∈
{0,1},
(2)
Постановка оптимизационной задачи. Критерий оптимальности для задачи о “ранце” имеет вид: m
F(x) = ∑ c(i) x(i ) i =1
→ max
.
(3)
11
Здесь ограничение (1) связано с вместимостью “ранца”, а условия (2) - естественные условия на введенные переменные. Критерий (3) связан с максимизацией суммарной “полезности” от предметов, помещенных в “ранец”. Задача (1) - (3) называется задачей о ранце (канонический случай). Если кроме ограничения (1) по “весу” в задаче присутствуют подобные ограничения по другим характеристикам “предметов”, т.е. ограничения (1) преобразуются в (4): m
∑ v(i,j) x(i) ≤ b(j) , j=1,2,...,m ,
(4)
i =1
где v(i,j) - есть j-ая характеристика “предмета” с номером i, i=1,2,...,m, j=1,2,...,n, а b(j) -”вместимость “ранца” по j-той характеристике, то задача (2), (3), (4) называется многомерной задачей о ранце. С помощью математических моделей ранцевого типа описываются следующие прикладные задачи: - задача загрузки уникального оборудования, - задача формирования портфеля заказов, обеспеченного ресурсами, - задача объемного планирования для предприятия, - задачи загрузки контейнеров и др. 2.3. Задача коммивояжера и ее интерпретации.
Содержательное описание. Бродячему торговцу (коммивояжеру) необходимо, начиная из выделенного города, обойти заданное количество городов и вернуться в начальный город, при этом в каждом городе коммивояжер должен побывать ровно один раз и суммарное пройденное им расстояние должно быть минимальным. Математическая модель.
12
Исходные параметры модели Пусть i=0,1,2,...,m - номера городов, i=0 - номер выделенного города (начало и окончание маршрута). Обозначим через R= r(i,j) - (m+1)(m+1) матрицу расстояний, элемент которой r(i,j) - расстояние между городом с номером i и городом с номером j. Варьируемые параметры модели. Обозначим через X= x(i,j) - (m+1)(m+1) матрицу неизвестных, элемент которой x(i,j) =1, если коммивояжер из города с номером i переедет в город с номером j, x(i,j) = 0, в противном случае; u(i) - специальные переменные, i=1,2,...m. Ограничения математической модели. m
∑ x(i,j) =1,
j=1,2,...,m,
(1)
i=1,2,...,m,
(2)
i =0
m
∑ x(i,j) =1, j =0
u(i) - u(j) + m x(i,j) ≤ m-1, i=1,2,...,m, j=1,2,...,m, i ≠ j., (3) x(i,j)
∈
{0,1}.
(4)
Здесь условия (1) означают, что коммивояжер ровно один раз въедет в каждый город (кроме города с номером 0); условия (2) означают, что коммивояжер ровно один раз выедет из каждого города (кроме города с номером 0), ограничения (3) означают существование лишь одного цикла, начинающегося в городе с номером 0, проходящего через все города и завершающегося в городе с номером 0; ограничения (4) являются естественными условиями на введенные переменные.
13
Покажем, что условия (3) являются необходимыми и достаточными условиями существования лишь одного цикла. Действительно, пусть это не так и найдется подцикл с числом городов k<m, не проходящий через город с номером 0. Складывая все неравенства (3) при условиях, что x(i,j)=1 по городам подцикла, получим mk ≤ (m-1)k (все u(i) и u(j) взаимно уничтожаются), что противоречит существованию подцикла длины k<m. С другой стороны, покажем, что для цикла, проходящего через все города, начинающегося и заканчивающегося в городе с номером 0, найдутся величины u(i), удовлетворяющие условиям (3). Положим u(i)=p, если город с номером i будет посещен коммивояжером p-ым по порядку, p=1,2,...,m. Пусть x(i,j) = 0. Тогда условия (3) примут вид: u(i) - u(j) ≤ m-1, что верно, так как p<m+1 и p>0. Пусть x(i,j) = 1. Тогда, так как если u(i) = p, то u(j)=p+1 (это следует из того, что город с номером j будет следующим в маршруте коммивояжера после города с номером i). Получим: u(i) - u(j) + m x(i,j) = p - (p+1) +m = m - 1, что и доказывает правомочность присутствия в модели ограничений (3). Постановка оптимизационной задачи. Критерий оптимальности для задачи коммивояжера имеет вид: m
m
i =0
j =0
F(X)= ∑ ∑ r(i,j) x(i,j)
→
min .
(5)
Задача (1) - (5) называется задачей коммивояжера или задачей бродячего торговца. С помощью рассмотренной математической модели описываются следующие прикладные задачи: - задача минимизации времени переналадок уникального оборудования; - задача развозки готовой продукции по потребителям;
14
- задача управления работой снегоочистительных машин и др. 2.4. Задачи о назначениях и их интерпретации.
Содержательное описание. Есть несколько исполнителей и несколько работ. Задана производительность каждого исполнителя по каждой работе. Необходимо так распределить исполнителей по работам, чтобы каждый исполнитель получил не более одной работы, каждая работа получила не более одного исполнителя и суммарная производительность от сделанных назначений была максимальна. Математическая модель. Исходные параметры модели. Пусть i=1,2,...,m - номера исполнителей, j=1,2,...,n - номера работ. Обозначим через R= r( i,j) - mn матрицу производительностей, элемент которой r(i,j) - есть производительность исполнителя с номером i на работе с номером j. Варьируемые параметры. Обозначим через X= x(i,j) - mn матрицу неизвестных, элемент которой x(i,j) принимает значение 1, если исполнитель с номером i будет назначен на работу с номером j, и значение 0, в противном случае. Ограничения математической модели. m
∑ x(i,j)
1,
j=1,2,...,n.
∑ x(i,j) ≤ 1,
i=1,2,...m.
≤
(1)
i =1
n
(2)
j =1
x(i,j)
∈
{0,1},
i=1,2,...m.
j=1,2,...,n.
(3)
Здесь ограничения (1) означают, что каждая работа будет назначена не более чем одному исполнителю, ограничения (2) означают, что каждый исполнитель может быть
15
назначен не более чем на одну работу, а условия (3) являются естественными ограничениями на введенные переменные. Постановка оптимизационной задачи. Критерий оптимальности для задачи о назначениях имеет вид: m
n
i =1
j =1
F(X) = ∑ ∑ r(i,j) x(i,j)
→ max.
(4)
Задача (1) - (4) называется задачей о назначениях с аддитивным критерием оптимальности. Если в качестве критерия оптимальности выбрать функционал F(X) = max r(i,j) x(i,j) → min, (5) где max берется по всем i=1,2,...,m и всем j=1,2,...n, то такая задача (1)-(3) называется минимаксной задачей о назначениях. Если в качестве критерия оптимальности выбрать функционал F(X) = min r(i,j) x(i,j) → max, (6) то задача (1)-(3), (6) называется максиминной задачей о назначениях. Замечание. Нетрудно показать (введением фиктивных исполнителей или фиктивных работ), что математическая модель (1)-(3) эквивалентна математической модели (7)-(9): m
∑ x(i,j) =1,
j=1,2,...,n.
(7)
i =1
n
∑ x(i,j) =1,
i=1,2,...m.
(8)
j =1
x(i,j) ∈{0,1}, i=1,2,...m. j=1,2,...,n, (9) где m=n. Рассмотрим следующие условия на введенные переменные: 0 ≤ x(i,j) ≤ 1 , i=1,2,...,m, j=1,2,...,n. (10)
16
Исходя из того, что матрица ограничений условий (7) - (8) является абсолютно унимодулярной ( целочисленная матрица называется абсолютно или вполне унимодулярной, если любой ее минор равен 1, -1 или 0), то любой опорный план математической модели (7), (8), (10) является целочисленным, отсюда вытекает эквивалентность математических моделей (1)-(3) и (7)-(9). Кроме того, так как из условий (7) и (8) и условий не отрицательности переменных, автоматически следует, что переменные не могут быть больше 0, исходная математическая модель (1) -(3) эквивалентна ( с точки зрения поиска оптимального решения задачи о назначениях) математической модели с ограничениями (7) , (8), условиями m=n и ограничениями 0 ≤ x(i,j), i=1,2,...,m, j=1,2,...,n. (11) С помощью рассмотренной математической модели описываются следующие прикладные задачи: - задача назначения исполнителей по работам с целью максимизации суммарной производительности по выполняемым работам; - задача о конвейере - распределение исполнителей по работам на конвейере так, чтобы время перемещения конвейера было минимально; - задача распределения вознаграждения в наихудшем случае и др.
2.5. Задача целочисленного линейного программирования в общей постановке.
Математическая модель включает в себя систему линейных алгебраических ограничений, которые в матричной форме имеют вид (1) -(3): Ax ≤ b ,
(1)
17
0≤x , x(i ) ∈Z,
(2) i=1,2,...,m,
(3)
где A nm матрица ограничений задачи, x - m мерный вектор столбец неизвестных, b - n мерный вектор строка правых частей или свободных членов, Z - множество целых чисел. В качестве критерия оптимальности выберем F(x)= (c,x) → extr. (4) Здесь c - m мерный вектор коэффициентов целевой функции, (c,x) -скалярное произведение векторов с и x. Задача (1) - (4) называется задачей целочисленного линейного программирования в общей постановке в матричной форме. 2.6. Метод ветвей и границ.
Впервые этот метод был предложен в 1960 году для решения задачи целочисленного линейного программирования. Для всей группы алгоритмов, вписывающихся в общую схему метода ветвей и границ, характерным является применение в их вычислительной схеме следующей основной идеи: последовательное использование конечности множества вариантов решений задачи и замена полного перебора сокращенным, направленным перебором. Полного перебора удается избежать за счет отбрасывания “неперспективных” множеств вариантов, т.е. таких, которые заведомо не могут содержать решения “лучшего”, чем решения, оставшиеся в не отброшенном множестве. В общей схеме метода эта идея реализуется путем последовательного разбиения всего множества допустимых решений на подмножества и построения оценок, позволяющих сделать вывод о том, какое из полученных подмножеств может быть отброшено без потери оптимального решения исходной задачи.
18
Основные понятия метода ветвей и границ. Релаксация (переход в равновесное состояние) задачи переход от исходной задачи к задаче с той же целевой функцией, но с другой областью допустимых решений, включающей в себя в качестве собственного подмножества множество допустимых решений исходной задачи. Свойства, связывающие исходную задачу с ее релаксацией: - если релаксация задачи не имеет решения, то и исходная задача решения не имеет, - если оптимальное решение релаксационной задачи принадлежит множеству допустимых решений исходной задачи, то это решение является оптимальным и для исходной задачи, - значение оптимума ( значение критерия на оптимальном решении) исходной задачи на минимум (максимум) не меньше (не больше) значения оптимума релаксационной задачи. Ветвление - разбиение всего множества допустимых решений на непересекающиеся подмножества. Кандидат - задача, для которой необходимо провести процедуру ветвления. Потомок - подзадача, полученная в результате ветвления кандидата. Стратегия - порядок выбора задач кандидатов. Рекорд -значение критерия, соответствующее наилучшему решению, полученному к данному этапу вычислений. 2.7. Общая схема метода ветвей и границ Джеффриона-Марстена.
Общая схема метода ветвей и границ ДжеффрионаМарстена включает в себя следующие шаги: Шаг 1. Открыть список задач кандидатов, включив в него исходную задачу. Присвоить рекорду большое число (малое число) для задачи на минимум (для задачи на максимум). Шаг 2.
19
Провести анализ задач кандидатов с целью выяснения его не пустоты. - если список не пуст, то перейти на следующий шаг 3, - если список пуст, то решение задачи завершено: если значение рекорда не изменилось по сравнению с первоначальным, то задача не имеет решения, в противном случае - задача решена. Шаг 3. Выбрать, используя принятую стратегию, текущую задачу кандидата из списка всех кандидатов. Шаг 4. Выбрать релаксацию задачи кандидата. Шаг 5. Провести анализ задачи кандидата с целью выяснения наличия у неё допустимых решений: - если множество допустимых решений задачи кандидата пусто, то перейти к шагу 2, исключив из списка рассматриваемую задачу кандидата. - в противном случае проверить, есть ли у кандидата допустимое решение, лучше рекорда. Если есть, то перейти на шаг 6, если нет, то исключить эту задачу из списка и перейти к шагу 2. Шаг 6. Выяснить, получено ли оптимальное решение кандидата: - если нет, то перейти к шагу 7. - если да, то пересчитать значение нового рекорда, запомнить рекордное решение и перейти на шаг 2. Шаг 7. Продолжать поиск оптимального решения задачи кандидата ? - если нет, то перейти к шагу 8, если да, то модифицировать релаксацию рассматриваемого кандидата и перейти к шагу 5. Шаг 8. Разветвить кандидата и включить его потомки в список кандидатов, исключив из списка самого кандидата. Перейти на шаг 2.
20
Замечание 1. В рассматриваемой схеме есть два блока, которые могут быть реализованы различными способами: - выбор очередного кандидата с использованием стратегии (шаг 3), - модернизация релаксации ( блок 7). Конкретная реализация этих блоков зависит от специфики исходной задачи. Замечание 2. Основным преимуществом метода ветвей и границ по отношению к другим универсальным методам, является возможность из-за ограниченного времени решения задачи, в любой момент прервать решение, выбрав в качестве приближенного решения исходной задачи то решение, которое соответствует рекорду, найденному к моменту прекращения вычислений.
2.8. Решение канонической задачи о ранце методом ветвей и границ.
Процедура оценок. В качестве релаксации задачи о ранце рассмотрим следующую задачу линейного программирования (здесь используются обозначения раздела 2.3): m
∑ v(i) x(i) ≤ v(0) ,
(1)
i =1
0 ≤ x(i)
≤
1, m
i=1,2,...,m.
F(x) = ∑ c(i) x(i ) i =1
→ max
(2)
.
(3)
21
Задачу (1) -(2) будем называть непрерывной задачей о ранце. Её решение может быть получено, например симплекс-методом, однако, специфика задачи позволяет для её решения предложить более эффективный алгоритм. Этот алгоритм основан на следующей теореме Данцига. Непрерывную задачу о ранце назовем приведенной, если отношения величин c(i,j) (полезностей) к соответствующим величинам v(i,j) (весам) не возрастают с ростом номеров i (предметов). Очевидно, что любую задачу о ранце путем перенумерации предметов, можно сделать приведенной. Теорема Данцига. Оптимальное решение непрерывной приведенной задачи о ранце находится с помощью следующих рекуррентных соотношений: i −1
x(i) = min ( v(i), v(0) - ∑ v(j) x(j))/v(i),
i=1,2,...,m.
j =1
Пусть x - оптимальное решение непрерывной приведенной задачи. Тогда верхняя оценка V для исходной задачи о ранце находится следующим образом: H= F(x). Если все коэффициенты c(i) , 1=1,2,...,m, целые числа (этого всегда можно добиться путем приведения указанных величин к общему знаменателя), то верхняя оценка может быть уменьшена. Величина V тогда может определяться как целая часть от F(x). Нижняя оценка так же находится с помощью оптимального решения непрерывной приведенной задачи о ранце, полученного с помощью рекуррентных соотношений из теоремы Данцига. Пусть y - m мерный целочисленный вектор, который получается с использованием оптимального решения x непрерывной задачи о ранце следующим образом: y(i) = x(i), если x(i) - целое, и y(i) = 0 в противном случае.
22
Тогда H = F(y) - является достижимой нижней оценкой, так как вектор y будет допустимым решением исходной (целочисленной) задачи о ранце. Процедура ветвления. Для задачи о ранце в качестве направления для ветвления выбирается направление, соответствующее переменной, которая является дробной в оптимальном решении непрерывной задачи о ранце. Если решение непрерывной задачи о ранце оказалось целочисленным, то в соответствующем направлении верхняя и нижняя оценки будут совпадать. Если верхняя и нижняя оценки в некотором направлении совпали, то в этом направлении не требуется проводить дальнейшее ветвление, так как лучшее возможное в этом направлении решение уже найдено. Оно соответствует нижней оценке этого направления. 2.9. Решение многомерной задачи о ранце методом ветвей и границ.
Процедура оценок. Рассмотрим многомерную задачу о ранце m
∑ v(i,j) x(i) ≤ b(j) , j=1,2,...,m ,
(1)
i =1
x(i)
∈
{0,1}, m
F(x) = ∑ c(i) x(i )
(2) → max
.
(3)
i =1
Назовем j-ой подзадачей о ранце задачу о ранце с ограничениями m
∑ v(i,j) x(i) ≤ b(j) ,
(4)
i =1
x(i)
∈
{0,1}, m
F(x) = ∑ c(i) x(i )
(5) → max
.
i =1
Рассмотрим новые ограничения
(6)
23
0 ≤ x(i) ≤ 1, i=1,2,...,m. (7) Назовем j-ой непрерывной задачей о ранце задачу (4), (6), (7). Для ее решения могут быть использованы рекуррентные соотношения теоремы Данцига ( для этого задачу надо сделать приведенной). Пусть x(j) - оптимальное решение j-той непрерывной задачи. Тогда в качестве верхней оценки исходной многомерной целочисленной задачи о ранце можно взять величину V= min F(x(j)),
(8)
где min берется по всем j=1,2,...,n. Для уменьшения значения верхней оценки, в случае, когда все значения c(i), i=1,2,...,m, целые, можно взять целую часть правой части выражения (8). Для определения нижней оценки рассмотрим m- мерный вектор y, с компонентами y(i) = 1, если все i -тые компоненты векторов x(j) равны 1 и y(i) = 0 в противном случае. Тогда нижняя оценка определяется величиной: H= F(y). Найденная таким образом нижняя оценка является достижимой, так как вектор y по построению является булевым и удовлетворяет всем ограничениям (1), т.е. является допустимым решением исходной целочисленной многомерной задачи о ранце. Процедура ветвления. В качестве направления для ветвления выбирается та переменная, которая является дробной в оптимальном решении непрерывной j-ой подзадачи о ранце, где j - номер той подзадачи, на котором достигается минимум выражения (8) при определении верхней оценки. Если такой переменной нет, то в качестве направления для ветвления может быть выбрана любая ещё не рассмотренная переменная.
24
2.10. Решение задачи коммивояжера методом ветвей и границ
Процедура оценок. Рассмотрим задачу коммивояжера, поставленную как задача частично целочисленного линейного программирования: m
∑ x(i,j) =1,
j=1,2,...,m,
(1)
i=1,2,...,m,
(2)
i =0 m
∑ x(i,j) =1, j =0
u(i) - u(j) + m x(i,j) ≤ m-1, i=1,2,...,m, j=1,2,...,m, i ≠ j., (3) x(i,j)
∈
{0,1}, m
m
i =0
j =0
(4)
F(X)= ∑ ∑ r(i,j) x(i,j)
→
min .
(5)
В качестве релаксации рассмотрим задачу без условий (3). Эта задача является задачей о назначениях с аддитивным критерием. Как было показано в разделе 2.4. ограничения (4) в этой задаче могут быть заменены на условия 0 ≤ x(i,j),
i=1,2,...,m, j=1,2,...,n,
(6)
и задача (1), (2), (5), (6), как задача линейного программирования, может быть решена, например, симплекс-методом ( в последующих разделах мы покажем как решать задачу о назначениях более эффективными чем симплекс-процедуры методами). Пусть X - оптимальное решение задачи о назначениях (1), (2), (5), (6). Тогда в качестве нижней оценки может быть выбрана величина H= F(X). Замечание.
(7)
25
Так как решение задачи о назначении требует значительных временных затрат, а решать такую задачу необходимо много раз, можно предложить другой, более эффективный, но менее точный способ определения нижней оценки. В качестве нижней оценки можно выбрать величину S, равную сумме минимальных элементов по строкам матрицы расстояний или величину C, равную сумме минимальных элементов по столбцам. Так как величину нижней оценки необходимо пытаться увеличивать (тем самым уменьшается интервал возможных значений оптимума исходной задачи) , то в качестве нижней оценки можно взять максимальное значение величин S и C. В качестве верхней оценки может быть выбрана величина значения критерия задачи (5) на любом допустимом решении задачи коммивояжера. Приведем в качестве примера следующий приближенный , так называемый “жадный” алгоритм решения, основанный на следующей стратегии выбора маршрута движения коммивояжера: коммивояжер из очередного города переходит в город, расстояние до которого минимально из тех городов, в которых коммивояжер еще не был (включая и город, из которого начал свой путь коммивояжер). Стратегии “жадных” алгоритмов могут быть различными, и для уменьшения значения верхней оценки можно выбирать минимальное среди значений функционала задачи, найденных при различных стратегиях выбора маршрута движения коммивояжера. Процедура ветвления. Ветвление выбирается по всем направлениям, еще не пройденным коммивояжером. 2.11. Решение задачи целочисленного линейного программирования методом ветвей и границ
Процедура оценок.
26
Рассмотрим задачу целочисленного линейного программирования в общей постановке в матричной форме. Ax ≤ b ,
(1)
0≤x ,
(2)
x(i ) ∈Z, F(x)= (c,x)
i=1,2,...,m, →
extr.
(3) (4)
Не уменьшая общности, будем считать, что все коэффициенты задачи целочисленные. Пусть x - оптимальное решение исходной задачи, y - m мерный вектор, оптимальное решение задачи линейного программирования (1), (2), (4), которая естественно является релаксацией для исходной целочисленной задачи линейного программирования. Пусть рассматриваемая задача является задачей на максимум (extr = max ). Тогда в качестве верхней оценки выбирается величина V=F(с,y), а точнее целая часть этой величины. Процедура определения нижней оценки для общей задачи целочисленного линейного программирования обычно не определена и считается, что нижняя оценка появляется лишь тогда, когда оптимальное решение непрерывной задачи линейного программирования оказывается целочисленным. Процедура ветвления. Если среди компонент вектора y нет дробных, то в этом направлении ветвление прекращается, т.к. лучшее решение в этом направлении исходной задачи определяется целочисленным вектором y. Пусть y(i) - некоторая дробная компонента. Ветвление происходит в направлении этой компоненты следующим образом. Пусть y(i) = [y(i)] + {y(i)}, где [s] - целая часть числа s, а {s} - дробная часть числа s. Тогда подзадачами, порожденными этим
27
направлением, будут две задачи линейного программирования, к исходным ограничениям первой из которых добавляется ограничение x(i) ≤ [y(i)] , а к исходным ограничениям второй задачи добавляется ограничение [y(i)] + 1 ≤ x(i). 2.12. Решение задачи о ранце с использованием табличной схемы
Рассмотрим задачу о ранце m
∑ v(i) x(i) ≤ v(0) ,
(1)
i =1
x(i)
∈
{0,1}, m
F(x) = ∑ c(i) x(i )
(2)
→ max
.
(3)
i =1
Не уменьшая общности, будем предполагать, что все параметры задачи целые неотрицательные числа. Обозначим через Z(k,p) - задачу (1) - (3), при условиях, что предметов k, k ≤ m, а вместимость ранца p, p ≤ v(0). Пусть R(k,p) - оптимум задачи Z(k,p). Тогда, очевидно, что оптимум исходной задачи (1) -(3) совпадает с оптимумом задачи Z(m,v(0)) и равен R(m,v(0)). Для определения величины R(m,v(0)) можно построить следующие рекуррентные соотношения: R(k+1,p) = R(k,p) , если v(k+1) > p, (4) R(k+1, p) = max { R(k,p), c(k+1) + R(k, p- v(k+1))}, если p> v(k+1) + 1.
28
Рекуррентные соотношения (4), с учетом граничных условий R(1,p) = 0, если с(1) > p, R(1,p) = c(1), если c(1) < p+1,
(5)
могут быть использованы для решения исходной задачи о ранце. Замечание. Результаты вычислений по рекуррентным соотношениям (4), (5) удобно представить в виде таблицы с m строками и v(0) столбцами (отсюда и название метода), в которой приводятся значения соответствующих величин R(k,p). Для того чтобы решить исходную задачу о ранце необходимо заполнить клетку таблицы с координатами: m - тая строки и столбец с номером v(0). Для этого не требуется заполнить все m v(0) клеток таблицы, а лишь те, которые используются для вычисления значений величины R(m,v(0)). 2.13. Решение задачи о ранце с использованием рекуррентных соотношений динамического программирования
Рассмотрим задачу о ранце m
∑ v(i) x(i) ≤ v(0) ,
(1)
i =1
x(i)
∈
{0,1}, m
F(x) = ∑ c(i) x(i )
(2)
→ max
.
(3)
i =1
Пусть G={1,2,...,m} - множество номеров предметов. Обозначим через W(G’, p) - суммарную полезность тех предметов, которые будут положены в ранец из предметов множества G’, при вместимости ранца p, и наилучшем
29
способе выбора предметов ( с точки зрения функционала задачи), G’ ⊆ G, p
(4)
где максимум берется по предметам из множества S. Рекуррентные соотношения (4), с учетом граничных условий: W(G’,p) = 0, если S - пустое множество. 2.14. Решение задачи коммивояжера с использованием рекуррентных соотношений динамического программирования
Рассмотрим задачу коммивояжера: m
∑ x(i,j) =1,
j=1,2,...,m,
(1)
i=1,2,...,m,
(2)
i =0 m
∑ x(i,j) =1, j =0
u(i) - u(j) + m x(i,j) ≤ m-1, i=1,2,...,m, j=1,2,...,m, i ≠ j., (3) x(i,j) ∈{0,1}. m
m
i =0
j =0
F(X)= ∑ ∑ r(i,j) x(i,j)
(4) → min
.
(5)
Пусть G = {0,1,...m} - множество городов. Обозначим через W(G’, i) - расстояние, которое пройдет коммивояжер из города с номером i через все города множества G’ в начальный город с номером 0, G’ ⊆ G, i ∈G\G’ при оптимальном выборе маршрута (с точки зрения критерия задачи коммивояжера). Тогда W(G’,i) = min [ r(i,j) + W(G’\{i}, j)],
(6)
30
где минимум берется по всем городам с номерами j ∈ G’. Рекуррентные соотношения (6), используя граничные условия: W(G’,i) = r(i,0), если G’ - пустое множество,
(7)
могут быть использованы для решения задачи коммивояжера (1) -(5). 2.15. Задачи теории расписаний
Изучением вопросов оптимального планирования и управления на сетевых структурах занимается теория расписаний - раздел дискретного программирования. Задачи теории расписаний, как правило, трудноразрешимы, хотя для некоторых из них существуют эффективные алгоритмы решения., К задачам теории расписаний относятся : -задачи упорядочения - минимизации функций на перестановках, -задачи согласования - определение длительностей выполнения работ при конфликтующих потребностях работ в ресурсах, -задачи распределения - при альтернативных технологиях выполнения работ. Мы в дальнейшем будем рассматривать лишь задачи теории расписаний, связанные с упорядочением работ. 2.16. Задачи теории расписаний с одним обслуживающим прибором
Общая постановка. Пусть имеется n заявок на обслуживание. Они обслуживаются одним прибором, соответственно, за t(1), t(2),...,t(n) единиц времени. Предполагается, что все заявки пришли в систему одновременно и ожидают обслуживания.
31
Пусть f(i,t) - функция штрафов за простой заявки с номером i, если её обработка завершится в момент времени t. Пусть r=( i(1),i(2),...,i(n)) - перестановка из n натуральных чисел {1,2,...,n}, которая определяет порядок обработки заявок. Пусть P -множество всех таких различных перестановок. Очевидно, что мощность этого множества есть n!. Обозначим через F(r) - суммарный штраф, получаемый за обработку заявок в порядке, определяемом перестановкой r. Тогда F(r) = f(i(1),t(i(1)) + f(i(2), t(i(1)+t(i(2))) +...+f(i(n), t(i(1)) + t(i(2)) +...+t(i(n))). При такой формализации задача одного обслуживающего прибора ставится как задача поиска такой перестановки из множества P, на которой достигает минимальное значение критерий задачи F. Примеры задач одного обслуживающего прибора. Задача директора. Содержательное описание. На прием к директору записалось несколько человек. Зная время на прием каждого, требуется в таком порядке принимать посетителей, чтобы суммарное время проведенное посетителями на приеме было минимально. Математическая модель. Исходные параметры модели. Пусть i=1,2,...,m -номера посетителей, t(i) - время, необходимое на обслуживание посетителя с номером i, i=1,2,...,m. Функции штрафов имеют вид f(i,t) = t, i=1,2,...,m. Варьируемые параметры. Обозначим через r=( i(1),i(2),...,i(n)) - перестановку из n натуральных чисел, определяющую порядок приема посетителей. Через P - обозначим множество всевозможных перестановок натуральных чисел {1,2,...,m}.
32
Ограничения математической модели. r
∈
P.
(1)
Постановка оптимизационной задачи. Критерий оптимальности для задачи директора имеет вид: F(r) = mt(i.1) + (m-1)t(i,2) + ...+ t(i,m)
→
min.
(2)
Задача мастера. Содержательное описание. Мастер, придя на работу, обнаружил неисправными несколько станков. Имея в своем распоряжении одну ремонтную бригаду, требуется определить такой порядок ремонта станков ( потери от простоя станков различны и зависят от производительностей станков такой), чтобы суммарные потери от простоя станков были минимальны. Математическая модель. Исходные параметры модели. Пусть i=1,2,...,m -номера станков, t(i) - время, необходимое на ремонт станка с номером i, i=1,2,...,m. Функции штрафов имеют вид f(i,t) = c(i)t, i=1,2,...,m. Варьируемые параметры. Обозначим через r=( i(1),i(2),...,i(n)) - перестановку из n натуральных чисел, определяющую порядок ремонта станков. Через P - обозначим множество всевозможных перестановок натуральных чисел {1,2,...,m}. Ограничения математической модели. r
∈
P.
Постановка оптимизационной задачи. Критерий оптимальности для задачи мастера имеет вид:
33
F(r) =c(i(1))t((i),1) + c(i(2))[t(i(1))+t(i(2))]+...+c(i(m))[t(i(1))+t(i(2))+...+t(i(m))] → min. 2.17. Перестановочный прием в задачах теории расписаний
Случай линейных функций штрафов. Пусть в задаче одного обслуживающего прибора функции штрафов линейные и имеют вид f(i,t)=c(i)t, i=1,2,...,m. Рассмотрим две перестановки r =(1,2,...,m) и q=(1,2,...,i1,i+1,i,...,m), т.е. в них поменяли местами i и i+1 заявки на обслуживание. Тогда, нетрудно показать, что F(r) - F(q) = c(i+1) t(i) - c(i) t(i+1). Если c(i+1) t(i) > c(i) t(i+1), то F(r) > F(q) и заявку с номером i+1 необходимо обслуживать раньше заявки с номером i. Отсюда следует алгоритм определения оптимальной (с точки зрения критерия задачи одного обслуживающего прибора) перестановки: заявки необходимо обрабатывать в порядке не убывания отношений коэффициентов штрафов c(i) к временам обслуживания заявок t(i). Отсюда, из m! различных перестановок эффективно строится перестановка, на которой значение критерия оптимальности минимально. Пусть G(i,j,t) - величина штрафа за выполнение заявок, начиная с момента времени t в порядке - сначала заявка с номером i, а затем заявка с номером j. Обозначим через R(i,j,t) = G(i,j,t) - G(j,i,t). Говорят, что задача теории расписаний решается с помощью перестановочного приема, если по исходным параметрам задачи можно найти некоторые константы , по ним заявки упорядочить и найти оптимальную перестановку.
34
Оказывается, что если знак величины R(i,j,t) не зависит от t, то к задаче может быть применен перестановочный прием. Для задачи директора и задачи мастера перестановочный прием применим.
2.18. Теорема Лившица-Кладова
Следующие классы функций: - f(i,t) = c(i) t + b(i), a>0, i=1,2,...,m, - f(i,t) = c(i) exp(at) + b(i), i=1,2,...,m, (a>0), - f(i,t) - монотонно-возрастающие функции, i=1,2,...,m, являются единственной совокупностью функций, для которых применим перестановочный прием. 2.19. Задачи теории расписаний в общей постановке
Содержательное описание. Есть несколько деталей, которые проходят обработку на станках. Задана матрица технологических маршрутов, определяющая порядок обработки деталей на станках, и матрица трудоемкостей, определяющая времена обработки деталей на станках. Допустимым расписанием обработки деталей на станках назовем порядок обработки деталей на станках, при котором одновременно на одном станку не может обрабатываться более одной детали, деталь может начинать обработку на очередном станке лишь после того, как её обработка закончилась на предшествующем по технологии станке, и обработка деталей на станках происходит без перерывов до полного выполнения соответствующих операций. Требуется найти такое допустимое расписание, время завершения выполнения всех операций для которого минимально. Математическая модель. Исходные параметры модели.
35
Пусть i=1,2,...,m, - номера станков, j=1,2,...,n - номера деталей. Обозначим через R= r(i,j) - mn матрицу технологических маршрутов, элемент которой r(i,j) - номер по порядку обработки детали с номером j на станке с номером i (элемент множества {1,2,...,m}). Обозначим через T = t(i,j) - mn матрицу трудоемкостей, элемент которой t(i,j) - время выполнения работы с номером j на станке с номером i. Варьируемые параметры. Пусть X= x(i,j) mn матрица неизвестных, элемент которой x(i,j) - время начала выполнения детали с номером j на станке с номером i. Пусть Y= y(i,j) mn матрица неизвестных, элемент которой y(i,j) - время окончания выполнения детали с номером j на станке с номером i. Пусть Z= z(i,j) mn матрица неизвестных, элемент которой z(i,j) - номер по порядку ( в расписании) обработки детали j на станке i. Ограничения математической модели. x(i,j) ≥ y(k,j) , для всех k, для которых r(i,j) > r(k,j), i,k=1,2,...,m, j=1,2,...,n. (1) y(i,j) = x(i,j) + t(i,j),
i=1,2,...,m, j=1,2,...,n.
(2)
x(i,j) ≥ y(i,k) , если z(i,j) > z(i,k), i=1,2,...,m, j,k=1,2,...,n. (3) x(i,j) ≥ 0, y(i,j) ≥ 0, i=1,2,...,m, j=1,2,...,n. z(i,j) ∈ {1,2,...,n}, i=1,2,...,m, j=1,2,...,n.
(4)
Здесь ограничения (1) означают, что начало обработки детали с номером j на станке с номером i может наступить не раньше, чем завершится обработка этой детали на всех
36
станках, предшествующих для этой детали станку с номером i. Ограничения (2) означают, что обработка деталей на станках происходит без перерывов. Ограничения (3) означают, что начало обработки детали с номером j на станке с номером i может наступить не раньше, чем на этом станке завершится обработка предшествующих по расписанию деталей. Ограничения (4) являются естественными условиями на введенные переменные. Постановка оптимизационной задачи. В качестве критерия оптимальности для задачи теории расписаний в общей постановке выбирается функционал F(X,Y,Z) = max z(i,j)
→
min,
(5)
где max берется по всем i, i=1,2,...,m, и j, j=1,2,...,n. Критерий (5) означает минимизацию времени завершения обработки деталей на станках. 2.20. Задача Джонсона. Графики Ганта
Если порядок обработки деталей на станках одинаков, то такие задачи называются задачами Джонсона ( по имени американского математика С.М. Джонсона, изучавшего такие задачи). В этих задачах, не уменьшая общности, предполагается, что порядок обработки каждой детали совпадает с естественной нумерацией станков. Среди задач Джонсона особая роль принадлежит задачам с двумя обслуживающими приборами (двумя станками), для которых Джонсон разработал эффективный алгоритм решения. Пусть j=1,2,...,n - номера деталей, A(j) и B(j) , соответственно, времена обработок детали с номером j на первом и втором станках, j=1,2,...,n.
37
Обозначим через x(j) - время простоя второго станка непосредственно перед началом обработки детали с номером j, j=1,2,...,n. Тогда критерием оптимальности задачи Джонсона с двумя станками станет функционал n
F(x) = ∑ x(j)
→
min.
j =1
Нетрудно показать, расписание обработки деталей на станках задается перестановкой r натуральных чисел из множества {1,2,...,n}. Если r=(1,2,...,n), то x(1)=A(1), x(2)= max {A(1)+A(2) - B(1) - x(1), 0}, ..., n
∑ x(j) = max {A(1)+...+A(n) - B(1)-...-B(n-1),...,A(1)+...+A(j) j =1
- B(1)-...-B(j-1), ..., A(1)}. Пусть r и q две перестановки r=(1,2,...,n), q=(1,2,...,j-1,j+1,j,...,n). Пусть F(r) min{A(j), B(j+1)}. (2) Отсюда работа j выполняется раньше работы j+1, если выполняется условие (2). Выше доказанное позволяет сформулировать алгоритм Джонсона построения оптимального расписания выполнения работ на двух станках: Шаг 1. Найти минимальную величину среди A(j) и B(j), j=1,2,...,n. Шаг 2. Если минимум достигается на A(j), то деталь с номером j ставится на обработку самой первой, если на B(j), то деталь с номером j ставится на обработку последней,
38
деталь с номером j исключается из рассмотрения, и процесс построения расписания продолжается с шага 1. Построенные расписания наглядно отображаются с помощью так называемых графиков Ганта или Гант-карт. График Ганта - это графическое отображения расписания, в котором каждому станку соответствует своя ось времени. 2.21.Постановка задачи теории расписаний как задачи частичноцелочисленного линейного программирования
Как и в разделе 2.19. пусть i=1,2,...,m, - номера станков, j=1,2,...,n - номера деталей, R= r(i,j) - mn матрица технологических маршрутов, элемент которой r(i,j) - есть номер по порядку обработки детали с номером j на станке с номером i (элемент множества {1,2,...,m}), T = t(i,j) mn матрица трудоемкостей, элемент которой t(i,j) означает время выполнения работы с номером j на станке с номером i. В качестве варьируемых параметров математической модели выберем: X= x(i,j) - mn матрицу неизвестных, элемент которой x(i,j) означает время начала обработки детали с номером j на станке с номером i, i=1,2,...,m, j=1,2,...,n; y(i,j,k)=1, если на станке с номером i деталь с номером j обрабатывается раньше детали с номером k , y(i,j,k)=0, если на станке с номером i деталь с номером k обрабатывается раньше детали с номером j; t - вспомогательная переменная, определяющая время завершения выполнения всех работ. Ограничения математической модели. x(i,j) - x(i,k) ≥ t(i,k) или k (i,k) - x(i,j) ≥ t(i,j) , i=1,2,...,m, j=1,2,...,n. (1) Одновременно на станке i не могут выполняться работы с номерами j и k.
39
x(i,j) - x(k,j) ≥ t(k,j), если r(k,j) < r(i,j), i,k=1,2,...,m, j=1,2,...,n. (2) Деталь с номером j переходит на обработку следующий станок лишь после того, как она пройдет полную обработку на предшествующем по технологии станке. x(i,j) + t(i,j) ≤ t. (3) Общее время завершения выполнения всех работ не превышает величины t. x(i,j) ≥ 0, i=1,2,...,m, j=1,2,...,n. (4) Естественные ограничения на введенные переменные. В построенной модели не формализованными являются условия (1). Для формализации условий (1) введем параметр Q достаточно большое число. Тогда рассмотрим ограничения (1’): (Q + t(i,k))y(i,j,k)+ x(i,j)- x(i,k) ≥ t(i,k), i=1,2,...,m, j=1,2,...,n, k=1,2,...,n, j ≠ k. (Q + t(i,j))(1-y(i,j,k))+ x(i,k)- x(i,j) ≥ t(i,j), i=1,2,...,m, j=1,2,...,n, k=1,2,...,n, j ≠ k. Покажем, что эти условия эквивалентны условиям (1): - пусть x(i,j) = x(i,k), тогда если y(i,j,k) = 1, то из (1’) получаем : Q+t(i,k) + x(i,j) -x(i,k)= Q + t(i,k) ≥ t(i,k), что всегда верно, x(i,k)- x(i,j) = 0 ≥ t(i,j), т.е. t(i,j) ≤ 0, т.е. t(i,j) = 0, а это означает, что деталь с номером i не проходит обработку на станке j, если y(i,j,k) = 0, то t(i,k)=0, т.е. деталь с номером j не обрабатывается на станке i; - пусть x(i,j) > x(i,k), т.е. деталь с номером j выполняется после детали k, т.е. y(i,j,k)= 0, тогда из условий (1’) получим x(i,j) - x(i,k) ≥ t(i,k), т.е. условия (1) выполняются;
40
- пусть x(i,j) < x(i,k), т.е. деталь с номером j выполняется раньше детали k, т.е. y(i,j,k)= 1, тогда из условий (1’) получим : Q+x(i,j) ≥ x(i,k), что всегда верно, x(i,k) - x(i,j) ≥ t(i,j), т.е. условия (1) выполняются. Таким образом, математическая модель приобретает вид (1’), (2), (3), (4), и к ней добавляются естественные условия на переменные: y(i,j,k) ∈ {0,1}, i=1,2,...,m, j=1,2,...,n, k=1,2,...,n. (5) Постановка оптимизационной задачи. В качестве критерия оптимальности выбирается функционал F(t) = t → min. (6) Полученная задача (1’), (2) - (6) является задачей частичноцелочисленного линейного программирования с числом ограничений M=mn(n+m-1)+1 и числом переменных N=mn(n+1)/2 +1. 2.22. Сетевые модели. Расчет временных характеристик сетевых моделей
Говорят, что задана сеть, если определено множество вершин и множество дуг, соединяющих эти вершины. Формально сеть задается ориентированным графом без петель и контуров, т.е. антирефлексивным бинарным отношением f=(V, A), где A ⊆ VxV, график которого A - определяет множество дуг, а множество, на котором бинарное отношение определено, V - является множеством вершин. Сетевой моделью называют сетевой график, элементам которого (либо вершинам, либо дугам, либо и тем и другим) поставлены в соответствие некоторые величины, называемые весами. Мы в дальнейшем будем рассматривать сетевые модели, в которых веса поставлены в соответствие дугам.
41
С помощью сетевой модели будем моделировать процесс производства некоторого нового изделия. Тогда вершины будут соответствовать моментам начала или окончания выполнения работ, дуги будут соответствовать условиям взаимозависимости выполняемых работ, а веса на дугах будут соответствовать ожидаемым длительностям выполнения работ. Пусть i=1,2,...,m, - номера работ, t(i) - длительность выполнения работы i, i=1,2,...,m. Обозначим через K(i) множество работ, непосредственно предшествующих работе с номером i (условие, определяемое технологическими требованиями на порядок выполнения работ). Требуется определить минимально возможное время, за которое можно выполнить все работы. Для решения этой задачи пользуются специальной схемой расчета временных характеристик, позволяющей не только дать ответ на поставленный вопрос, но и найти дополнительные характеристики, позволяющие более эффективно управлять процессом изготовления нового изделия. К таким характеристикам относятся: t(rn,i) - время самого раннего начала выполнения работы с номером i, t(rk,i) - время самого раннего окончания выполнения работы с номером i, t(pn,i) - время самого позднего начала выполнения работы с номером i, t(pk,i) - время самого позднего окончания выполнения работы с номером i, r(i) - резерв времени работы с номером i, т.е. время, на которое не в ущерб времени общего окончания выполнения всех работ, можно задерживать выполнение работы с номером (i), T(k) - время выполнения всех работ изделия. Величина T(k) называется длиной критического пути, а критическим путём называют путь, соединяющий некоторую начальную работу не имеющую
42
предшествующих работ, и некоторую конечную работу - не имеющую последующих, т.е. от неё зависящих работ, суммарное время выполнения всех работ которого максимально. Для расчета временных характеристик можно воспользоваться следующими рекуррентными соотношениями: t(rn,i) = 0, если K(i) - пустое множество. t(rk,i) = t(rn,i) + t(i), t(rn,i)= max t(rk,j), где максимум берется по всем работам j из множества K(i). t(pk,i) = t(rk,i) , если работа i не имеет последующих, t(pn,i) = t(pk,i) - t(i), t(pk,i) = min t(pn,j), где минимум берется по тем работам j, которые принадлежат множеству K(i), т.е. по тем работам, от которых зависит работа с номером i. r(i) = t(pn,i) - t(rn,i) = t(pk,i) - t(rk,i). Работы критического пути это те работы, резервы времени которых нулевые. 2.23. Потоки в сетях. Теорема Форда-Фалкерсона о максимальном потоке
Пусть G=(V,A) - взвешенный ориентированный (n,m) граф и R= r(i,j) - его матрица весов, элемент которой r(i,j) вес дуги (i,j), (i,j) ∈ A. Пусть в графе G нет петель и контуров. Выделим в нём две особые вершины - вершину “исток” (u) и вершину “сток” (s). Вершины графа G мы будем интерпретировать как географические пункты, дуги дороги их соединяющие, веса дуг - пропускные способности дорог, т.е. количество груза которое можно перевезти по дороге в единицу времени. Таким образом, построенную сетевую модель называют транспортной сетью. Задача поиска максимального потока в транспортной сети заключается в определении максимально возможного объема груза, который может
43
быть перевезен из истока в сток по существующим дорогам с заданными пропускными способностями. Математическая модель. В качестве неизвестных математической модели выберем nn матрицу X= x(i,j) , элемент которой x(i,j) - означает количество груза, которое в единицу времени будет перевезено из пункта i в пункт j, (i,j) ∈ A Ограничения математической модели. x(i,j)
≤
r(i,j),
(i,j)
∈
A.
(1)
По дороге (i,j) нельзя перевозить груза больше, чем пропускная способность дороги. x(i,j) = - x(j,i),
(i,j) ∈A.
(2)
Количество груза, перевезенное из пункта i в пункт j равен количеству груза с обратным знаком, которое будет перевезено в обратном направлении. x(i,j)= 0 , если i=j,
(i,j)
∈
A.
(3)
Внутри промежуточных пунктов груз не перевозится. n
∑ x(i,j) = 0, если i
∈
V\ {u,s}.
(4)
j =1
В промежуточных пунктах груз не пропадает. n
∑ x(u,j)
≥
0.
(5)
j =1
Из истока отправляется неотрицательное количество груза. Матрица X, удовлетворяющая условиям (1) -(5), называется потоком в транспортной сети. Постановка оптимизационной задачи.
44
В качестве критерия оптимальности выберем функционал n
F(X) = ∑ x(u,j)
→ max.
(6)
j =1
Критерий (6) означает максимизацию величины груза, который может быть перевезен по транспортной сети. Полученная задача (1) -(6) поиска максимального потока в транспортной сети является задачей линейного программирования. Её решение может быть осуществлено, например, симплекс-методом. Однако специфика задачи позволила для её решения построить более эффективный метод, основанный на теореме Форда-Фалкерсона. В дальнейшем будем называть величину F(X) - мощностью потока X. Поток X(0), на котором достигается оптимальное решение задачи (1) -(6), называется максимальным потоком. Назовем (S(u),S(s)) - сечением сети, если пара множеств S(u) и S(s) является разбиением множества вершин V, при котором u ∈ S(u), s ∈ S(s). Обозначим через Q(S(u), S(s)) = ∑ ∑ x(i,j) - величину i∈S(u) j∈S( s)
потока через сечение (S(u),S(s)), здесь суммирование происходит, соответственно, по всем вершинам множества S(u) и всем вершинам множества S(s). Обозначим через K(S(u), S(s)) = ∑
∑ r(i,j) - пропускную
i∈S(u) j∈S( s)
способность сечения (S(u),S(s)), здесь суммирование происходит, соответственно, по всем вершинам множества S(u) и всем вершинам множества S(s). Лемма. Мощность любого потока не больше пропускной способности любого сечения. Доказательство.
45
Надо доказать, что F(X) ≤ K(S(u), S(s)), для любого потока X и любого сечения (S(u), S(s)). Из условий (4), просуммировав его по всем i , i ∈ S(u)\{u}, получим
∑
∑
(i,j) =0,
(7)
i∈S(u)\ {u} j∈V
(здесь суммирование производится, соответственно, по i S(u)\{u} и j ∈V). Из условий (2) следует, что
∑
i∈S
∑ x(i,j) =0,
∈
(8)
j∈S
если суммирование берется по одному и тому же произвольному подмножеству S множества V.
Рассмотрим величину n
n
j =1
j =1
F(X) = ∑ x(u,j) = ∑ x(u,j) +
∑
∑ x(i,j), где во втором
i∈S(u)\ {u} j∈V
слагаемом суммирование берется, соответственно, по i ∈ S(u)\{u} и i ∈V, т.е. по условию (7) второе слагаемое равно 0. Преобразуем полученное выражение
∑
∑ x(i,j) +
i∈S(u) j∈S( s)
∑
∑ x(i,j), где в первом слагаемом
i∈S(u) j∈S(u)
суммирование берется, соответственно, по i ∈ S(u) и по i ∈ S(s), т.е. оно определяет величину потока через (S(u),S(s)) сечение, а во втором слагаемом суммирование берется по одному и тому же множеству S(u), т.е. по условию (8), второе слагаемое равно нулю. Учитывая условия (1) математической модели, получаем доказательство леммы.
46
Теорема Форда-Фалкерсона “О максимальном потоке в транспортной сети”. Если для некоторого потока найдется сечение такое, что величина потока через него равна пропускной способности этого сечения, то этот поток максимален. Доказательство. Пусть X(0) - поток, для которого существует сечение (S(u) , S(s)), такое, что величина потока X(0) через него равна величине K(S(u), S(s)) - пропускной способности (S(u) , S(s)) сечения. n
Из доказательства леммы следует, что ∑ x(u,j) = j =1
∑
∑ x(i,j) = L(X)
i∈S(u) j∈S( s)
где суммирование берется, соответственно, по i ∈ S(u) и по j ∈ S(s). Будем доказывать теорему от противного. Пусть существует поток X’ , такой, что F(X’) > F(X(0)), т.е. F(X’) = ∑ x’(u,j) = L(X’) > L(X(0)) = K(S(u), S(s)), что j∈V
противоречит лемме. Теорема доказана.
2.24. Алгоритм Форда-Фалкерсона нахождения максимального потока в транспортной сети
Назовем дугу (i.j) - насыщенной, если x(i,j) = p(i,j); если x(i,j) < p(i,j), то дуга (i,j) называется не насыщенной. Пусть S(u) - множество вершин, в каждую из которых можно попасть по ненасыщенным ребрам из вершины
47
истока. Очевидно, что сам исток, т.е. вершина u принадлежит множеству S(u). Здесь возможны два варианта: - вершина s (сток) принадлежит множеству S (u), тогда существует последовательность ненасыщенных дуг из вершины u в вершину s и величину потока можно увеличить; - вершина s не принадлежит множеству S(u), тогда пара множеств S(u) и V\S(u) образуют сечение, величина потока через которое равно пропускной способности этого сечения, тогда по теореме Форда-Фалкерсона найденный поток будет максимальным. На основе этого может быть сформулирован алгоритм, который называется алгоритмом Форда-Фалкерсона. Шаг 1. Построить начальный поток (например, x(i,j)=0, i,j ∈ V ). Шаг 2. Построить множество S(u) - вершин, достижимых по ненасыщенным ребрам из истока. Шаг 3. Проверить, s ∈S(u) ? - если да, то перейти на шаг 4, - если нет, то максимальный поток построен, т.е. задача решена. Шаг 4. Найти путь из истока в сток по ненасыщенным ребрам и максимально возможно увеличить величину потока. Уменьшить пропускные способности дуг, составляющих найденный путь на ту величину, на которую увеличена величина потока. Перейти на шаг 2. Конечность алгоритма следует из того, что на каждом шаге 4 из рассмотрения исключается, по крайней мере, одна дуга. Замечание. С помощью алгоритма Форда-Фалкерсона можно решать простейшую задачу о назначениях, т.е. задачу о назначениях, в которой матрица производительностей является булевой: если r(i,j) = 1, то исполнитель с номером i может выполнять работу с номером j, если r(i,j) = 0, то
48
исполнитель с номером i не может исполнять работу с номером j. Для решения простейшей задачи о назначениях алгоритмом Форда-Фалкерсона достаточно построить специальную транспортную сеть и найти в ней максимальный поток. Соответствующая транспортная сеть будет четырёхуровневой. Первый уровень состоит из истока, вершины второго уровня соответствуют исполнителям, третьего уровня - работам, а четвертый уровень включает в себя лишь одну вершину - сток. Исток соединен с вершинами, соответствующими исполнителям с пропускными способностями дуг (1,0), вершины, соответствующие исполнителям соединены с вершинами, соответствующими работам, если исполнитель может выполнять эту работу, Пропускные способности этих дуг (1,0). Вершины, соответствующие работам, соединены со стоком дугами с пропускными способностями (1,0). Максимальный поток, найденный для построенной сети и определит оптимальное решение простейшей задачи о назначениях. 2.25. Решение задачи о назначениях алгоритмом Куна
Рассмотрим формальную постановку задачи о назначениях: m
∑ x(i,j) =1,
j=1,2,...,n.
(1)
i=1,2,...m.
(2)
i =1
n
∑ x(i,j) =1, j =1
x(i,j) ≥ 0, x(i,j) ≤ 1, m
n
i =1
j =1
i=1,2,...m,
j=1,2,...,n.
(3)
i=1,2,...m,
j=1,2,...,n.
(4)
F(X) = ∑ ∑ r(i,j) x(i,j)
→
max.
(5)
49
Двойственная к ней задача имеет вид: y(i) + z(j)
≥
r(i,j), i=1,2,...,n, j=1,2,...,n.
m
n
i =1
j =1
Q(y,z) = ∑ y(i) + ∑ z(j)
→
min.
(6) (7)
Здесь m=n. Не уменьшая общности, будем считать, что коэффициенты r(i,j) целые. Пусть y’ и z’ - допустимое решение задачи (6),(7), т.е. y’(i) + z’(j) ≥ r(i,j), i=1,2,...,n, j=1,2,...,n. Допустимое решение может быть построено, например, так: y’(i) = max r(i,j), где максимум берется по всем j=1,2,...,n, z’(j) = 0, j=1,2,...,n. Начало процедуры решения задачи. Обозначим через P множество тех пар (i,j), для которых y’(i) + z’(j) = r(i,j). Рассмотрим простейшую задачу о назначениях с матрицей D, элементы которой d(i,j) = 1, если (i,j) ∈ P и d(i,j) =0 в противном случае. Вариант 1. Простейшая задача о назначениях с матрицей D имеет решение, т.е. каждый исполнитель назначен на свою работу и каждая работа получает своего исполнителя. Пусть X’ - оптимальное решения простейшей задачи о назначениях, тогда X’ - будет оптимальным решением и исходной задачи (1) -(5). Действительно, x’(i,j) = 1, если (i,j) ∈P, т.е. y’(i) + z’(i,j) = r(i,j), отсюда m
n
m
n
i =1
j =1
i =1
j =1
∑ ∑ r(i,j) x’(i,j) = ∑ y’(i) + ∑ z’(j), т.е. по теореме о равенстве линейных форм прямой и двойственной задач , X’ - оптимальное решение исходной задачи. Вариант 2. Простейшая задача о назначениях с матрицей D не имеет решения. Тогда найдется множество исполнителей K,
50
которые могут выполнять согласно матрице D работы из множества Q, причем мощности множеств равны, соответственно, k и q и при этом k>q. Рассмотрим новые двойственные переменные: y’’(i) = y’(i) - 1 , если i ∈K и y’’(i) = y’(i) в противном случае; z’’(j) = z’(j) +1 , если j ∈ Q и z’’(j) = z’(j) в противном случае. Тогда нетрудно показать, что новые значения двойственных переменных удовлетворяют условиям задач (6), (7) и при этом уменьшают значения критерия двойственной задачи. Переходим на начало процедуры решения задачи и так до тех пор, пока на очередном шаге не получим решение простейшей задачи о назначениях, которое и определит оптимальное решение исходной задачи. Конечность алгоритма Куна следует из того, что по теореме о соотношениях линейных форм прямой и двойственной задач, m
n
i =1
j =1
∑ ∑ r(i,j) x’(i,j)
≤
m
n
i =1
j =1
∑ y’(i) + ∑ z’(j).
2.26. Минимаксные задачи о назначениях
Математическая модель. Пусть i=1,2,...,m, - номера работ, j=1,2,...,n - номера исполнителей. R= r(i,j) mn матрица, элемент которой r(i,j) - время выполнения работы с номером i исполнителем с номером j. - обозначим mn матрицу, элементы Через X= x(i,j) которой x(i,j) ∈{0,1}, причем, если x(i,j) = 1, то работа с номером i будет закреплена за исполнителем с номером j, если x(i,j) =0 , то работа с номером i не будет закреплена за исполнителем с номером j. Ограничения математической модели. m
∑ x(i,j) i =1
≤
1,
j=1,2,...,n
51
n
∑ x(i,j) ≤ 1,
i=1,2,...m.
j =1
x(i,j) ∈{0,1},
i=1,2,...m.
j=1,2,...,n.
Постановка оптимизационной задачи. В качестве критерия оптимальности возьмем функционал F(X) = max r(i,j) x(i,j) → min, где max берется по всем i=1,2,...,m, j=1,2,...,n. Поставленная задача называется минимаксной задачей о назначениях. Для ее решения может быть предложен алгоритм, основанный на последовательном решении ряда простейших задач о назначениях. Обозначим через M=max r(i,j), где максимум берется по всем i, i=1,2,...,m, j=1,2,...,n; m= max{max(min r(i,j)), max(min r(i,j))}. Пусть m’ ∈[m, M] . Рассмотрим простейшую задачу о назначениях с матрицей R’, элемент которой r(i,j) = 1, если r(i,j) ≤ m’ ; r(i,j) = 0 , если r(i,j) > m’. Тогда, если простейшая задача о назначениях с матрицей R’ имеет решение, то время перемещения конвейера будет не более чем m’. Если простейшая задача о назначениях с матрицей R’ не имеет решения, то время перемещения конвейера будет больше, чем m’. Осуществив, например, двоичный поиск, через порядка N решений простейших задач о назначениях, где N= log (M-m), будет решена исходная задача. 2.27. Задачи о назначениях с индивидуальными предпочтениями
Рассматривается задача о назначении исполнителей по работам при условиях, что исполнителями на множестве работ заданы предпочтения, т.е., каждый исполнитель
52
упорядочивает все работы в порядке своих индивидуальных предпочтений независимо от производительностей. Решение задачи о назначениях назовем некомпроментируемым, если не существует другого решения задачи о назначениях, при котором ни одному из исполнителей не будет назначена работа “худшая” по его предпочтениям, а хотя бы одному - “лучшая”. Требуется среди всех некомпрментируемых решений найти такое, которое дает максимальное значение критерию задачи о назначениях. Для решения этой задачи может быть применена схема метода ветвей и границ. Индивидуальные процедуры метода. Процедуры оценок. В качестве нижней оценки может выступать любое некомпроментируемое решение, построение которого, например, можно производить по следующей схеме: Назначаем очередного исполнителя на “лучшую” для него ( в смысле его индивидуальных предпочтений) работу, еще не назначенную другим исполнителям. В качестве верхней оценки может выступать оптимальное решение классической задачи о назначениях, полученное, например, алгоритмом Куна. Процедура ветвления. Из начальной вершины необходимо осуществить ветвление по n направлениям, где n - количество работ), причем i -ое направление соответствует назначению исполнителя с номером i на работу, “лучшую” по его индивидуальным предпочтениям. Далее ветвление осуществляется из очередной вершины по s направлениям, где s - количество исполнителей, ещё не назначенных на работы.
53
3. ЗАДАЧНИК С РЕШЕНИЕМ ТИПОВЫХ ЗАДАЧ
3.1. Задачи о ранце 3.1.1. Решение задачи о ранце методом ветвей и границ
Рассмотрим задачу о ранце с четырьмя предметами. 5x(1)+7x(2)+3x(3)+ 6x(4) → max, 2x(1)+3x(2)+7x (3)+5x(4) ≤ 9, x(i) ∈ {0,1}, i=1,2,3,4. Переходим к релаксации задачи о ранце, сделав её приведенной (5/2>7/3>6/5>3/7): 5x(1)+7x(2)+6x(3)+3x(4) → max, 2x(1)+3x(2)+5x(3)+7x(4) ≤ 9, 0 ≤ x(i) ≤ 1, i=1,2,3,4. Строим оптимальное решение полученной задачи, используя рекуррентные соотношения из теоремы Данцига: i −1
x(i) = min ( v(i), v(0) - ∑ v(j) x(j))/v(i),
i=1,2,...,m.
j =1
Получим x’(1)=1, x’(2)=1, x’(3)=4/5, x(4)=0.
54
Верхняя оценка V для исходной задачи о ранце находится следующим образом: H= F(x’). Так как все коэффициенты целевой функции целые числа, то верхняя оценка может быть уменьшена. Величина V тогда определяется как целая часть от F(x’): V= [5+7+6*4/5] = 16. Нижняя оценка так же находится с помощью оптимального решения непрерывной приведенной задачи о ранце, полученного с помощью рекуррентных соотношений из теоремы Данцига. Пусть y -целочисленный вектор, который получается с использованием оптимального решения x’ непрерывной задачи о ранце следующим образом: y(i) = x’(i), если x’(i) - целое, и y(i) = 0 в противном случае. Для нашего примера : y(1)=1, y(2)=1, y(3)=0, y(4)=0. Тогда H = F(y) - является достижимой нижней оценкой, так как вектор y будет допустимым решением исходной (целочисленной) задачи о ранце, отсюда : H=5+7=12. Таким образом, мы установили, что оптимум исходной задачи ( значение критерия на оптимальном решениями) находится в интервале от 12 до 16. Процедура ветвления. Для задачи о ранце в качестве направления для ветвления выбирается направление, соответствующее переменной, которая является дробной в оптимальном решении непрерывной задачи о ранце. Если решение непрерывной задачи о ранце оказалось целочисленным, то в соответствующем направлении верхняя и нижняя оценки будут совпадать. Для нашего примера, так как переменная x’(3)=4/5, то в качестве направления для ветвления выберем переменную x(3). Проводим зондирование в двух направлениях: Первое направление : x(1), x(2) и x(4) - неизвестные, x(3)=1.
55
Второе направление: x(1), x(2) и x(4) - неизвестные, x(3)=0. В первом направлении, решая непрерывную приведенную задачу, находим оптимальное решение: x’(1)=1, x’(2)=2/3, x’(3)=1, x’(4)=0. Верхняя оценка в этом направлении V=15, нижняя оценка в этом направлении H=11. Во втором направлении, решая непрерывную приведенную задачу о ранце алгоритмом Данцига, получим оптимальное решение: x’(1)=1, x’(2)=1, x’(3)=0, x’(4)=4/7. Верхняя оценка в этом направлении V=13, нижняя оценка в этом направлении H=12. Для первого направления будем проводить зондирование по переменной x(2), так как значение этой переменной в оптимальном решении непрерывной задачи о ранце дробное ( x’(2)=2/3 ). В первом направлении: Случай 1. x(1), x(4) - неизвестные, x(2)=1, x(3)=1. Оптимальное решение непрерывной задачи о ранце имеет в этом случае вид: x’(1)=1/2, x’(2)=1, x’(3)=1, x’(4)=0. Оценки, соответствующие этому решению, принимают значения: V=15, H=13. Случай 2. x(1), x(4) - неизвестные, x(2)=0, x(3)=1. Оптимальное решение непрерывной задачи о ранце имеет в этом случае вид: x’(1)=1, x’(2)=0, x’(3)=1, x’(4)=2/7. Оценки, соответствующие этому решению, принимают значения: V=11, H=11. Так как в этом направлении значение верхней оценки совпало со значением нижней оценки, то в этом направлении зондирование проводить далее нецелесообразно ( уже есть лучшее решение в этом направлении, при котором значение критерия равно 11). Анализ полученных результатов позволяет применить процедуру отбрасывания:
56
- так как в случае 2 , где V=11 и H=11 значение верхней оценки V=11 (лучшее, что можно получить в этом направлении) меньше значения нижней оценки H=13 (существует решение исходной задачи о ранце со значением критерия 13) в случае 1, то первое направление может быть отброшено не в ущерб оптимальности; - так как во втором направлении, где V=13, а H=12, верхняя оценка не больше нижней оценки H=13 для случая 1, то второе направление может быть отброшено не в ущерб оптимальности. Для оставшегося случая 1 дробление необходимо осуществлять в направлении переменной x(1), так как в оптимальном решении непрерывной задачи о ранце значение этой переменной x’(1)=1/2 (дробное значение переменной). Вариант 1. x(4) - переменная, x(1)=1, x(2)=1, x(3)=1. В этом случае уравнение x(4) ≤ 9-2-3-5 не имеет неотрицательного решения, отсюда это направление не рассматривается. Вариант 2. x(4) - переменная, x(1)=0, x(2)=1, x(3)=1. Оптимальное решение полученной непрерывной задачи имеет вид: x’(1)=0, x’(2)=1, x’(3)=1, x’(4)=1/7. Оценки, соответствующие этому направлению имеют вид: V=[7+6+3*1/7]=13. H=7+6=13. Получили, что не отброшенным осталось лишь одно не отброшенное направление, в котором верхняя оценка совпала с нижней, отсюда исходная задача решена и оптимальное решение определяется нижней оценкой, т.е. оптимальное решение равно: x’(1)=0, x’(2)=1, x’(3)=1, x’(4)=0. Значение оптимума для исходной задачи о ранце равно F(x’) = 13.
57
3.1.2. Решение задачи о ранце методом динамического программирования (табличная форма)
Рассмотрим задачу о ранце с четырьмя предметами. 5x(1)+7x(2)+6x(3)+3x(4) → max, 2x(1)+3x(2)+5x(3)+7x(4) ≤ 9, x(i)
∈
{0,1},
i=1,2,3,4.
Все параметры задачи целые неотрицательные числа. Обозначим через Z(k,p) - задачу, при условиях, что предметов k, k ≤ m (для нашей задачи m=4), а вместимость ранца p, p ≤ v(0) (для нашей задачи v(0)=9 ). Пусть R(k,p) оптимум задачи Z(k,p). Тогда оптимум исходной задачи совпадает с оптимумом задачи Z(m,v(0)) и равен R(m,v(0)). Для определения величин R(m,v(0)) построим следующие рекуррентные соотношения: R(k+1,p) = R(k,p) , если v(k+1) > p, (1) R(k+1, p) = max { R(k,p), c(k+1) + R(k, p- v(k+1)}, если p> v(k+1) + 1. Эти рекуррентные соотношения, с учетом граничных условий R(1,p) = 0, если с(1) > p, R(1,p) = c(1), если c(1) < p+1,
(2)
будем использовать для решения исходной задачи о ранце. Результаты вычислений по рекуррентным соотношениям будем представлять в виде таблицы с m=4 строками и v(0)=9 столбцами , в которой приводятся значения соответственных величин R(k,p). Для того чтобы решить исходную задачу о ранце необходимо заполнить клетку
58
таблицы с координатами: m=4 , v(0)=9. Для этого не требуется заполнить все клетки таблицы, а лишь те, которые используются для вычисления значений величины R(4,9). 1 0
1 2 3 4
2 3 5(1) 5(1) 5(1)
4 5 5(1) 7(2)
6 7 5(1)
8
9 5(1) 12(1,2) 13(2,3) 13(2,3)
v(i) 2 3 5 7
Таблица заполняется следующим образом. R(4,9)=max { R(3,9), c(4)+ R(3,9-v(4))}= max { R(3,9), c(4)+ R(3, 9 - 7}= max { R(3,9), c(4)+ R(3,2}. Таким образом, для заполнения ячейки (4,9) необходимо заполнить ячейки (3,9) и (3,2). В свою очередь для заполнения этих ячеек необходимо заполнить другие ячейки. Первой заполняется ячейка (1,1). В ней, согласно граничным условиям (2), значение R(1,1)=0. Затем, используя рекуррентные соотношения (1) заполняются остальные ячейки, пока ячейка с номером (4,9) не будет заполнена. Решение задачи о ранце, согласно содержанию ячейки (4,9), будет иметь вид: x’(1)=0, x’(2)=1, x’(3)=1, x’(4)=0. Значение оптимума задачи F(x’)=13. 3.1.3. Решение задачи о ранце методом динамического программирования (рекуррентная схема)
Рассмотрим задачу о ранце с четырьмя предметами. 5x(1)+7x(2)+6x(3)+3x(4) → max, 2x(1)+3x(2)+5x(3)+7x(4) ≤ 9, x(i)
∈
{0,1},
i=1,2,3,4.
Множество предметов G={1,2,3,4} - множество номеров предметов.
c(i) 5 7 6 3
59
Обозначим через W(G’, p) - суммарную полезность тех предметов, которые будут положены в ранец из предметов множества G’, при вместимости ранца p, и наилучшем способе выбора предметов ( с точки зрения функционала задачи), G’ ⊆ G, p ≤ v(0). Обозначим через S = { i/ c(i) ≤ p, i ∈ G’}. Тогда W(G’,p) = max [ c(i) + W(G’\{i}, p - v(i)],
(1)
где максимум берется по предметам из множества S. Рекуррентные соотношения (1), с учетом граничных условий: W(G’,p) = 0, если S - пустое множество, позволяют решить задачу о ранце. W(G={1,2,3,4} , p=9) =max [5+ W({2,3,4},7), 7+ W({1,3,4},6), 6+ W({1,2,4},4), 3+ W({1,2,3},2)]; Отдельно найдем величины: W({2,3,4},7)=max [7+ W({3,4},4), 6+ W({2,4},2), 3+ W({2,3},0)=max(7,6,3)=7(2). W({1,3,4},6)=max[5+ W({3,4},4), 6+ W({1,4},1),]=max(5,6)=6(3). W({1,2,4},4)=max[5+ W({2,4},2), 7+ W({1,4},1)]=max(5,7)=7(2). W({1,2,3},2)=5(1). Таким образом, получили: W(G={1,2,3,4} , p=9)=max(5+7, 7+6, 6+7, 3+5)=13(2,3). Оптимальное решение исходной задачи имеет вид: x’=(0,1,1,0). F(x’)=13. 3.1.4. Решить задачу о ранце
а)Методом ветвей и границ. б)Методом динамического программирования (табличная форма). в)Методом динамического программирования (рекуррентная схема).
60
Задача 1.1. 3x(1)+2x(2)+6x(3)+4x(4) → max, 5x(1)+3x(2)+5x(3)+3x(4) ≤ 7 x(i) ∈ {0,1}, i=1,2,3,4. Задача 1. 2. 5x(1)+2x(2)+5x(3)+4x(4) → max, 6x(1)+3x(2)+5x(3)+3x(4) ≤ 7 x(i) ∈ {0,1}, i=1,2,3,4. Задача 1.3. 7x(1)+4x(2)+6x(3)+x(4) → max, 5x(1)+1x(2)+3x(3)+5x(4) ≤ 8 x(i) ∈ {0,1}, i=1,2,3,4. Задача 1.4. 3x(1)+7x(2)+8x(3)+4x(4) → max, 4x(1)+5x(2)+7x(3)+7x(4) ≤ 11 x(i) ∈ {0,1}, i=1,2,3,4. Задача 1.5. 3x(1)+3x(2)+5x(3)+6x(4) → max, 2x(1)+4x(2)+5x(3)+4x(4) ≤ 9 x(i) ∈ {0,1}, i=1,2,3,4. Задача 1.6. 5x(1)+4x(2)+7x(3)+3x(4) → max, 3x(1)+2x(2)+4x(3)+5x(4) ≤ 8
61
x(i)
∈
{0,1},
i=1,2,3,4.
Задача 1.7. 3x(1)+6x(2)+5x(3)+9x(4) → max, 2x(1)+4x(2)+3x(3)+6x(4) ≤ 7 x(i) ∈ {0,1}, i=1,2,3,4. Задача 1.8. 4x(1)+10x(2)+7x(3)+9x(4) → max, 2x(1)+5x(2)+4x(3)+5x(4) ≤ 9 x(i) ∈ {0,1}, i=1,2,3,4. Задача 1.9. 5x(1)+4x(2)+3x(3)+3x(4) → max, 3x(1)+2x(2)+4x(3)+5x(4) ≤ 7 x(i) ∈ {0,1}, i=1,2,3,4. Задача 1.10. 3x(1)+4x(2)+7x(3)+3x(4) → max, 2x(1)+2x(2)+6x(3)+5x(4) ≤ 8 x(i) ∈ {0,1}, i=1,2,3,4.
3.2. Задачи коммивояжера 3.2.1. Решение задачи коммивояжера методом ветвей и границ
Рассмотрим задачу коммивояжера с матрицей расстояний: 1 2 1- 4
3 3
4 2
5 4
62
2 3 4 5
3 2 3 3
3 1 4
2 2 2
3 3 3
2 2 3 -
В качестве нижней оценки H можно выбрать величину S, равную сумме минимальных элементов по строкам матрицы расстояний или величину C, равную сумме минимальных элементов по столбцам. Так как величину нижней оценки необходимо пытаться увеличивать (тем самым уменьшается интервал возможных значений оптимума исходной задачи) , то в качестве нижней оценки можно взять максимальное значение величин S и C. Величина Н= max{2+2+2+1+2, 2+1+2+2+2}=9. В качестве верхней оценки может быть выбрана величина значения критерия задачи на любом допустимом решении задачи коммивояжера. Применим для построения допустимого решения так называемый “жадный” алгоритм, основанный на следующей стратегии выбора маршрута движения коммивояжера: коммивояжер из очередного города переходит в город, расстояние до которого минимально из тех городов, в которых коммивояжер еще не был (включая и город, из которого начал свой путь коммивояжер). Получим маршрут коммивояжера, проходящий через города r=(1,4,2,3,5,1), длина которого F(r)=10. Отсюда верхняя оценка равна V=10. Ветвление будем проводить по всем возможным направлениям. Из города 1 в город 2: Нижняя оценка H=4+max(2+2+2+2,2+2+2+2)=12. Верхняя оценка определяется перестановкой r=(1,2,3,5,4,1) и равна V=14. Из города 1 в город 3: Нижняя оценка H=3+max(2+2+1+2, 2+1+3+2)=11,
63
Верхняя оценка определяется перестановкой r=(1,3,5,4,2,1) и равна V=12. Из города 1 в город 4: Нижняя оценка H=2+max(2+2+1+2, 2+1+2+2)=9. Верхняя оценка определяется перестановкой r=(1,4,2,3,5,1) и равна V=10. Из города 1 в город 5: Нижняя оценка H=4+max(2+2+1+2, 2+1+2+3)=12. Верхняя оценка определяется перестановкой r=(1,5,3,4,2,1) равна V=13. Анализ вариантов позволяет применить процедуру отбрасывания неперспективных направлений. Так как в направлении “из города 1 в город 4” верхняя (достижимая) оценка V=10, а во всех других направлениях нижняя оценка (лучшее, что можно получить в соответствующем направлении) больше этой величины ( в направлении” из города 1 в город 2” H=12, “из города 1 в город 3” H=11, “ из города 1 в город 5” H=12.), то все эти направления можно отбросить не в ущерб оптимальному решению исходной задачи коммивояжера. Продолжаем процедуру ветвления в направлении “из города 1 в город 4”. Здесь возможны три направления: “из города 4 в город 2” - H=2+1+max(2+2+2, 2+2+2)=9. r=(1,4,2,3,5,1), V=10. “из города 4 в город 3” - H=2+2+max(2+2+3, 2+3+ 2)=11. r=(1,4,3,5,2,1), V=13. “из города 4 в город 5” - H=2+3+max(2+2+2, 2+1+2)=11. Из рассмотренных направлений можно отбросить направления “из города 4 в город 3” и “из города 4 в город 5”, так как в этих направлениях нижние оценки не меньше верхней оценки в направлении ” из города 4 в город 2” V=10. Продолжаем ветвление в двух направлениях: “из города 2 в город 3” - H= 2+1+2+max(2+3, 2+2)=10. r=(1,4,2,3,5,1), V=10. “ из города 2 в город 5” -H=2+1+2+max(2+2, 2+2)=9.
64
r=(1,4,2,5,3,1), V=9. Первое направление отбрасываем и получаем оптимальное решение исходной задачи коммивояжера r’=(1,4,2,5,3,1), F(r’)=9. 3.2.2. Решение задачи коммивояжера с использованием рекуррентных соотношений динамического программирования
Рассмотрим задачу коммивояжера с матрицей расстояний R , элементы которой r(i,j) приведены в таблице:
1 2 3 4 5
1 3 2 3 3
2 4 3 1 4
3 3 2 2 2
4 2 3 3 3
5 4 2 2 3 -
Пусть G = {1,2,3,4,5} - множество городов. Обозначим через W(G’, i) - расстояние, которое пройдет коммивояжер из города с номером i через все города множества G’ в начальный город с номером 1, G’ ⊆ G, i ∈G\G’ при оптимальном выборе маршрута (с точки зрения критерия задачи коммивояжера). Тогда W(G’,i) = min [ r(i,j) + W(G’\{i}, j)],
(1)
где минимум берется по всем городам с номерами j ∈ G’. Рекуррентные соотношения (1), используя граничные условия: W(G’,i) = r(i,1), если G’ - пустое множество, могут быть использованы для решения задачи коммивояжера.
(2)
65
W({2,3,4,5},1)= min[4+ W({3,4,5},2), 3+ W({2,4,5},3), 2+ W({2,3,5},4), 4+ W({2,3,4},5)]. W({3,4,5},2)= min[2+ W({4,5},3), 3+ W({3,5},4), 2+ W({3,4},5)]=min[2+8, 3+7, 2+7)=9(2,5,4,3,1). W({2,4,5},3)=min[3+ W({4,5},2), 3+ W({2,5},4), 2+ W({2,4},5)]=min[3+8, 3+6, 2+7]=9(3,4,2,5,1; 3,5,4,2,1). W({2,3,5},4)=min [1+ W({3,5},2), 2+ W({2,5},3), 3+ W({2,3},5)]=min[1+6, 2+8, 3+ 8]=7(4,2,5,3,1). W({2,3,4},5)=min[4+ W({3,4},5), 2+ W({2,4},3), 3+ W({2,3},4)]=min[4+7, 2+7, 3+5]=8(5,4,2,3,1). Отсюда получаем: W({2,3,4,5},1)=min[4+9, 3+9, 2+7, 4+8]=9(1,4,2,5,3,1). Оптимальное решение задачи коммивояжера, полученное с помощью рекуррентных соотношений динамического программирования имеет вид: x’(1,4)=1, x’(4,2)=1, x’(2,5)=1, x’(5,3)=1, x’(3,1)=1. Остальные значения переменных в оптимальном решении равны нулю. Значение оптимума задачи F(X’)=9. 3.2.3. Решить задачу коммивояжера
а)Методом ветвей и границ. б)Методом динамического программирования. Задача 2.1.
1 2 3 4 5
1 3 9 7 3
2 6 7 5 7
Задача 2.2.
3 4 7 9 5
4 9 5 5 7
5 7 8 4 9 -
66
1 2 3 4 5
1 4 9 7 3
2 3 7 5 7
3 4 7 9 5
4 9 6 3 7
5 7 8 4 9 -
3 5 7 9 5
4 2 6 5 7
5 7 8 4 4 -
3 4 4 3 5
4 9 6 5 7
5 7 8 4 9 -
3 4 7 9 5
4 9 6 4 7
5 7 8 4 5 -
Задача 2.3.
1 2 3 4 5
1 3 9 7 3
2 6 7 5 7
Задача 2.4.
1 2 3 4 5
1 3 9 7 3
2 6 7 5 7
Задача 2.5.
1 2 3 4 5
1 3 2 7 3
2 3 7 5 7
67
Задача 2.6.
1 2 3 4 5
1 3 9 7 3
2 6 7 5 4
3 4 7 5 5
4 6 6 5 7
5 7 8 4 9 -
3 4 7 3 5
4 9 6 5 4
5 7 8 4 9 -
3 4 7 2 5
4 9 6 4 4
5 2 8 4 9 -
Задача 2.7.
1 2 3 4 5
1 3 9 7 3
2 3 7 5 7
Задача 2.8.
1 2 3 4 5
1 3 9 7 3
2 6 3 5 7
68
Задача 2.9.
1 2 3 4 5
1 3 9 7 3
2 6 7 2 7
3 3 7 7 5
4 9 6 5 7
5 7 4 4 9 -
3 4 7 4 5
4 9 3 5 7
5 7 8 4 9 -
Задача 2.10.
1 2 3 4 5
1 3 6 7 3
2 4 7 5 7
3.3. Задача Джонсона для двух станков. График Ганта для оптимального расписания.
Алгоритм Джонсона построения оптимального расписания выполнения работ на двух станках включает в себя следующие шаги:
69
Шаг 1. Найти минимальную величину среди A(j) и B(j), j=1,2,...,n. Шаг 2. Если минимум достигается на A(j), то деталь с номером j ставится на обработку самой первой, если на B(j), то деталь с номером j ставится на обработку последней, деталь с номером j исключается из рассмотрения, и процесс построения расписания продолжается с шага 1. Построенные расписания наглядно отображаются с помощью так называемых графиков Ганта или Гант-карт. График Ганта - это графическое отображения расписания, в котором каждому станку соответствует своя ось времени. Пусть матрица времен выполнения работ на станках имеет вид:
j 1 2 3 4 5 6 7 8
A(j) 1 3 4 2 4 3 2 2
B(j) 2 4 2 3 2 1 3 3
Здесь A(j) и B(j), соответственно, времена обработки детали с номером j на первом и втором станке. Оптимальное расписание определяется перестановкой r=(1,4,7,8,5,3,6). График Ганта имеет вид: 1 4 4 7 7 8 8 2 2 2 5 5 5 5 3 3 3 3 6 6 6 1 1 4 4 4 7 7 7 8 8 8 2 2 2 2 5 5 3 3 6 Длина оптимального расписания F(r)=22.
ст1 ст2
70
3.3.1. Решить задачу Джонсона. Построить график Ганта для оптимального расписания
Задача 3.1. j A(j) 1 1 2 3 3 4 4 2 5 4 6 3 7 2 8 2
B(j) 2 1 2 3 2 1 3 3
Задача 3.2. j 1 2 3 4 5 6 7 8
A(j) 3 3 4 2 4 3 2 2
Задача 3.3.
B(j) 2 4 4 3 2 4 3 3
71
j 1 2 3 4 5 6 7 8
A(j) 1 3 4 2 4 3 3 2
B(j) 2 1 2 3 5 1 2 3
Задача 3.4. j 1 2 3 4 5 6 7 8
A(j) 1 3 1 2 4 3 2 2
B(j) 2 4 2 1 4 1 3 3
Задача 3.5. j 1 2 3 4 5 6 7 8
A(j) 3 3 4 2 1 4 2 2
B(j) 2 4 2 3 2 1 3 3
72
Задача 3.6. j 1 2 3 4 5 6 7 8
A(j) 1 3 1 2 1 6 2 2
B(j) 2 4 2 3 2 1 3 1
Задача 3.7. j 1 2 3 4 5 6 7 8
A(j) 2 3 3 2 4 1 2 2
B(j) 1 4 2 3 2 3 3 3
Задача 3.8. j
A(j) B(j)
73
1 2 3 4 5 6 7 8
1 2 4 3 4 3 3 2
2 4 2 1 2 1 1 3
Задача 3.9.
j 1 2 3 4 5 6 7 8
A(j) 3 1 4 2 1 3 2 2
B(j) 2 4 2 3 2 5 3 3
Задача 3.10. j 1 2
A(j) B(j) 4 2 3 1
74
3 4 5 6 7 8
4 2 1 3 2 2
2 3 2 4 6 3
3.4. Задачи о назначениях
Рассмотрим задачу о назначениях с матрицей производительностей P: J(i)/R(i) R 1 J1 12 J2 6 J3 6 J4 6 J5 11
R2 R3 R4 R5 9 6 8 3 1
10 2 10 4 10
3 2 11 1 9
8 9 9 1 12
Здесь R (i) - работы, J(i) - исполнители, i=1,2,3,4,5. Элемент матрицы p(i,j) - означает производительность исполнителя J(i) по работе R(i). Алгоритм Куна работает следующим образом. Найдем максимальные элементы в матрице P и присвоим двойственным переменным y(i) и z(i) следующие значения: y’(1)=12, y’(2)=9, y’(3)=11, y’(4)=6, y’(5)=12; z’(1)=0, z’(2)=0, z’(3)=0, z’(4)=0, z’(5)=0.
75
Перейдем к простейшей задаче о назначениях с матрицей производительностей Q: R(1) R(2) R(3) J(1 1’ 0 0 ) J(2 0 0 0 ) J(3 0 0 0 ) J(4 1 0 0 ) J(5 0 0 0 )
R(4) R(5) 0 0 0
1’
1’
0
0
0
0
1
Решаем простейшую задачу о назначениях с матрицей Q. Для чего назначаем исполнителей по работам в соответствии с матрицей (пока это возможно). Получаем следующие назначения: Исполнителя J(1) назначаем на работу R(1), исполнителя J(2) на работу R(5), исполнителя J(3) на работу R(4). Других назначений больше сделать не удается. Первый исполнитель, не назначенный на работу J(4) может выполнять лишь работу R(1). На работу R(1) назначен исполнитель J(1). Исполнитель J(1) больше никакие работы выполнять не может. Получили замкнутую систему множеств: множество исполнителей {J(1), J(4} и множество работ {R(1)} (ни один исполнитель из множества {J(1), J(4}не может выполнять ни одной работы, кроме работ множества {R(1)}). Изменяем значения двойственных переменных: y’(1)=12-1=11, y’(4)=6-1=5. z’(1)=0+1=1. Строим матрицу Q’ простейшей задачи о назначениях с элементами: q’(i,j)=1, если y’(i)+z’(j)=p(i,j).
76
В нашем случае предыдущая матрица Q не изменится. Повторяем схему назначений и изменения значений двойственных переменных. Получим: y’(1)=11-1=10, y’(4)=5-1=4. z’(1)=1+1=2. Строим матрицу Q’ простейшей задачи о назначениях с элементами: q’(i,j)=1, если y’(i)+z’(j)=p(i,j). R(1) R(2) R(3) J(1 1’ 0 1 ) J(2 0 0 0 ) J(3 0 0 0 ) J(4 1 0 1’ ) J(5 0 0 0 )
R(4) R(5) 0 0 0
1’
1’
0
0
0
0
1
Решаем простейшую задачу о назначениях с матрицей Q’. Для чего назначаем исполнителей по работам в соответствии с матрицей (пока это возможно). Получаем следующие назначения: Исполнителя J(1) назначаем на работу R(1), исполнителя J(2) на работу R(5), исполнителя J(3) на работу R(4). Исполнителя J(4) на работу R(3). Других назначений больше сделать не удается. Не назначенным оказался исполнитель J(5). Он может выполнять лишь работу R(5). Работа R(5) назначена исполнителю J(2). Исполнитель J(2) может выполнять лишь работу R(5). Получили замкнутую систему множеств: множество исполнителей {J(2), J(5} и множество работ {R(5)}. Изменяем значения двойственных переменных:
77
y’(2)=9-1=8, y’(5)=12-1=11. z’(5)=0+1=1. Строим матрицу Q’ простейшей задачи о назначениях с элементами: q’(i,j)=1, если y’(i)+z’(j)=p(i,j). Так как предыдущая матрица Q’ не изменилась, повторяем схему назначения и изменения двойственных переменных: y’(2)=8-1=7, y’(5)=11-1=10. z’(5)=1+1=2. Строим матрицу Q’ простейшей задачи о назначениях с элементами: q’(i,j)=1, если y’(i)+z’(j)=p(i,j). R(1) R(2) R(3) J(1 1’ 0 1 ) J(2 0 0 0 ) J(3 0 0 0 ) J(4 1 0 1’ ) J(5 0 0 1 )
R(4) R(5) 0 0 0
1’
1’
0
0
0
0
1
Решаем простейшую задачу о назначениях с матрицей Q’. Для чего назначаем исполнителей по работам в соответствии с матрицей (пока это возможно). Получаем следующие назначения: Исполнителя J(1) назначаем на работу R(1), исполнителя J(2) на работу R(5), исполнителя J(3) на работу R(4). Исполнителя J(4) на работу R(3). Других назначений больше сделать не удается. Не назначенным оказался исполнитель J(5). Он может выполнять работы R(5) и R(3). Работа R(5) назначена исполнителю J(2), работа R(3) исполнителю J(4).
78
Исполнитель J(2) может выполнять лишь работу R(5) , исполнитель J(4) кроме работы R(3) может еще выполнять работу R(1). Работа R(1) назначена исполнителю J(1). Исполнитель J(1) может выполнять лишь работы R(1) и R(3). Получили систему независимых множеств: {J(1), J(2), J(4), J(5)} и {R(1), R(3), R(5)}. Изменяем значения двойственных переменных: y’(1)=10-1=9, y’(2)=7-1=6, y’(4)=4-1=3, y’(5)=10-1=9. z’(1)=2+1=3, z’(3)=0+1=1, z’(5)=2+1=3. Строим матрицу Q’ простейшей задачи о назначениях с элементами: q’(i,j)=1, если y’(i)+z’(j)=p(i,j). R(1) R(2) R(3) R(4) R(5)
J(1 ) J(2 ) J(3 ) J(4 ) J(5 )
1’
1
1
0
0
0
1
0
0
1’
0
0
0
1’
0
1
1
1’
0
0
0
0
1
0
1
Решаем простейшую задачу о назначениях с матрицей Q’. Для чего назначаем исполнителей по работам в соответствии с матрицей (пока это возможно). Получаем следующие назначения: Исполнителя J(1) назначаем на работу R(1), исполнителя J(2) на работу R(5), исполнителя J(3) на работу R(4). Исполнителя J(4) на работу R(3). Других назначений больше сделать не удается. Не назначенный исполнитель J(5) может выполнять работы R(3) и R(5).
79
Работа R(3) назначена исполнителю J(4), работа R(5) назначена исполнителю J(2). Исполнитель J(4) может выполнять еще работы R(1) и R(2). Исполнитель J(2) никаких новых работ выполнять не может. Работа R(1) назначена исполнителю J(1), а работа R(2) оказывается свободной, т.е. существует переназначение исполнителей по работам, в котором исполнитель J(5) получит для выполнения работу. Это переназначение имеет вид: исполнитель J(4) вместо работы R(3) назначается на работу R(2), а исполнитель J(5) назначается на работу R(3). Получили решение исходной задачи о назначениях: x’(1,1)=1, x’(2,5)=1, x’(3,4)=1, x’(4, 2)=1, x’(5,3)=1, остальные переменные равны нулю. Значение оптимума задачи F(X’)=12+9+11+3+10=45. Таким образом, получили следующую систему назначений: исполнитель J(1) назначен на работу R(1), исполнитель J(2) назначен на работу R(5), исполнитель J(3) назначен на работу R(4), исполнитель J(4) назначен на работу R(2), исполнитель J(5) назначен на работу R(3). Суммарная производительность от таких назначений составляет 45 единиц. 3.4.1. Решить задачу о назначениях алгоритмом Куна
Задача 4.1. J(i)/R(i) R 1
R2
R3
R4
R5
J1 J2 J3 J4 J5
10 6 8 3 1
10 12 10 4 10
3 2 11 1 9
8 9 9 1 12
6 6 6 6 11
80
Задача 4.2. J(i)/R(i) R 1
R2
R3
R4
R5
J1 J2 J3 J4 J5
9 6 11 3 1
10 9 10 4 13
3 2 11 1 9
8 7 9 1 12
J(i)/R(i) R 1
R2
R3
R4
R5
J1 J2 J3 J4 J5
9 6 8 6 1
10 2 10 4 10
3 2 11 1 9
8 6 9 1 12
J(i)/R(i) R 1
R2
R3
R4
R5
J1 J2 J3 J4 J5
9 6 8 3 1
10 2 10 4 10
3 2 11 1 9
11 9 9 7 12
J(i)/R(i) R 1
R2
R3
R4
R5
J1
9
10
3
8
7 6 6 6 11
Задача 4.3. 12 8 6 6 11
Задача 4.4. 12 6 6 6 12
Задача 4.5. 4
81
J2 J3 J4 J5
6 6 6 11
6 8 3 1
12 11 4 10
2 10 1 9
9 9 1 12
J(i)/R(i) R 1
R2
R3
R4
R5
J1 J2 J3 J4 J5
9 6 8 3 1
10 2 10 4 10
3 2 7 1 9
12 9 11 1 12
J(i)/R(i) R 1
R2
R3
R4
R5
J1 J2 J3 J4 J5
9 6 8 3 1
10 2 11 7 10
3 2 9 1 9
8 9 9 1 12
J(i)/R(i) R 1
R2
R3
R4
R5
J1 J2 J3 J4
13 6 8 7
10 2 10 4
3 2 11 1
8 9 9 1
Задача 4.6. 10 6 6 6 12
Задача 4.7. 6 6 6 6 11
Задача 4.8. 10 6 6 6
82
J5
12
1
10
9
9
J(i)/R(i) R 1
R2
R3
R4
R5
J1 J2 J3 J4 J5
9 6 8 3 1
10 2 12 4 12
3 2 11 1 9
8 9 9 1 9
J(i)/R(i) R 1
R2
R3
R4
R5
J1 J2 J3 J4 J5
9 6 8 3 1
10 2 10 4 10
3 2 11 1 9
8 6 9 1 8
Задача 4.9. 7 6 6 6 11
Задача 4.10. 8 9 6 6 12
3.5. Минимаксные (максиминные) задачи о назначениях
Рассмотрим задачу о назначениях с матрицей производительностей R= r(i,j) (5x5), элемент которой r(i,j) - время выполнения работы с номером i исполнителем с номером :
83
J(i)/R(i) R(1) R(2) R(3) R(4) R(5)
J(1) J(2) J(3) J(4) J(5)
3 1 5 4 4
4 7 3 3 1
5 4 5 1 5
4 6 4 2 4
3 2 3 7 4
Через X= x(i,j) - обозначим (5x5) матрицу, элементы которой x(i,j) ∈{0,1}, причем, если x(i,j) = 1, то работа с номером i будет закреплена за исполнителем с номером j, если x(i,j) =0 , то работа с номером i не будет закреплена за исполнителем с номером j. Требуется так назначить исполнителей по работам, чтобы выполнялись условия канонической задачи о назначениях (каждый исполнитель назначается точно на одну работу, а каждая работа получает точно одного исполнителя) и минимальная из производительностей (от найденного назначения) была бы максимальна. Для решения задачи применим алгоритм, основанный на последовательном решении ряда простейших задач о назначениях. Обозначим через m=min r(i,j), где минимум берется по всем i, i=1,2,3,4,5, j=1,2,3,4,5. Тогда m=1. Через M= min{min(max r(i,j)), min(max r(i,j))}, где max берется в первом члене по i, i=1,2,3,4,5, а во втором члене по j=1,2,3,4,5. Соответственно, max берется (в скобках) сначала по j, j=1,2,3,4,5, а затем по i, i=1,2,3,4,5. M=min{ min(5,7,5,7,5), min(5,7,5,6,7)}=5. Пусть m’ ∈[1, 5] . Для осуществления двоичного поиска, положим m’=3. Рассмотрим простейшую задачу о назначениях с матрицей R’, элемент которой r(i,j) = 0, если r(i,j) ≤ 3 ; r(i,j) = 1 , если r(i,j) > 3.
84
Получим простейшую задачу о назначениях с матрицей Q: J(i)/R(i) R(1) R(2) R(3) R(4) R(5)
J(1) J(2) J(3) J(4) J(5)
0 0 1 1 1
1 1 0 0 0
1 1 1 0 1
1 1 0 0 1
0 0 0 1 1
Эта задача имеет решение (решать ее можно, например, используя алгоритм Форда-Фалкерсона поиска максимального потока в транспортной сети). x’(1,2)=1, x’(2,4)=1, x’(3,3)=1, x’(4,1)=1, x’(5,5)=1. Отсюда, исходная задача допускает решение со значением оптимума не меньше чем m’=4. Попытаемся получить лучшее решение. Для этого выберем в качестве m’=4 и построим новую матрицу простейшей задачи о назначениях Q’: J(i)/R(i) R(1) R(2) R(3) R(4) R(5)
J(1) J(2) J(3) J(4) J(5)
0 0 1 0 0
0 1 0 0 0
1 0 1 0 1
0 1 0 0 0
0 0 0 1 0
Эта задача не имеет решения (например, из-за того, что исполнители J(1) и J(3) могу выполнять (по матрице Q’) лишь одну работу R(3). Таким образом, оптимальное назначение определяется случаем, когда m’=3 и задается следующими значениями матрицы неизвестных: x’(1,2)=1, x’(2,4)=1, x’(3,3)=1, x’(4,1)=1, x’(5,5)=1, остальные переменные равны нулю.
85
3.5.1. Решить минимаксные и максиминные задачи о назначениях
Задача 5.1. J(i)/R(i) R(1) R(2) R(3) R(4) R(5)
J(1) J(2) J(3) J(4) J(5)
6 1 5 4 4
4 7 3 3 1
5 4 5 1 5
4 6 8 2 4
3 2 3 7 7
Задача 5.2. J(i)/R(i) R(1) R(2) R(3) R(4) R(5)
J(1) J(2) J(3) J(4) J(5)
4 1 5 4 4
4 7 3 5 1
5 3 5 1 5
4 6 4 2 4
3 2 3 7 7
Задача 5.3. J(i)/R(i) R(1) R(2) R(3) R(4) R(5)
J(1) J(2) J(3) J(4) J(5)
6 1 5 4 4
Задача 5.4.
4 4 8 7 1
5 4 5 4 5
4 6 4 2 3
3 2 3 7 4
86
J(i)/R(i) R(1) R(2) R(3) R(4) R(5)
J(1) J(2) J(3) J(4) J(5)
3 1 4 4 6
4 7 3 7 1
5 4 3 1 5
4 3 4 2 4
6 2 3 7 4
Задача 5.5. J(i)/R(i) R(1) R(2) R(3) R(4) R(5)
J(1) J(2) J(3) J(4) J(5)
5 3 5 4 6
4 7 3 3 1
5 4 7 1 5
4 6 4 4 4
3 2 3 7 3
Задача 5.6. J(i)/R(i) R(1) R(2) R(3) R(4) R(5)
J(1) J(2) J(3) J(4) J(5)
8 4 5 4 4
4 7 5 3 1
5 4 8 1 5
4 6 5 2 4
3 2 3 5 4
Задача 5.7. J(i)/R(i) R(1) R(2) R(3) R(4) R(5)
J(1) J(2) J(3) J(4) J(5)
5 1 5 4 4
Задача 5.8.
4 8 4 4 1
5 4 5 1 5
4 6 7 2 4
3 2 3 3 4
87
J(i)/R(i) R(1) R(2) R(3) R(4) R(5)
J(1) J(2) J(3) J(4) J(5)
3 1 5 4 4
9 7 3 3 6
5 4 4 1 5
4 6 7 2 4
3 2 3 7 4
Задача 5.9. J(i)/R(i) R(1) R(2) R(3) R(4) R(5)
J(1) J(2) J(3) J(4) J(5)
6 1 5 4 4
7 7 6 7 4
5 4 5 1 5
4 6 4 2 4
3 2 3 7 4
Задача 5.10. J(i)/R(i) R(1) R(2) R(3) R(4) R(5)
J(1) J(2) J(3) J(4) J(5)
2 5 5 4 4
4 7 4 3 1
5 4 3 1 5
4 6 4 5 4
3 2 3 3 4
3.6. Задачи о назначениях с индивидуальными предпочтениями
Рассмотрим задачу о назначении 4 исполнителей по 4 работам при условиях, что исполнителями на множестве
88
работ заданы предпочтения, т.е., каждый исполнитель упорядочивает все работы в порядке своих индивидуальных предпочтений независимо от производительностей. Пусть матрица производительностей R (размера 5x5) имеет вид: J(i)/R(i)
R(1)
R(2)
R(3)
R(4)
J(1) J(2) J(3) J(4)
3 4 4 1
4 5 3 3
6 3 1 2
2 2 1 5
Матрица предпочтений пусть имеет вид: R(2) R(4) R(1) R(3) J(1)
R(2) R(1) R(3) R(4) J(2)
R(1) R(2) R(4) R(3) J(3)
R(1) R(4) R(3) R(2) J(4)
Здесь первый столбец определяет предпочтения исполнителя J(1) на множестве работ, причем самой “лучшей” для него является работа R(3), следующей по предпочтению R(1), затем R(4) и “наихудшей” R(2). Решение задачи о назначениях называется некомпроментируемым, если не существует другого решения задачи о назначениях, при котором ни одному из исполнителей не будет назначена работа “худшая” по его предпочтениям, а хотя бы одному - “лучшая”. Требуется среди всех некомпрментируемых решений найти такое, которое дает максимальное значение критерию задачи о назначениях, т.е. максимизирует суммарную производительность от назначения. Для решения этой задачи применим схему метода ветвей и границ. Процедуры оценок.
89
В качестве нижней оценки выберем некомпроментируемое решение, построение которого мы будем производить по следующей схеме: назначаем очередного исполнителя на “лучшую” для него ( в смысле его индивидуальных предпочтений) работу, еще не назначенную другим исполнителям. Для нашего примера получаем J(1) - R(3), J(2) - R(4), J(3) - R(2), J(4) - R(1). Тогда H=12. В качестве верхней оценки возьмем значение оптимума для канонической задачи о назначениях, полученное алгоритмом Куна. Оптимальное решение канонической задачи определяется следующими назначениями: J(1) - R(3), J(2) - R(2), J(3) - R(1), J(4) - R(4), отсюда V=20. Процедура ветвления. Из начальной вершины осуществляем ветвление по 4 направлениям, причем i -ое направление соответствует назначению исполнителя с номером i на работу, “лучшую” по его индивидуальным предпочтениям. Направление 1. J(1) - R(3). Направление 2. J(2) - R(4). Направление 3. J(3) - R(3). Направление 4. J(4) - R(2). В направлении 1 “некомпроментируемое” решение определяется назначениями: J(1) - R(3), J(2) - R(4), J(3) - R(2), J(4) - R(1). Тогда H=12. Решение канонической задачи о назначениях определяется назначениями: J(1) - R(3), J(2) - R(2), J(3) - R(1), J(4) - R(4), отсюда V=20. В направлении 2 “некомпроментируемое” решение определяется назначениями: J(1) - R(3), J(2) - R(4), J(3) - R(2), J(4) - R(1). Тогда H=12. Решение канонической задачи о назначениях определяется назначениями:
90
J(1) - R(3), J(2) - R(4), J(3) - R(1), J(4) - R(2), отсюда V=18. В направлении 3 “некомпроментируемое” решение определяется назначениями: J(1) - R(1), J(2) - R(4), J(3) - R(3), J(4) - R(2). Тогда H=12. Решение канонической задачи о назначениях определяется назначениями: J(1) - R(1), J(2) - R(2), J(3) - R(3), J(4) - R(4), отсюда V=14. В направлении 4 “некомпроментируемое” решение определяется назначениями: J(1) - R(3), J(2) - R(4), J(3) - R(2), J(4) - R(2). Тогда H=12. Решение канонической задачи о назначениях определяется назначениями: J(1) - R(3), J(2) - R(4), J(3) - R(1), J(4) - R(2), отсюда V=15. В направлении 1 есть 3 варианта: Вариант 1. J(1) - R(3), J(2) - R( 4). “Некомпроментируемое” решение : J(3) - R(2 ), J(4) - R(1), определяет H=12. Оптимальное решение канонической задачи определяется решением: J(3) - R(1), J(4) - R(2), отсюда V=15. Вариант 2. J(1) - R(3), J(3) - R( 4). “Некомпроментируемое” решение : J(2) - R(1 ), J(4) - R(2), определяет H=14. Оптимальное решение канонической задачи определяется решением: J(2) - R(1), J(4) - R(2), отсюда V=14. Вариант 3. J(1) - R(3), J(4) - R( 2). “Некомпроментируемое” решение : J(2) - R(1), J(3) - R(4), определяет H=14. Оптимальное решение канонической задачи определяется решением: J(2) - R(4), J(3) - R(1), отсюда V=15. Процедура отбрасывания неперспективных направлений позволяет отбросить направление 3, так как в этом
91
направлении V=14, а вариант 3 имеет значение нижней оценки H=14. Продолжаем зондирование в направлении 1, вариант 1. Случай 1. J(1) - R(3), J(2) - R(4), J(3) - R(2), J(4) - R(1). Верхняя оценка совпадает с нижней V=H=12. Случай 2. J(1) - R(3), J(2) - R(4), J(4) - R(2), J(3) - R(1). Верхняя оценка совпадает с нижней V=H=15. Результаты, полученные в случае 2 ( есть решение со значением критерия 15) позволяют отбросить вариант 2 ( лучшее возможное решение имеет значение критерия 14), вариант 3 (лучшее возможное значение критерия равно 15), случай 1 (значение критерия 12) и направление 4 (лучшее возможное значение критерия 15). Осталось провести зондирование в направлении 2. В направлении 2 есть три варианта. Вариант 1. J(2) - R(4), J(1) - R( 3). “Некомпроментируемое” решение : J(3) - R(2 ), J(4) - R(1), определяет H=12. Оптимальное решение канонической задачи определяется решением: J(3) - R(1), J(4) - R(2), отсюда V=15. Вариант 2. J(2) - R(4), J(3) - R( 3). “Некомпроментируемое” решение : J(1) - R(1 ), J(4) - R(2), определяет H=9. Оптимальное решение канонической задачи определяется решением: J(1) - R(), J(4) - R(2), отсюда V=9. Вариант 3. J(2) - R(4), J(4) - R( 2). “Некомпроментируемое” решение : J(1) - R(3), J(3) - R(1), определяет H=15. Оптимальное решение канонической задачи определяется решением: J(1) - R(3), J(3) - R(1), отсюда V=15. Варианты 1,2 и 3 могут быть отброшены, так как в вышеописанном случае 2 есть решение со значением критерия 15.
92
Таким образом, оптимальное решение исходной задачи определяется назначениями (случай 2) J(1) - R(3), J(2) - R(4), J(4) - R(2), J(3) - R(1). Эти назначения являются “некомпроментируемые”, так как исполнители J(1), J(2) и J(4) назначены на лучшие (в смысле их индивидуальных предпочтений) работы и среди “некомпроментируемых” дают максимальное значение суммарной производительности. Оптимальное решение исходной задачи имеет вид: x’(1,3)=1, x’(2,4)=1, x’(3,1)=1, x’(4,2)=1, значения остальных переменных в оптимальном решении нули. Оптимум задачи F(X’)=15.
3.6.1. Решить задачи о назначениях с индивидуальными предпочтениями методом ветвей и границ
Задача 6.1. Матрица производительностей. J(i)/R(i) J(1) J(2) J(3) J(4)
R(1) 3 4 4 1
R(2) 4 3 3 3
R(3) 6 3 3 2
R(4) 2 2 1 3
Матрица предпочтений. R(2) R(4) R(1) R(3) J(1)
R(2) R(1) R(3) R(4) J(2)
R(1) R(2) R(4) R(3) J(3)
R(1) R(4) R(3) R(2) J(4)
93
Задача 6.2. Матрица производительностей. J(i)/R(i) J(1) J(2) J(3) J(4)
R(1) 3 2 4 1
R(2) 4 7 5 3
R(3) 6 3 1 4
R(4) 2 2 1 5
Матрица предпочтений. R(2) R(4) R(1) R(3) J(1)
R(2) R(1) R(4) R(3) J(2)
R(1) R(2) R(4) R(3) J(3)
R(1) R(4) R(3) R(2) J(4)
Задача 6.3. Матрица производительностей. J(i)/R(i) J(1) J(2) J(3) J(4)
R(1) 3 4 4 1
R(2) 4 5 3 3
R(3) 6 8 1 2
R(4) 2 2 1 5
Матрица предпочтений. R(2) R(3) R(1) R(4) J(1)
R(2) R(1) R(3) R(4) J(2)
Задача 6.4.
R(1) R(2) R(4) R(3) J(3)
R(1) R(4) R(2) R(3) J(4)
94
Матрица производительностей. J(i)/R(i) J(1) J(2) J(3) J(4)
R(1) 6 4 4 1
R(2) 4 5 3 1
R(3) 6 3 5 2
R(4) 2 2 1 5
Матрица предпочтений. R(2) R(4) R(1) R(3) J(1)
R(2) R(1) R(3) R(4) J(2)
R(1) R(2) R(4) R(3) J(3)
R(1) R(4) R(3) R(2) J(4)
Задача 6.5. Матрица производительностей. J(i)/R(i) J(1) J(2) J(3) J(4)
R(1) 3 3 4 1
R(2) 4 5 3 3
R(3) 2 3 1 2
R(4) 2 2 1 5
Матрица предпочтений. R(2) R(4) R(1) R(3) J(1)
R(4) R(1) R(3) R(2) J(2)
. Задача 6.6.
R(1) R(2) R(4) R(3) J(3)
R(1) R(4) R(3) R(2) J(4)
95
Матрица производительностей. J(i)/R(i) J(1) J(2) J(3) J(4)
R(1) 5 4 4 4
R(2) 4 3 3 3
R(3) 6 3 6 5
R(4) 2 2 1 5
Матрица предпочтений. R(2) R(4) R(1) R(3) J(1)
R(2) R(1) R(3) R(4) J(2)
R(1) R(2) R(4) R(3) J(3)
R(1) R(4) R(3) R(2) J(4)
Задача 6.7. Матрица производительностей. J(i)/R(i) J(1) J(2) J(3) J(4)
R(1) 5 4 4 4
R(2) 4 4 7 3
R(3) 6 3 1 2
R(4) 2 2 1 8
Матрица предпочтений. R(2) R(4) R(3) R(1) J(1)
R(2) R(1) R(3) R(4) J(2)
R(1) R(2) R(4) R(3) J(3)
R(2) R(4) R(3) R(1) J(4)
Задача 6.8. Матрица производительностей.
96
J(i)/R(i) J(1) J(2) J(3) J(4)
R(1) 3 4 4 1
R(2) 4 3 3 3
R(3) 6 3 1 2
R(4) 2 2 1 5
Матрица предпочтений. R(2) R(4) R(1) R(3) J(1)
R(2) R(1) R(4) R(3) J(2)
R(1) R(2) R(4) R(3) J(3)
R(1) R(4) R(2) R(3) J(4)
Задача 6.9. Матрица производительностей. J(i)/R(i) J(1) J(2) J(3) J(4)
R(1) 3 4 1 1
R(2) 2 5 3 3
R(3) 6 3 4 2
R(4) 2 2 1 2
Матрица предпочтений. R(2) R(4) R(1) R(3) J(1)
R(2) R(1) R(3) R(4) J(2)
R(1) R(2) R(4) R(3) J(3)
R(1) R(4) R(3) R(2) J(4)
Задача 6.10. Матрица производительностей. J(i)/R(i)
R(1)
R(2)
R(3)
R(4)
97
J(1) J(2) J(3) J(4)
7 4 4 1
8 5 3 8
6 3 6 2
2 2 1 5
Матрица предпочтений. R(2) R(4) R(1) R(3) J(1)
R(4) R(1) R(3) R(2) J(2)
R(1) R(2) R(4) R(3) J(3)
R(1) R(4) R(3) R(2) J(4)
3.7. Нахождение максимального потока в транспортной сети алгоритмом Форда-Фалкерсона
Рассмотрим задачу поиска максимального потока в транспортной сети с 10 вершинами (вершина 1 - исток, вершина 10 -сток), матрица пропускных способностей дуг Q имеет вид: i\ 1 2 3 4 5 6 7 8 9 1 j 0 1 4 1 3 2 2 2 3 2 4 3 3 5 3 3 6 3 2 7 4 8 3 9 2
98
Строим последовательность вершин из истока: 1, 2,4,3, 2,5,7,4,6,3,5,10. Схема построения последовательности: из истока 1 по ненасыщенным дугам есть пути в вершины 2,4,3. Первая не рассмотренная вершина 2 связана с вершинами 6 и 7 (по ненасыщенным дугам). Следующая не рассмотренная вершина 4 связана с вершиной 6. Следующая не рассмотренная вершина 3 не порождает ни одной новой вершины. Вершина 5 не соединена ни с одной новой вершины. Из вершины 5 существует ненасыщенная дуга, ведущая в сток (вершина 10). Получили существование маршрута по ненасыщенным ребрам из истока в сток: 1 - 2 -5 - 10, максимальная величина груза, который можно перевезти по этому маршруту равно 2. Уменьшаем пропускные способности дуг, составляющих найденный маршрут: Из вершины 1 в вершину 2 пропускная способность станет равна 4-2=2, в обратном направлении из вершины 2 в вершину 1 пропускная способность увеличится 0+2=2 . Из вершины 2 в вершину 5 пропускная способность станет равна 2-2=0, в обратном направлении из вершины 5 в вершину 2 пропускная способность увеличится 0+2=2 . Из вершины 5 в вершину 10 пропускная способность станет равна 3-2=1, в обратном направлении из вершины 10 в вершину 5 пропускная способность увеличится 0+2=2 . Строим новую последовательность вершин из истока: 1, 2,4,3, 2,7,4,6,3,7,10. Получили существование маршрута по ненасыщенным ребрам из истока в сток: 1 - 2 -7 - 10, максимальная величина груза, который можно перевезти по этому маршруту равно 2. Уменьшаем пропускные способности дуг, составляющих найденный маршрут:
99
Из вершины 1 в вершину 2 пропускная способность станет равна 2-2=0, в обратном направлении из вершины 2 в вершину 1 пропускная способность увеличится 2+2=4 . Из вершины 2 в вершину 7 пропускная способность станет равна 2-2=0, в обратном направлении из вершины 7 в вершину 2 пропускная способность увеличится 0+2=2 . Из вершины 7 в вершину 10 пропускная способность станет равна 4-2=2, в обратном направлении из вершины 10 в вершину пропускная способность увеличится 0+2=2 . Строим новую последовательность вершин из истока: 1, 4,3, 4,6,7,3,6,9,7,10. Получили существование маршрута по ненасыщенным ребрам из истока в сток: 1 - 4 -7 - 10, максимальная величина груза, который можно перевезти по этому маршруту равно 2. Уменьшаем пропускные способности дуг, составляющих найденный маршрут: Из вершины 1 в вершину 4 пропускная способность станет равна 3-2=1, в обратном направлении из вершины 4 в вершину 1 пропускная способность увеличится 0+2=2 . Из вершины 4 в вершину 7 пропускная способность станет равна 3-2=1, в обратном направлении из вершины 7 в вершину пропускная способность увеличится 0+2=2 . Из вершины 7 в вершину 10 пропускная способность станет равна 2-2=0 в обратном направлении из вершины 10 в вершину пропускная способность увеличится 2+2=4 . Строим новую последовательность вершин из истока: 1, 4,3, 4,7,6,3,7,6,9,9,10. Получили существование маршрута по ненасыщенным ребрам из истока в сток: 1 - 4 - 6 - 9 - 10, максимальная величина груза, который можно перевезти по этому маршруту равна 1. Уменьшаем пропускные способности дуг, составляющих найденный маршрут: Из вершины 1 в вершину 4 пропускная способность станет равна 1-1=0, в обратном направлении из вершины 4 в вершину 1 пропускная способность увеличится 2+1=3 .
100
Из вершины 4 в вершину 6 пропускная способность станет равна 3-1=2, в обратном направлении из вершины 6 в вершину 4 пропускная способность увеличится 0+1=1 . Из вершины 6 в вершину 9 пропускная способность станет равна 2-1=1 в обратном направлении из вершины 9 в вершину 6 пропускная способность увеличится 0+1=1 . Из вершины 6 в вершину 9 пропускная способность станет равна 2-1=1 в обратном направлении из вершины 9 в вершину 6 пропускная способность увеличится 0+1=1 . Из вершины 9 в вершину 10 пропускная способность станет равна 2-1=1 в обратном направлении из вершины 10 в вершину 9 пропускная способность увеличится 0+1=1. Строим новую последовательность вершин из истока: 1, 3, 3,6,6,4,7,9,4,7,2,9,10. Получили существование маршрута по ненасыщенным ребрам из истока в сток: 1 - 3 - 6 - 9 - 10, максимальная величина груза, который можно перевезти по этому маршруту равна 1. Уменьшаем пропускные способности дуг, составляющих найденный маршрут: Из вершины 1 в вершину 3 пропускная способность станет равна 1-1=0, в обратном направлении из вершины 3 в вершину 1 пропускная способность увеличится 0+1=1 . Из вершины 3 в вершину 6 пропускная способность станет равна 2-1=1, в обратном направлении из вершины 6 в вершину 3 пропускная способность увеличится 0+1=1 . Из вершины 6 в вершину 9 пропускная способность станет равна 2-1=1 в обратном направлении из вершины 9 в вершину 6 пропускная способность увеличится 0+1=1 . Из вершины 9 в вершину 10 пропускная способность станет равна 2-1=1 в обратном направлении из вершины 10 в вершину 9 пропускная способность увеличится 0+1=1 . Из вершины 9 в вершину 10 пропускная способность станет равна 2-1=1 в обратном направлении из вершины 10 в вершину 9 пропускная способность увеличится 0+1=1. Строим новую последовательность вершин: 1.
101
Из вершины 1 нет маршрута по ненасыщенным ребрам в сток, т.е. по теореме Форда-Фалкерсона найденный поток максимален. Решение задачи определяется матрицей X:
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 1 0 4 1 3 -4 2 2 -1 1 -3 1 2 -2 2 -1 -1 2 -2 -2 4 -2 -2
2 -4
-2
Величина максимального потока равна F(X’)=8.
3.7.1. Найти максимальный поток в транспортной сети
Задача 7.1. i\ 1 2 3 4 5 6 7 8 9 1 j 0 1 3 1 3 2 1 4 3 2 4 3 3 5 3 3 6 3 2
102
7 8 9
2 3 2
Задача 7.2. i\ 1 2 3 4 5 6 7 8 9 1 j 0 1 4 2 4 2 1 2 3 2 4 3 1 5 3 3 6 3 2 7 2 8 3 9 2 Задача 7.3. i\ 1 2 3 4 5 6 7 8 9 1 j 0 1 2 3 3 2 2 2 3 2 4 3 3 5 3 3 6 3 2 7 1 8 3 9 2
103
Задача 7.4. i\ 1 2 3 4 5 6 7 8 9 1 j 0 1 5 6 3 2 4 2 3 2 4 5 3 5 3 3 6 3 5 7 4 8 3 9 3 Задача 7.5. i\ 1 2 3 4 5 6 7 8 9 1 j 0 1 3 5 3 2 2 2 3 2 4 3 3 5 3 3 6 3 2 7 3 8 3 9 3 Задача 7.6.
104
i\ 1 2 3 4 5 6 7 8 9 1 j 0 1 4 3 3 2 4 2 3 1 4 3 2 5 3 3 6 2 2 7 5 8 3 9 2
Задача 7.7. i\ 1 2 3 4 5 6 7 8 9 1 j 0 1 4 2 3 2 4 2 3 2 4 3 3 5 3 3 6 3 2 7 4 8 3 9 2 Задача 7.8. i\ 1 2 3 4 5 6 7 8 9 1 j 0 1 4 3 2
105
2 3 4 5 6 7 8 9
4
2 2 3 3 3 2
3 2 4 4 2
Задача 7.9. i\ 1 2 3 4 5 6 7 8 9 1 j 0 1 2 5 3 2 3 2 3 5 4 3 3 5 3 3 6 3 2 7 4 8 4 9 2 Задача 7.10. i\ 1 2 3 4 5 6 7 8 9 1 j 0 1 1 5 3 2 2 2
106
3 4 5 6 7 8 9
2 3 3 3 3
3 2 4 3 3
3.8. Расчет временных характеристик сетевых моделей
Пусть i - номер работы, t(i) - длительность выполнения работы i, i=1,2,3,4,5,6,7. Обозначим через K(i) - множество работ, непосредственно предшествующих работе с номером i (условие, определяемое технологическими требованиями на порядок выполнения работ). Требуется определить минимально возможное время, за которое можно выполнить все работы.
i 1 2 3 4 5
t(i) 3 5 2 4 3
K(i) O O {1,2} {3} {3}
107
6 6 7 2
{4} {5,6}
Для решения этой задачи воспользуемся специальной схемой расчета временных характеристик, позволяющей не только дать ответ на поставленный вопрос, но и найти дополнительные характеристики, позволяющие более эффективно управлять процессом изготовления нового изделия. К таким характеристикам относятся: t(rn,i) - время самого раннего начала выполнения работы с номером i, t(rk,i) - время самого раннего окончания выполнения работы с номером i, t(pn,i) - время самого позднего начала выполнения работы с номером i, t(pk,i) - время самого позднего окончания выполнения работы с номером i, r(i) - резерв времени работы с номером i, т.е. . время, на которое не в ущерб времени общего окончания выполнения всех работ, можно задерживать выполнение работы с номером (i), T(k) - время выполнения всех работ изделия. Величина T(k) называется длиной критического пути, а критическим путём называют путь, соединяющий некоторую начальную работу не имеющую предшествующих работ, и некоторую конечную работу - не имеющую последующих, т.е. от неё зависящих работ, суммарное время выполнения всех работ которого максимально. Для расчета временных характеристик воспользуемся следующими рекуррентными соотношениями: t(rn,i) = 0, если K(i) - пустое множество. t(rk,i) = t(rn,i) + t(i), t(rn,i)= max t(rk,j), где максимум берется по всем работам j из множества K(i). t(pk,i) = t(rk,i) , если работа i не имеет последующих,
108
t(pn,i) = t(pk,i) - t(i), t(pk,i) = min t(pn,j), где минимум берется по тем работам j, которые принадлежат множеству K(i), т.е. по тем работам, от которых зависит работа с номером i. r(i) = t(pn,i) - t(rn,i) = t(pk,i) - t(rk,i). Работы критического пути это те работы, резервы времени которых нулевые. Найденные временные характеристики приведем в таблице: i
t(i)
1 3 2 5 3 2 4 5 6 7
4 3 6 2
K(i)
t(rn,i) t(rk,i)
t(pn,i)
t(pk,i)
r(i)
O O {1,2 } {3} {3} {4} {5,6 }
0 0 5
3 5 7
2 0 5
5 5 7
2 0’ 0’
7 7 11 17
11 10 17 19
7 14 11 17
11 17 17 19
0’ 7 0’ 0’
Работы критического пути (2,3,4,6,7). Длина критического пути T(k)=19. Работа1,t(1)=3
Работа5,t(5)=3 Работа3’ t(3)=2
Работа2’, t(2)=5
Работа7’,t(7)=2 Работа4’,t(4)=4 Работа6’,t(6)=6
3.8.1. Рассчитать временные характеристики сетевой модели
Задача 8.1. i 1 2 3
t(i) 5 2 6
K(i) O O {1,2}
109
4 5 6 7
2 6 6 2
{3} {3} {3} {4,5, 6}
Задача 8.2. i 1 2 3 4 5 6 7
t(i) 6 5 3 4 3 6 2
K(i) O {1} {2} {1} {3} {4} {5,6}
Задача 8.3. i 1 2 3 4 5 6 7
t(i) 3 5 5 2 3 6 4
K(i) O O {1,2} {3} {3} {4} {5,6}
110
Задача 8.4. i 1 2 3 4 5 6 7
t(i) 4 5 2 4 3 6 2
K(i) O O O {1,2} {3} {4} {5,6}
Задача 8.5. i 1 2 3 4 5 6 7
t(i) 2 4 8 4 3 9 2
K(i) O O {1,2} {3} {3} {4} {5,6}
Задача 8.6. i 1 2 3 4 5 6 7
t(i) 3 3 2 4 9 6 2
K(i) O {1} {2} {3} {3} {4} {5,6}
111
Задача 8.7. i 1 2 3 4 5 6 7
t(i) 5 5 2 4 8 6 7
K(i) O O {1,2} {3} {3} {4} {5,6}
Задача 8.8. i 1 2 3 4 5 6 7
t(i) 4 5 2 4 3 6 7
K(i) O O {1,2} {3} {2} {4} {5,6}
Задача 8.9.
112
i 1 2 3 4 5 6 7
t(i) 4 7 6 4 9 6 7
K(i) O O {1,2} {3} {3} {4} {5,6}
Задача 8.10. i 1 2 3 4 5 6 7
t(i) 5 5 9 4 3 6 8
K(i) O O {1,2} {3} {3} {4,5} {6}
113
4. Домашние контрольные задания
Домашнее задание содержит в себе 9 задач по каждой из тем, приведенных в задачнике. Задачи объединяются в 30 различных вариантов. Номера задач по каждому из вариантов приведены в следующей таблице. Вариант Вариант 1 Вариант 2 Вариант 3 Вариант 4 Вариант 5 Вариант 6 Вариант 7 Вариант 8 Вариант 9 Вариант 10 Вариант 11
1 1
2 1
3 1
4 1
5 1
6 1
7 1
8 1
2
2
2
2
2
2
2
2
3
3
3
3
3
3
3
3
4
4
4
4
4
4
4
4
5
5
5
5
5
5
5
5
6
6
6
6
6
6
6
6
7
7
7
7
7
7
7
7
8
8
8
8
8
8
8
8
9
9
9
9
9
9
9
9
10 10 10 10
10
10
10
10
1
5
6
7
8
2
3
4
114
Вариант 12 Вариант 13 Вариант 14 Вариант 15 Вариант 16 Вариант 17 Вариант 18 Вариант 19 Вариант 20 Вариант 21 Вариант 22 Вариант 23 Вариант 24 Вариант 25 Вариант 26 Вариант 27 Вариант 28 Вариант 29
2
3
4
5
6
7
8
9
3
4
5
6
7
8
9
10
4
5
6
7
8
9
10
1
5
6
7
8
9
10
1
2
6
7
8
9
10
1
2
3
7
8
9
10
1
2
3
4
8
9
10 1
2
3
4
5
9
10 1
2
3
4
5
6
10 1
2
3
4
5
6
7
9
8
7
6
5
4
3
2
8
7
6
5
4
3
2
1
7
6
5
4
3
2
1
10
6
5
4
3
2
1
10
9
5
4
3
2
1
10
9
8
4
3
2
1
10
9
8
7
3
2
1
10
9
8
7
6
2
1
10 9
8
7
6
5
1
10 9
7
6
5
4
8
115
Вариант 10 9 8 7 6 5 4 3 30 Так, например, вариант 30 включает в себя задачи из задачника с номерами: 1.10, 2.9, 3.8, 4.7, 5.6, 6.5, 7.4, 8.3 5. Вопросы к экзамену
1.Задачи математического программирования в общей перестановке. 2.Общий подход к решению оптимизационных задач. 3.Задачи целочисленного булева программирования. 4.Каноническая задача о ранце и её интерпретации. 5.Многомерная задача о ранце и её интерпретации. 6.Задача коммивояжера и ее интерпретации. 7.Задача о назначениях и её интерпретации. 8.Задача целочисленного линейного программирования в общей постановке. 9.Метод ветвей и границ. Общая схема метода ветвей и границ Джеффриона-Марстена. 10.Решение задач о ранце методом ветвей и границ. 11.Решение задачи коммивояжера методом ветвей и границ. 12.Решение задачи целочисленного линейного программирования методом ветвей и границ. 13.Решение задачи о ранце с использованием табличной схемы динамического программирования. 14.Решение задачи о ранце с использованием рекуррентных соотношений динамического программирования. 15.Решение задачи коммивояжера с использованием рекуррентных соотношений динамического программирования. 16.Задачи теории расписаний. Задачи теории расписаний с одним обслуживающим прибором. Перестановочный прием в задачах теории расписаний. 17. Теорема Лившица-Кладова. Задачи теории расписаний в общей постановке. Задача Джонсона. Графики Ганта.
116
18.Постановка задачи теории расписаний как задачи частично-целочисленного линейного программирования. 19. Сетевые модели. Расчет временных характеристик сетевых моделей. 20. Потоки в сетях. Теорема Форда-Фалкерсона о максимальном потоке. Алгоритм Форда-Фалкерсона поиска максимального потока в транспортной сети. 21.Алгоритм Куна решения задач о назначениях. 22.Минимаксные задачи о назначениях. 23.Задачи о назначениях с индивидуальными предпочтениями.