Автор работы: Пользователь скрыл имя, 27 Сентября 2011 в 10:26, курсовая работа
Целью исследования методов является выявление наилучшего способа действия при решении той или иной задачи. Главная роль при этом отводится математическому моделированию. Для решения математических моделей предназначены различные математические методы. Среди них метод динамического программирования, рассмотренный в данной работе.
ВВЕДЕНИЕ…………………………………………………………………..3
I. ТЕОРЕТИЧЕСКАЯ ЧАСТЬ……………………………………………..5
1.1. Задача динамического программирования ………………………..5
1.2. Примеры задач динамического программирования………………9
1.3. Общая структура динамического программирования……………13
1.4. Понятие о методе ветвей и границ………………………………….15
II.ПРАКТИЧЕСКАЯ ЧАСТЬ………………………………………………21
2.1.Применение метода ветвей и границ для задач календарного планирования ……………………………………………………………….21
ЗАКЛЮЧЕНИЕ………………………………………………………………27
Библиографический список………………………………………………..28
4°. В
случае необходимости
Проиллюстрируем метод ветвей и границ на примере.
Z = Зх1 + х2 — max
при ограничениях:
х1, x2 — целые числа.
Решение. За нижнюю границу линейной функции примем, например, ее значение в точке (0,0), т.е. Z0 = Z (0; 0) = 0.
I этап. Решая задачу симплексным методом, получим Zmax = 13 при Х1* = (4,5; 0; 0; 1,5; 0,5; 4); так как первая компонента х1* дробная, то из области решения исключается полоса, содержащая дробное оптимальное значение х1*, т.е. 4 < х1 < 5. Поэтому задача 1 разбивается на две задачи 2 и 3:
Задача 2
Z=3x1+x2→max
при ограничениях:
4xl + Зх2 < 18
x1 + 2x2 £ 6
0 £ x1 £ 4
0 £ x2 £ 4
х1, x2 — целые числа.
Задача 3
Z=3x1+x2→max
при ограничениях:
4xl + Зх2 < 18
x1 + 2x2 £ 6
5 £ x1 £ 5
0 £ x2 £ 4
х1, x2 — целые
числа.
Список задач: 2 и 3. Нижняя граница линейной функции не изменилась: Z0= 0.
II этап. Решаем (по выбору) одну из задач списка, например задачу 3 симплексным методом.
Получим, что условия задачи 3 противоречивы.
III этап.
Решаем задачу 2 симплексным методом. Получим
Zmax = 14/3 при X3*= (4; 2/3; 0;
2/3; 0; 10/3). Хотя Z(X3*) = 14/3 > Z0
= 0, по-прежнему сохраняется Z0 = 0,
ибо план нецелочисленный. Так как х2*
— дробное число, из области решений исключаем
полосу 0 < x2 < 1 и задачу 2 разбиваем
на две задачи 4 и 5.
Задача 4
Z=3x1+x2→max
при ограничениях:
4xl + Зх2 < 18
x1 + 2x2 £ 6
0 £ x1 £ 4
0 £ x2 £ 0
х1, x2 — целые
числа.
Задача 5
Z=3x1+x2→max
при ограничениях:
4xl + Зх2 < 18
x1 + 2x2 £ 6
0 £ x1 £ 4
1 £ x2 £ 4
х1, x2 — целые
числа.
Список задач: 4 и 5. Значение Z0 = 0.
IV этап. Решаем задачу 4 симплексным методом.
Получим Zmax = 12 при X4* = (4; 0; 2; 2; 0; 0). Задачу исключаем из списка, но при этом меняем Z0; Z0 = Z(X4*) = 12, ибо план Х4* целочисленный.
V этап. Решаем задачу 5 симплексным методом.
Получим Zmax
= 12,25 при X5* = (3,75; 1; 0; 0,25; 0,25;
0; 3). Z 0 не меняется, т.е. Z0
= 12, ибо план X5* нецелочисленный.
Так как х1* — дробное, из области
решений исключаем полосу 3<x1<4,
и задача 5 разбивается на две задачи: 6
и 7.
Замечание 1. Нетрудно видеть, что каждая
последующая задача, составляемая в процессе
применения метода ветвей и границ, отличается
от предыдущей лишь одним неравенством
— ограничением. Поэтому при решении каждой
последующей задачи нет смысла решать
ее симплексным методом с самого начала
(с I шага). А целесообразнее начать решение
с последнего шага (итерации) предыдущей
задачи, из системы ограничений которой
исключить "старые" (одно или два)
уравнения — ограничения и ввести в эту
систему "новые" уравнения — ограничения.
Задача 6
Z=3x1+x2→max
при ограничениях:
4xl + Зх2 < 18
x1 + 2x2 £ 6
0 £ x1 £ 3
1 £ x2 £ 4
х1, x2 — целые
числа.
Задача 7
Z=3x1+x2→max
при ограничениях:
4xl + Зх2 < 18
x1 + 2x2 £ 6
4 £ x1 £ 4
1 £ x2 £ 4
х1, x2 — целые числа
Метод ветвей и границ является универсальным методом решения комбинаторных задач дискретного программирования. Сложность практического применения метода заключается в трудностях нахождения способа ветвления множества на подмножества и вычисления соответствующих оценок, которые зависят от специфики конкретной задачи.
Рассмотрим применение разновидности метода ветвей и границ— метода «последовательного конструирования и анализа вариантов» для решения задачи календарного планирования трех станков.
Заданы п деталей di (i = 1, 2, ..., n), последовательно обрабатываемых на трех станках R1, R2, R3, причем технологические маршруты всех деталей одинаковы. Обозначим ai ,bi ,ci — длительность обработки деталей di на первом, втором и третьем станках соответственно.
Определить такую очередность запуска деталей в обработку, при которой минимизируется суммарное время завершения всех работ Tц.
Можно показать, что в задаче трех станков очередность выполнения первых, вторых и третьих операций в оптимальном решении может быть одинаковой (для четырех станков это свойство уже не выполняется). Поэтому достаточно определить очередность запуска только на одном станке (например, третьем).
Обозначим sk = (i1, i2 , ..., ik) — некоторую последовательность очередности запуска длиной k (1 £ k £ п) и A (sk), В (sk), С (sk) — время окончания обработки последовательности деталей sk на первом, втором и третьем станках соответственно.
Необходимо найти такую последовательность sопт, что
С(sопт) = min С (s).
s
Покажем, как можно рекуррентно вычислять A (sk), В (sk), С (sk). Пусть sk+1 = (sk ,ik+i), т. е. последовательность деталей sk+1 получена из деталей sk с добавлением еще одной детали ik+1. Тогда
A (sk+1) = A (sk)+ ,
В (sk+1) = max [A (sk+1); В (sk)] + ,
С (sk+1) = max [В (sk+1); С (sk)] +
Для задачи трех станков можно использовать следующее правило доминирования .
Если s
— некоторая начальная
последовательность,
а
— под последовательность
образованная из s
перестановкой некоторых
символов, то вариант s
доминирует над
, когда выполняются
следующие неравенства:
А
(s) £
А (
), В
(s) £
В (
), С
(s) £
С (
),
причем хотя бы одно из них выполняется как строгое неравенство.
Способ
конструирования вариантов
довательностей