- •Часть 2
- •Содержание
- •1. Рабочая программа курса "математические основы информатики"
- •Часть 2.
- •Предисловие
- •Практические занятия
- •Литература (основная)
- •Литература (дополнительная)
- •2. Краткий конспект лекций
- •2.1.Задачи целочисленного булева программирования
- •2.2. Каноническая и многомерная задачи о ранце и их интерпретации
- •2.3. Задача коммивояжера и ее интерпретации
- •2.4. Задачи о назначениях и их интерпретации
- •2.5. Задача целочисленного линейного программирования в общей постановке
- •2.6. Метод ветвей и границ
- •2.7. Общая схема метода ветвей и границ Джеффриона-Марстена
- •2.8. Решение канонической задачи о ранце методом ветвей и границ
- •2.9. Решение многомерной задачи о ранце методом ветвей и границ
- •2.10. Решение задачи коммивояжера методом ветвей и границ
- •2.11. Решение задачи целочисленного линейного программирования методом ветвей и границ
- •2.12. Решение задачи о ранце с использованием табличной схемы
- •2.13. Решение задачи о ранце с использованием рекуррентных соотношений динамического программирования
- •2.14. Решение задачи коммивояжера с использованием рекуррентных соотношений динамического программирования
- •2.15. Задачи теории расписаний
- •2.16. Задачи теории расписаний с одним обслуживающим прибором
- •2.17. Перестановочный прием в задачах теории расписаний
- •2.18. Теорема Лившица-Кладова
- •2.19. Задачи теории расписаний в общей постановке
- •2.20. Задача Джонсона. Графики Ганта
- •2.21.Постановка задачи теории расписаний как задачи частично-целочисленного линейного программирования
- •2.22. Сетевые модели. Расчет временных характеристик сетевых моделей
- •2.23. Потоки в сетях. Теорема Форда-Фалкерсона о максимальном потоке
- •2.24. Алгоритм Форда-Фалкерсона нахождения максимального потока в транспортной сети
- •2.25. Решение задачи о назначениях алгоритмом Куна
- •2.26. Минимаксные задачи о назначениях
- •2.27. Задачи о назначениях с индивидуальными предпочтениями
- •3. Задачник с решением типовых задач
- •3.1. Решение задачи о ранце
- •3.1.1. Решение задачи о ранце методом ветвей и границ
- •3.1.2. Решение задачи о ранце методом динамического программирования (табличная форма)
- •3.1.3. Решение задачи о ранце методом динамического программирования (рекуррентная схема)
- •3.1.4. Решить следующие задачи о ранце :
- •3.2. Решение задачи коммивояжера
- •3.2.1. Решение задачи коммивояжера методом ветвей и границ
- •3.2.2. Решение задачи коммивояжера с использованием рекуррентных соотношений динамического программирования
- •3.2.3. Решить задачи коммивояжера:
- •3.3. Решить задачу Джонсона для двух станков, построить график Ганта для оптимального расписания
- •3.4. Решение задачи о назначениях алгоритмом Куна
- •3.5. Решение минимаксных (максиминных) задач о назначениях
- •3.6. Решить задачи о назначениях с индивидуальными предпочтениями
- •3.7. Нахождение максимального потока в транспортной сети алгоритмом Форда-Фалкерсона
- •3.8. Расчет временных характеристик сетевых моделей
- •Рассчитать временные характеристики сетевой модели
- •4. Контрольные задания
- •5. Вопросы к экзамену
- •3.Задачи целочисленного булева программирования.
- •6.Задача коммивояжера и ее интерпретации.
- •8.Задача целочисленного линейного программирования в общей постановке.
2.26. Минимаксные задачи о назначениях
Математическая модель.
Пусть 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) {0,1}, причем, если x(i,j) = 1, то работа с номером i будет закреплена за исполнителем с номером j, если x(i,j) =0 , то работа с номером i не будет закреплена за исполнителем с номером j.
Ограничения математической модели.
x(i,j) 1, j=1,2,...,n
x(i,j) 1, i=1,2,...m.
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. Задачи о назначениях с индивидуальными предпочтениями
Рассматривается задача о назначении исполнителей по работам при условиях, что исполнителями на множестве работ заданы предпочтения, т.е., каждый исполнитель упорядочивает все работы в порядке своих индивидуальных предпочтений независимо от производительностей.
Решение задачи о назначениях назовем некомпроментируемым, если не существует другого решения задачи о назначениях, при котором ни одному из исполнителей не будет назначена работа “худшая” по его предпочтениям, а хотя бы одному - “лучшая”.
Требуется среди всех некомпрментируемых решений найти такое, которое дает максимальное значение критерию задачи о назначениях.
Для решения этой задачи может быть применена схема метода ветвей и границ.
Индивидуальные процедуры метода.
Процедуры оценок.
В качестве нижней оценки может выступать любое некомпроментируемое решение, построение которого, например, можно производить по следующей схеме:
Назначаем очередного исполнителя на “лучшую” для него ( в смысле его индивидуальных предпочтений) работу, еще не назначенную другим исполнителям.
В качестве верхней оценки может выступать оптимальное решение классической задачи о назначениях, полученное, например, алгоритмом Куна.
Процедура ветвления.
Из начальной вершины необходимо осуществить ветвление по n направлениям, где n - количество работ), причем i -ое направление соответствует назначению исполнителя с номером i на работу, “лучшую” по его индивидуальным предпочтениям. Далее ветвление осуществляется из очередной вершины по s направлениям, где s - количество исполнителей, ещё не назначенных на работы.