Шаг 108.
Задача о загрузке

    На этом шаге мы рассмотрим задачу о загрузке.

    Задача о загрузке - это задача о рациональной загрузке судна (самолета, автомашины и т.п.), которое имеет ограничения по объему или грузоподъемности. Каждый помещенный на судно груз приносит определенную прибыль. Задача состоит в определении загрузки судна такими грузами, которые приносят наибольшую суммарную прибыль.

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

    Рекуррентное уравнение процедуры обратной прогонки выводится для общей задачи загрузки судна грузоподъемностью W предметов (грузов) n наименований. Пусть mi - количество предметов i-го наименования, подлежащих загрузке, wi - прибыль, которую приносит один загруженный предмет i-го наименования, wi - вес одного предмета i-го наименования. Общая задача имеет вид следующей целочисленной задачи линейного программирования.

Максимизировать z = r1m1 + r2m2 + ... + rnmn
w1m1 + w2m2 + ... + wnmn = W,
m1, m2, ..., mn > 0 и целые.

    Три элемента модели динамического программирования определяется следующим образом.

  1. Этап i ставится в соответствие предмету i-го наименования, i = 1,2,..., n.
  2. Варианты решения на этапе i описываются количеством mi, предметов i-го наименования, подлежащих загрузке. Соответствующая прибыль равна rimi. Значение mi заключено в пределах от 0 до [W/wi], где [W/wi] — целая часть числа W/wi.
  3. Состояние xi, на этапе i выражает суммарный вес предметов, решения о погрузке которых приняты на этапах i, i + 1,..., n. Это определение отражает тот факт, что ограничение по весу является единственным, которое связывает n этапов вместе.

    Пусть fi(xi) - максимальная суммарная прибыль от этапов i, i + 1,..., n при заданном состоянии xi. Проще всего рекуррентное уравнение определяется с помощью следующей двухшаговой

Шаг 1. Выразим fi(xi) как функцию fi+1(xi+1) в виде


Шаг 2. Выразим xi+1 как функцию xi для гарантии того, что левая часть последнего уравнения является функцией лишь xi. По определению xi - xi+1 представляет собой вес, загруженный на этапе i, т.е. xi - xi+1 = wimi или xi-1 = xi - wimi. Следовательно, рекуррентное уравнение приобретает следующий вид.


   

    На следующем шаге рассмотрим применение задачи о загрузке.




Предыдущий шаг Содержание Следующий шаг