- •1. Введение
- •Основные разделы курса
- •3. Основная задача линейного программирования. Различные формы записи задачи.
- •6. Алгоритм симплекс-метода.
- •1.3. Реализация симплекс-метода в виде симплексных таблиц.
- •8Транспортная задача. Описание и примеры применения метода потенциалов.
- •29.Метод ветвей и границ. Задача о рюкзаке.
- •Задача о рюкзаке
- •30. Метод ветвей и границ. Задача коммивояжера.
- •28. Методы перебора вариантов. Метод вариаций.
- •31.Задачей целочисленного программирования называется задача линейного программирования, в которой имеется дополнительное условие, требующее, чтобы часть переменных принимала только целые значения.
- •35.Общие принципы дискретного динамического программирования. Уравнение Беллмана.
- •36. Задача распределения ресурсов.
- •38. Построение кратчайшего пути на сети.
- •37. Задача оптимального планирования. Обработка деталей на двух станках.
- •10. Выпуклые множества и выпуклые функции.
- •13.Двойственность в задачах выпуклого программирования
- •14. Квадратичное программирование
- •12. Постановка задачи. Теорема Куна – Таккера.
- •16. Геометрическое программирование
- •11. Свойства выпуклых множеств и выпуклых функций
- •19. Общая задача нелинейного программирования.
- •22.Свойства дифференцируемых функций.
- •24. Дифференцируемость оператора Немыцкого.
- •25. Необходимый признак экстремума в задачах без ограничений первого и второго порядков.
- •27 . Правило множителей Лагранжа для гладких нелинейных задач.
- •41. Простейшая вариационная задача (пвз), исследование необходимых условий экстремума первого порядка.
- •45. Вариационная задача с кусочно-гладкими кривыми.
- •46. Исследование необходимых условий экстремума второго порядка. Условия Лежандра и Якоби.
- •42.. Алгоритм Гюйгенса исследования пвз.
- •48.. Поле экстремалей. Достаточные условия сильного экстремума.
- •Задача Больца.
- •6.9. Изопериметрические задачи.
- •51. Принцип максимума Понтрягина.
Задача о рюкзаке
Имеется n предметов. Вес i-го предмета равен pi, его ценность выражается числом сi. Требуется найти совокупность предметов минимального веса при условии, что ценность этой совокупности не должна быть меньше заданного числа С. (Другой вариант задачи – найти совокупность максимальной стоимости, вес которой не превосходит P).
Введем переменные xi, i=1,…,n. Будем считать, что xi=1 означает, что i-й предмет вкладывается в рюкзак, xi=0 – не вкладывается. Тогда математическая модель задачи запишется так:
f(x) = p1x1+…+pnxn →min (суммарный вес всех предметов в рюкзаке – минимальный),
c1x1+…+cnxn ≥ C (суммарная ценность не меньше требуемой),
x1,…,xn∈{0; 1}.
Выберем следующий метод ветвления: выбирается некоторая переменная xk, после чего в одной части вариантов полагается xk=0, а в другое множество поместим все планы наполнения рюкзака, в которых xk=1.
В результате в каждом из случаев получается задача, аналогичная начальной, количество переменных при этом уменьшается на 1, и изменяются целевая функция и неравенство-ограничение.
Для получения оценки снизу будем находить минимум функции f(x) на более широком множестве, чем требуется в задаче: вместо условий x1,…,xn∈{0; 1} будем использовать условия x1,…,xn∈[0; 1]. При этом получается обычная задача линейного программирования, решение которой можно найти даже без применения симплекс-метода.
30. Метод ветвей и границ. Задача коммивояжера.
Классическая задача коммивояжера состоит в следующем. Имеется n населенных пунктов, соединенных дорогами. Расстояния (или в другом варианте – стоимость проезда) между всеми пунктами заданы матрицей A=(aij). Если между пунктами i и j нет соединяющей их дороги, то aij=∞.
Требуется составить маршрут, проходящий через все пункты ровно по одному разу (с возвратом в исходную точку), имеющий минимально возможную длину (или, соответственно, маршрут с минимальной стоимостью проезда).
Для решения данной задачи методом ветвей и границ выберем следующий способ ветвления: будем выбирать одну из дорог (например, из пункта k в пункт m) и к одному из подмножеств отнесем все маршруты, проходящие через данную дорогу, а к другому – все маршруты, не использующие ее.
В первом случае (когда мы заявим, что во всех маршрутах будет присутствовать дуга (k,m)), удалим из матрицы А k-ю строку и m-й столбец, после чего остальные звенья маршрута будем искать по оставшимся элементам матрицы.
Во втором случае (когда мы заявим, что во всех маршрутах не будет использоваться дуга (k,m)), положим akm = ∞, т.е. рассмотрим аналогичную исходной задачу, в которой дуги (k,m) просто нет.
Поскольку при ветвлении все задачи получаются однотипными исходной, то достаточно указать способ нахождения оценки для начальной задачи.
В k-й строке матрицы А указываются длины путей, выходящих из пункта k. В каждом из маршрутов мы используем ровно один из них. Поэтому, если мы вычтем из всех элементов строки число N, то мы получим другую задачу, в которой длины всех маршрутов уменьшатся ровно на N (по сравнению с такими же маршрутами в исходной задаче). То же самое касается и столбцов.
В итоге для вычисления оценки в начальной задаче необходимо:
1) в каждой строке найти минимум b(i) и вычесть его из всех элементов строки;
2) в каждом столбце получившейся матрицы найти минимум c(j) и вычесть его из всех элементов столбца;
3) сумма Z всех b(i) и c(j) дает значение оценки, которая показывает, на сколько мы уменьшили длины всех маршрутов.