Дискретная оптимизация 2019 — различия между версиями

Материал из Wiki - Факультет компьютерных наук
Перейти к: навигация, поиск
(не показано 13 промежуточных версии 2 участников)
Строка 43: Строка 43:
  
 
1) Контрольная работа с теоретическими задачами и теоретически мини-ДЗ. Точные критерии оценивания будут определены в ходе курса. Вклад данной части в общую оценку – 2 из 10.
 
1) Контрольная работа с теоретическими задачами и теоретически мини-ДЗ. Точные критерии оценивания будут определены в ходе курса. Вклад данной части в общую оценку – 2 из 10.
 +
 +
Оценка за эту часть выставляется как минимум из 10 и {суммы оценок за три мини-ДЗ + оценка за контрольную работу}
  
 
2) Контест с решением практических задач, проводимые во время лекции и семинара (то есть на 3 часа). Вклад данной части в общую оценку – 2 из 10.
 
2) Контест с решением практических задач, проводимые во время лекции и семинара (то есть на 3 часа). Вклад данной части в общую оценку – 2 из 10.
 +
 +
Оценка за эту часть выставляется как количество баллов набранных за решение задача контеста. Решенная задача во время самого контеста стоит 2.5 балла, после контеста 1.25 балла.
  
 
3) Практические домашние задания (в виде Я.Контестов с длительностью несколько недель). Вклад данной части в общую оценку – 3 из 10.
 
3) Практические домашние задания (в виде Я.Контестов с длительностью несколько недель). Вклад данной части в общую оценку – 3 из 10.
 +
 +
Оценка за эту часть выставляется как {минимум из 15 и {сумма баллов за два практических домашних задания}} / 1.5. Число 15 может быть еще скорректировано в нижнюю сторону.
  
 
4) Устный теоретический экзамен. Вклад данной части в общую оценку – 3 из 10.
 
4) Устный теоретический экзамен. Вклад данной части в общую оценку – 3 из 10.
 +
 +
За экзамен выставляется оценка от 0 до 10.
  
  
Строка 78: Строка 86:
 
===Лекция 4===
 
===Лекция 4===
 
Задача о кратчайших путях, построение решения с помощью техники Primal-Dual.
 
Задача о кратчайших путях, построение решения с помощью техники Primal-Dual.
 +
 +
===Лекция 5===
 +
Задача о взвешенном паросочетании в двудольном графе, построение решения с помощью техники Primal-Dual. Существование совершенного паросочетания в регулярном двудольном графе.
 +
 +
===Лекция 6===
 +
Метод локального поиска. Его применения к задаче о расстановке ферзей и к задаче о раскраске графа. Метапоиски – метод отжига.
 +
 +
===Лекция 7===
 +
Формулировка задачи TSP в виде линейной программы с экспоненциальным числом условий. Граница Хелда-Карпа. Применение симплекс-метода для рещения TSP на практике.
 +
Метод Branch&Cut решения ILP, метод секущих плоскостей. Секущие плоскости Гомори-Хватала.
 +
 +
===Лекция 8===
 +
Метод эллипсоидов и его применение к построению слабополиномиального решения задачи линейного программирования.
 +
Задача о максимальном разрезе, жадное решение.
 +
Сведение задачи о максимальном разрезе к задаче полуопределенного программирование и построение вероятностного 0.878-приближения.
  
 
== Семинары ==
 
== Семинары ==
Строка 92: Строка 115:
 
===Семинар 4===
 
===Семинар 4===
 
Задача Set-Cover, построение линейной и двойственной программ. Округление решения линейной программы, дающее f-приближение. Primal-Dual алгоритм для эффективного поиска f-приближения в данной задачи.
 
Задача Set-Cover, построение линейной и двойственной программ. Округление решения линейной программы, дающее f-приближение. Primal-Dual алгоритм для эффективного поиска f-приближения в данной задачи.
 +
 +
===Семинар 5===
 +
Контрольная работа.
 +
 +
===Семинар 6===
 +
Задача коммивояжера (TSP). 2-приближенные алгоритм для метрической задачи. 1-5 приближенный алгоритм Кристофидеса. Локальные поиск – 2-OPT шаги, эвристика Lin-Kernighan.
 +
 +
===Семинар 7===
 +
Инструменты для решения задач дискретной оптимизации: GLPK, Gurobi, or-tools. Методика Contraint Programming и её применение к задаче Car-Sequencing. Задача об открытии складов, её формулировка в виде ILP.
 +
 +
===Семинар 8===
 +
Симплекс-метод, построение секущей плоскости из решения найденного симплекс-методом.
  
 
== Домашние задания ==
 
== Домашние задания ==
Строка 104: Строка 139:
 
Контест для сдачи задач доступен по [https://contest.yandex.ru/contest/12610 ссылке].
 
Контест для сдачи задач доступен по [https://contest.yandex.ru/contest/12610 ссылке].
  
Задание и вопросы по нему следует отправлять на почту  %%discret.opt.hse@gmail.com%%. В заголовке письма указывайте "ФИО Практика1"
+
Задание и вопросы по нему следует отправлять на почту  discret.opt.hse@gmail.com. В заголовке письма указывайте "ФИО Практика1"
 +
 
 +
'''Критерии оценивания качества решения.'''
 +
Для каждого закрытого теста в качестве baseline был выбран ответ жадного алгоритма, за него полагается 0.1 балла. За достижение оптимального ответа в тесте полагается 0.5 балла. Для остальных значений оценка вычисляется линейно исходя из двух указанных точек (например, если значение вашего решения лежит ровно посередине между оптимальным и жадным, то за него полагается 0.3 балла).
 +
 
 +
Оценки за все 10 закрытых тестов суммируются и округляются вниз до ближайшего полуцелого числа. Таким образом финальная оценка лежит в диапазоне от 0 до 5 баллов. Причем 5 баллов получает только решение нашедшее оптимумы на всех закрытых тестах.
 +
 
 +
Все тесты к задаче, а также ответы жадного и оптимального алгоритмов для закрытых тестов доступны по ссылке https://yadi.sk/d/2gZG00VoYoSeDA
 +
 
 +
===Задание 2 (задача коммивояжера, задача об открытии складов, задача о сборке автомобилей)===
 +
 
 +
'''Дедлайн: 23.59 16 июня. Не опаздывайте, после дедлайна решения не принимаются.'''
 +
 
 +
В задании предлагается решать несколько комбинаторных задач. Архив с заданием доступен [https://yadi.sk/d/Qqxag0uWdnL12A здесь]. Обратите внимание, что ваше решение должно состоять из успешной посылки в Я.Контесте и написанного отчета, которые вы должны прислать по почту.
 +
 
 +
Контест для сдачи задач https://contest.yandex.ru/contest/12924.
 +
 
 +
Грейдер для задачи Коммивояжера http://akhmedov.me:50028/tsp/ –  в него можно сдавать решения публичных тестов и сравниваться с другими участниками. Имя необходимо указывать в формате "фамилия транслитом маленькими буквами + подчеркивание + имя транслитом маленькими буквами", например: kolesnichenko_ignat
 +
 
 +
Задание и вопросы по нему следует отправлять на почту  discret.opt.hse@gmail.com. В заголовке письма указывайте "ФИО Номер группы. Практика2"
 +
 
 +
==Экзамен==
 +
 
 +
[https://yadi.sk/i/GP7lXeyKyKfF3Q Программа экзамена]
 +
 
 +
[https://yadi.sk/d/CWb9JstME0Rntw Здесь будут выкладываться разные статьи, полезные для подготовки]
 +
 
 +
[https://yadi.sk/i/GUF17cTPf5uT0A Порядок проведения экзамена]
 +
 
 +
 
  
 
== Пересдача ==
 
== Пересдача ==
Строка 120: Строка 184:
 
   * "Handbook of Constraint Programming" [F. Rossi, P. van Beek and T. Walsh] - справочник по программированию в ограничениях.
 
   * "Handbook of Constraint Programming" [F. Rossi, P. van Beek and T. Walsh] - справочник по программированию в ограничениях.
 
   * "Handbook of Metaheuristics" [Michel Gendreau, Jean-Yves Potvin] - справочник с описанием эвристических алгоритмов оптимизации.
 
   * "Handbook of Metaheuristics" [Michel Gendreau, Jean-Yves Potvin] - справочник с описанием эвристических алгоритмов оптимизации.
 +
  * "An Effective Implementation of the Lin-Kernighan Traveling Salesman Heuristic" [Keld Helsgaun] - описание эвристики Лина-Кернигана для задачи комивояжёра.
 +
  * "The car sequencing problem: overview of state-of-the-art methods and industrial case-study of the ROADEF’2005 challenge problem" - описание эвристик, в том числе локального поиска, для задачи car sequencing.
  
 
===Полезные ссылки  ===
 
===Полезные ссылки  ===

Версия 11:18, 10 июня 2019

О курсе

Курс читается для студентов 3-го курса ПМИ ФКН ВШЭ в 4 модуле.

Лектор: Игнат Колесниченко

Лекции проходят по вторникам, 13:40 - 15:00, ауд. 622, семинары проходят сразу после лекции во вторник.

Полезные ссылки

Канал в телеграм для объявлений: https://t.me/joinchat/AAAAAFSFHLfHTjeBd2Ueqg

Таблица с оценками: TODO

Семинары

Группа Преподаватель Связь Страница
- Колесниченко Игнат ignat1990@gmail.com http://wiki.cs.hse.ru/%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Ignat
МОП 161 Савченко Руслан telegram: @savrus  ?
МОП 162 + РС 166-2 Лахтанов Иван telegram: @ivan_lakhtanov  ?
АДИС 163 + АПР 167 + РС 166-1 Смирнов Иван telegram: @ifsmirnov  ?
АДИС 164 Саакян Вильям telegram: @wilwell  ?
РС 165 Ахмедов Максим telegram: @max_akhmedov  ?


Консультации

Консультации с преподавателями и учебными ассистентами (если иное не оговорено на странице семинаров конкретной группы) по курсу проводятся по предварительной договорённости ввиду невостребованности регулярных консультаций.

Правила выставления оценок

В курсе предусмотрено следующий набор контрольных мероприятий:

1) Контрольная работа с теоретическими задачами и теоретически мини-ДЗ. Точные критерии оценивания будут определены в ходе курса. Вклад данной части в общую оценку – 2 из 10.

Оценка за эту часть выставляется как минимум из 10 и {суммы оценок за три мини-ДЗ + оценка за контрольную работу}

2) Контест с решением практических задач, проводимые во время лекции и семинара (то есть на 3 часа). Вклад данной части в общую оценку – 2 из 10.

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

3) Практические домашние задания (в виде Я.Контестов с длительностью несколько недель). Вклад данной части в общую оценку – 3 из 10.

Оценка за эту часть выставляется как {минимум из 15 и {сумма баллов за два практических домашних задания}} / 1.5. Число 15 может быть еще скорректировано в нижнюю сторону.

4) Устный теоретический экзамен. Вклад данной части в общую оценку – 3 из 10.

За экзамен выставляется оценка от 0 до 10.


За каждую из частей будет выставлена оценка от 0 до 10 (с шагом в 0.5 балла). Итоговая оценка вычисляется по формуле:

Oитоговая = round(0.2 * O1 + 0.2 * О2 + 0.3 * О3 + 0.3 * Oэкз), где round – это функция арифметического округления.

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

Правила сдачи заданий

Дедлайны по всем домашним заданиям являются жёсткими, то есть после срока работы не принимаются.

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

При наличии уважительной причины дедлайн по домашнему заданию может быть перенесён. Дедлайн по домашнему заданию переносится на количество дней, равное продолжительности уважительной причины. Решение о том, является ли причина уважительной, принимает исключительно учебный офис.

Лекции

Лекция 1

Примеры комбинаторных задача: Maximum Matching, Set Cover, TSP. Представление задачи Maximum Matching в виде ILP, релаксация ILP до LP. Напоминание про LP – понятие полиэдров и политопов, формы задания, понятие вершины. Теорема о том, что оптимум достигается в вершине. Базисные допустимые решения и их связь с вершинами.

Лекция 2

Явное построение двойственной задаче для задачи о паросочетаниях. Теорема о сильной двойственности, условия дополняющей нежесткости. Метод ветвей и границ (Branch and Bound) для решения комбинаторных задач. Применение B&B для решения ILP. Задача о рюкзаке, решение LP в задаче о рюкзаке.

Лекция 3

Алгоритм 2-приближения для задачи о рюкзаке. Динамика по стоимостям и по весам для задачи о рюкзаке. Динамика по весам с использованием O(W) памяти. Построение схем приближения для задачи о рюкзаке: PTAS c временем O(n^(1 + 1/eps)) (без доказательства), FPTAS с временем O(n^2/eps), алгоритм Ibara-Kim с временем O(n/eps^2).

Лекция 4

Задача о кратчайших путях, построение решения с помощью техники Primal-Dual.

Лекция 5

Задача о взвешенном паросочетании в двудольном графе, построение решения с помощью техники Primal-Dual. Существование совершенного паросочетания в регулярном двудольном графе.

Лекция 6

Метод локального поиска. Его применения к задаче о расстановке ферзей и к задаче о раскраске графа. Метапоиски – метод отжига.

Лекция 7

Формулировка задачи TSP в виде линейной программы с экспоненциальным числом условий. Граница Хелда-Карпа. Применение симплекс-метода для рещения TSP на практике. Метод Branch&Cut решения ILP, метод секущих плоскостей. Секущие плоскости Гомори-Хватала.

Лекция 8

Метод эллипсоидов и его применение к построению слабополиномиального решения задачи линейного программирования. Задача о максимальном разрезе, жадное решение. Сведение задачи о максимальном разрезе к задаче полуопределенного программирование и построение вероятностного 0.878-приближения.

Семинары

Семинар 1

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

Семинар 2

Теорема о дополняющем пути. Алгоритм Куна поиска паросочетания в двудольном графе. Условия дополняющей нежесткости для пары задач Maximum Matching, Vertex Cover. Поиск вершинного покрытия из максимального паросочетания в двудольном графе.

Семинар 3

Построение прямой и двойственной задачи для задачи о потоки в графе. Построение линейное программы для задачи о поиске максимальной клики в графе и для задачи Car Sequencing.

Семинар 4

Задача Set-Cover, построение линейной и двойственной программ. Округление решения линейной программы, дающее f-приближение. Primal-Dual алгоритм для эффективного поиска f-приближения в данной задачи.

Семинар 5

Контрольная работа.

Семинар 6

Задача коммивояжера (TSP). 2-приближенные алгоритм для метрической задачи. 1-5 приближенный алгоритм Кристофидеса. Локальные поиск – 2-OPT шаги, эвристика Lin-Kernighan.

Семинар 7

Инструменты для решения задач дискретной оптимизации: GLPK, Gurobi, or-tools. Методика Contraint Programming и её применение к задаче Car-Sequencing. Задача об открытии складов, её формулировка в виде ILP.

Семинар 8

Симплекс-метод, построение секущей плоскости из решения найденного симплекс-методом.

Домашние задания

Задание 1 (задача о рюкзаке)

Дедлайн: 23.59 28 апреля. Не опаздывайте, после дедлайна решения не принимаются.

В задании предлагается решать задачу о рюкзаке. Архив с заданием доступен здесь. Обратите внимание, что ваше решение должно состоять из успешная посылка в Я.Контесте и написанный отчет, которые вы должны прислать по почту. При этом успешность посылки не означает, что ваше решение близко к оптимуму и наберем хоть какие-то баллы за задачу.

Для задачи о рюкзаке имеется грейдер - в него можно сдавать решения публичных тестов и сравниваться с другими участниками. Имя необходимо указывать в формате "фамилия транслитом маленькими буквами + подчеркивание + имя транслитом маленькими буквами", например: kolesnichenko_ignat.

Контест для сдачи задач доступен по ссылке.

Задание и вопросы по нему следует отправлять на почту discret.opt.hse@gmail.com. В заголовке письма указывайте "ФИО Практика1"

Критерии оценивания качества решения. Для каждого закрытого теста в качестве baseline был выбран ответ жадного алгоритма, за него полагается 0.1 балла. За достижение оптимального ответа в тесте полагается 0.5 балла. Для остальных значений оценка вычисляется линейно исходя из двух указанных точек (например, если значение вашего решения лежит ровно посередине между оптимальным и жадным, то за него полагается 0.3 балла).

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

Все тесты к задаче, а также ответы жадного и оптимального алгоритмов для закрытых тестов доступны по ссылке https://yadi.sk/d/2gZG00VoYoSeDA

Задание 2 (задача коммивояжера, задача об открытии складов, задача о сборке автомобилей)

Дедлайн: 23.59 16 июня. Не опаздывайте, после дедлайна решения не принимаются.

В задании предлагается решать несколько комбинаторных задач. Архив с заданием доступен здесь. Обратите внимание, что ваше решение должно состоять из успешной посылки в Я.Контесте и написанного отчета, которые вы должны прислать по почту.

Контест для сдачи задач https://contest.yandex.ru/contest/12924.

Грейдер для задачи Коммивояжера http://akhmedov.me:50028/tsp/ – в него можно сдавать решения публичных тестов и сравниваться с другими участниками. Имя необходимо указывать в формате "фамилия транслитом маленькими буквами + подчеркивание + имя транслитом маленькими буквами", например: kolesnichenko_ignat

Задание и вопросы по нему следует отправлять на почту discret.opt.hse@gmail.com. В заголовке письма указывайте "ФИО Номер группы. Практика2"

Экзамен

Программа экзамена

Здесь будут выкладываться разные статьи, полезные для подготовки

Порядок проведения экзамена


Пересдача

Комиссия

Полезные материалы

Рекомендуемая литература

 * "B.Korte, J.Vygen – Combinatorial optimization" – подробная книга по теории комбинаторной оптимизации (http://www.or.uni-bonn.de/~vygen/co.html).
 * "V. Vazirani – Approximation Algorithms" – одна из лучших книг по приближенным алгоритмам.
 * "H. Papadimitriou – Combinatorial Optimization: Algorithms and Complexity" – классический учебник по комбинаторной оптимизации. 
 * "Where are the hard knapsack problems?" [David Pisinger] - интересные рассуждения по поводу того, как генерировать сложные тесты для задачи о рюкзаке.
 * ["Heuristics for the Traveling Salesman Problem" [Christian Nilsson]]  - краткое но насыщенное описание эвристик для задачи о коммивояжёре.
 * "Handbook of Constraint Programming" [F. Rossi, P. van Beek and T. Walsh] - справочник по программированию в ограничениях.
 * "Handbook of Metaheuristics" [Michel Gendreau, Jean-Yves Potvin] - справочник с описанием эвристических алгоритмов оптимизации.
 * "An Effective Implementation of the Lin-Kernighan Traveling Salesman Heuristic" [Keld Helsgaun] - описание эвристики Лина-Кернигана для задачи комивояжёра.
 * "The car sequencing problem: overview of state-of-the-art methods and industrial case-study of the ROADEF’2005 challenge problem" - описание эвристик, в том числе локального поиска, для задачи car sequencing.

Полезные ссылки

 * [Визуализатор маршрута коммивояжёра] (вершины подаются в 0-индексации)
 * Курс по дискретной оптимизации на [Coursera]. Содержит хорошие видео-лекции по Constraint Programming и Local Search.

Библиотеки для решения задач оптимизации

 *  [Google Optimization Tools] (C++, Python, Java, C#) - фреймворк для решения задач дискретной оптимизаций. Позволяет программировать в парадигме Constraint Programming. Содержит инструменты для решения задач линейного программирования. ([Более полная документация])
 * [Numberjack] (Python)
 * [Choco] (Java)
 * [Gecode] (C++)
 * [MiniZinc] (MiniZinc) - Довольно выразительный язык для CP. Есть ((http://www.hakank.org/minizinc/ много примеров)).