Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ИТУ теория курсовой дневные 2012.doc
Скачиваний:
9
Добавлен:
20.11.2019
Размер:
744.96 Кб
Скачать

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]