- •1 Методы и модели линейного программирования
- •1.1. Основные положения
- •1.2. Симплексный метод
- •1.3. Метод Гомори. Целочисленное решение
- •1.4. Двойственная задача
- •1.4.1. Анализ устойчивости двойственных оценок
- •1.5. Решение задачи линейного программирования средствами Microsoft Excel
- •1.6. Задачи с булевыми переменными
- •1.7. Варианты заданий линейного программирования
- •2.Динамическое программирование
- •2.1. Суть метода динамического программирования
- •2.2. Задача о рюкзаке. Уравнение Беллмана для задачи о рюкзаке.
- •2.3. Реализации метода динамического программирования для задачи о рюкзаке.
- •2. Двухиндексные задачи линейного программирования. Стандартная транспортная задача (тз).
- •Исходные параметры модели тз
- •1.4. Варианты заданий линейного программирования
- •3. Сетевое моделирование
- •3.1. Основные положения
- •3.2. Сетевой график и правила его построения
- •3.3 Расчет параметров сетевых графиков
- •3.4. Оптимизация сети методом время-стоимость
- •3.5 Варианты заданий сетевого планирования
- •4. Правила оформления курсового проекта
- •Библиографический список
- •Приложение 1
- •Курсовой проект
2.3. Реализации метода динамического программирования для задачи о рюкзаке.
Рассмотрим итерационную реализацию метода динамического программирования. Результаты расчетов вносятся в табл. 2.1.
Таблица 2.1.
s |
i=n |
… |
i=1 |
|||
Un(s) |
Wn(s) |
|
|
U1(s) |
W1(s) |
|
0 |
0 |
0 |
|
|
0 |
0 |
… |
|
|
|
|
|
|
s≥ai |
1 |
Ci |
|
|
|
|
… |
|
|
|
|
|
|
b |
1 |
Ci |
|
|
|
|
Количество строк в таблице соответствуют возможным значениям остаточной грузоподъемности рюкзака (первый столбец). Здесь i- номер предмета для упаковки.
Для определения порядка добавления предметов используем «жадный» алгоритм.
Жадный алгоритм для задачи о рюкзаке состоит в следующем:
вначале множество предметов Q упорядочивается по убыванию «удельной ценности» (или цены единицы веса) предметов, т.е. так, чтобы
≥ ≥ . . . ≥ ;
затем, начиная с пустого множества, к приближенному решению Q (сначала оно пустое) последовательно прибавляются предметы из упорядоченного множества Q;
при каждом очередном добавлении предмета в рюкзак выполняется проверка, не превосходит ли его вес величины оставшегося запаса объема рюкзака;
окончание просмотра всех предметов завершает процесс построения приближенного решения задачи о рюкзаке.
Согласно алгоритму начинаем заполнять таблицу с последнего предмета, (т.е. идем в обратном порядке). Предмет будет помещен в рюкзак, если s≥ai. Где i-номер предмета с максимальной удельной ценностью (i=n). Тогда Ui(s) =1 и Wi(s)= ci.
Далее, чтобы вычислить значения Ui(s) и Wi(s) для, i=1, . . . , n-1 требует строить для каждой пары вспомогательные таблицы.
Табл. 2.2 демонстрирует вычисление величин Un-1, Wn-1(s) для sn-1 > an-1 по формуле (2.11). соответственно ищутся в отдельных таблицах оставшиеся величины Ui(s), Wi(s) по той же формуле.
Таблица 2.2
u |
S -an-1u |
Wn(S -an-1u) |
cn-1u |
cn-1u+ Wn(S -an-1u) |
0 |
|
|
|
|
1 |
|
|
|
|
Где в таблице 2.2 u –допустимое управление; S-an-1u – остаточный вес рюкзака; Wn(S-an-1u) – выигрыш, равный стоимости предмета n, находящегося в рюкзаке с остаточным весом S-an-1u; cn-1u – стоимость n-1 предмета зависимости от значения u; cn-1u + Wn(S-an-1u) – выигрыш, равный суммарной стоимости предметов n и n-1, находящихся в рюкзаке с остаточным весом S-an-1u.
Значения Un-1, Wn-1(s) определяются по строке с максимальным выигрышем в последней колонке, т.е. из двух значений cn-1u+ Wn(S-an-1u) выбирается наибольшее (при условии W→max), и далее они заносятся в таблицу 2.1.
В результате метод динамического программирования дает следующее оптимальное управление процессом укладки: U* = ( , . . . , ). [6]