Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Специальные методы исследования операций и математические модели. Курс лекций
.pdf
4.3. Метод динамического программирования
)(
*
kk
sZ
)(*sZ
n
.1,2 n
)(
*
1sZk
).(*sZ
k
)(
*
2
sZ
).(
0*1
sZ
0
s
1
x
1
s
).,(φ
011
sx
n,2
.
1k
s
k
x
),(
1kk
sx
k
s
).,(φ
1kkk
sx
)(
0
*
sZ
n
)(
1kk
sA
.,1 n
1k
s
n,1
)(*sZ
k
)(
0*1
sZ
Отвлекаясь от технических трудностей реализации метода ДП, можно
утверждать, что он позволяет найти значения
и целесообразное управле-
ние (если оно существует). Стандартную схему метода ДП сначала сформулируем при следующем упрощающем предположении.
Предположение 4.5. Все задачи Ak(s) разрешимы.
Процедура 1
1. Решая задачу параметрической оптимизации (4.8), для каждого s S
n –1
находим точку максимума функции Zn(xn, s) по xn Xn(s) с ограничением
n(xn, s) S
An(s) и Zn(xn(s), s) =
2. Пусть k
всех s Sk. Решая задачу параметрической оптимизации (4.9), для каждого s S
*
. Обозначим эту точку xn(s). Понятно, что xn(s) – решение задачи
по теореме 4.2.
Допустим, что ранее определены значения
для
k –1
находим точку максимума функции Zk(xk, s) по xk на множестве Xk(s), обозначим
ее xk(s). Это решение задачи Ak(s), и Zk(xk(s), s) =
3. Допустим, что ранее определены значения
для s S1. Из задачи
(4.11) при s = s0 найдем точку максимума функции Z1(x1, s0) по x1 на множестве
X1(s0), обозначим ее x1(s0). Эта точка является решением задачи A1(s0), и
Z1(x1(s0), s0) =
4. Положим
5. Пусть k
=
= s0,
= x1(s0),
=
и определено состояние
Положим
=
Первый этап процедуры (п. 1 – 3) часто называют условной оптимизацией,
а второй (п. 4 и 5) – безусловной оптимизацией. Заметим, что такое словоупотребление специфично для динамического программирования, в теории оптимизации эти термины имеют другие значения. Более удачные названия для указанных этапов – обратный ход и прямой ход.
Предположение 4.5 является слишком сильным. Во-первых, теорема 4.2
показывает, что уравнения Беллмана в любом случае позволяют найти точную
верхнюю границу
значений ЦФ в задаче (4.1) – (4.2). Во-вторых, чтобы
найти оптимальное управление, достаточно решить не все задачи Ak(s), а только
задачи
для k
Однако состояния
неизвестны при выполнении
обратного хода процедуры 1. Поэтому откажемся от предположения 4.5 и изменим процедуру 1 следующим образом.
Процедура 2
1. Решив уравнения Беллмана в форме (4.6) – (4.7), определим конечные
или бесконечные значения B(k, s) для всех k
тирует, что
= B(k, s), причем
– точная верхняя граница значений ЦФ
и s S
. Теорема 4.2 гаран-
k –1
51

в задаче Q1(s0), которая совпадает с задачей (4.1) – (4.2). Следовательно, задача
)(
0*1
sZ
)(
0*1
sZ
)(
0*1
sZ
.
1
x
)(
0*1
sZ
)(
0*1
sZ
1
x
0
s
1
s
).,(φ
011
sx
),(
011
sxZ
),(
011
sxf
)(
1*2
sZ
)(
1*2
sZ
n,2
1k
s
)(
1
*
kk
sZ
)(
1kk
sA
.
k
x
)(
1
*
kk
sZ
)(
1kk
sA
)(
1
*
kk
sZ
)),ε((
1kkk
sxZ
k
x
k
s
).,(φ
1kkk
sx
),(
1kkk
sxZ
),(
1kkk
sxf
)(
*1
kk
sZ
)(
*1
kk
sZ
T
1
),...,(
n
xx
).,...,,(
10
n
sss
T
1
),...,(
n
xx
),...,,(
10
n
sss
)(
1kk
sX
)(
1kk
sX
),(
1kkk
sxZ
),(
1kkk
sxZ
)(sX
k
.
1k
s
:)(sA
n
)(sX
n
)(sA
k
:1,1 n
)),(φ(
*
1
sxZ
kkk
).(sX
k
).(sX
k
)(sQ
k
n
kj
jjj
sxf ),(
1
)(
1jj
sX
nk,
k
x
(4.1) – (4.2) несовместна при
= – ∞ и неограниченна при
= + ∞. В
этих случаях процедура завершается.
2. Пусть
Если задача неразрешима, то значение
существует допустимое решение x1(ε) такое, что
R. Если задача A1(s0) разрешима, найдем ее решение
не достигается, но для любого ε > 0
– Z1(x1(ε), s0) < ε. Выбе-
рем ε > 0, достаточно малое для того, чтобы x1(ε) можно было считать целесообразным, субоптимальным решением. Положим
Из
ние
ние xk(ε) задачи
=
3. Пусть k
+
следует, что
, состояние
разрешима, найдем ее решение
не достигается, но для любого ε > 0 существует допустимое реше-
такое, что
определено и
Если задача неразрешима, то значе-
–
= x1(ε),
= s0,
– конечное число.
R. Если задача
< ε.
=
Выберем такое (достаточно малое) ε, при котором xk(ε) можно считать
субоптимальным решением. Положим
процедура закончена. Если же k < n, то из
ет, что
– конечное число.
= xk(ε),
=
=
Если k = n, то
+
следу-
Описанная выше процедура 2 реализует метод ДП. Она распознает
несовместность и неограниченность задачи (4.1) – (4.2). Если же задача совместна и ограниченна, то процедура строит вектор x* =
и последова-
тельность состояний s* =
Определения и обозначения. Допустим, что вектор x* =
следовательность состояний s* =
процедуры 2 к задаче (4.1) – (4.2).
xk
= {xk
Задача
Задача
fn(xn, s) → max при условиях xn
для k
|
Задача P' – это задача (4.1) – (4.2) с заменой множеств Xk(s) множествами
Задача
для s S
k –1
:
→ max при условиях sn S *, s
K – множество всех k, для которых
построены в результате применения
≤
fk(xk, s) +
для j
= xk(ε).
} и
= s и sj = j(xj, s
k –1
}.
и по-
= Xk(s), если s ≠
, n(xn, s) S *.
→ max при условии
), xj
j –1
52

Здесь задача
)(sA
k
)(sX
k
)(sQ
k
)(
1kk
sX
),(
1kkk
sxZ
).,(
1kkk
sxZ
)(
1
*
kk
sZ
)(
1kk
sA
),(
1kkk
sxZ
),(
1
*
kk
sZ
)(
1kk
sX
),(
1kk
sX
)(
1kk
sA
)(
1kk
sA
)(
1
*
kk
sZ
)(
1kk
sA
)(
1
*
kk
sZ
),(
1kkk
sxZ
)(
1
*
kk
sZ
)(
1kk
sX
).(
1kk
sX
)(
1kk
sA
k
x
),(
1kkk
sxZ
),(
1kkk
sxZ
).,(
1kkk
sxZ
k
x
)(
1kk
sA
),(
1kk
sA
k
x
)(
1kk
sA
),(
1kk
sA
),...,,(
10
n
sss
T
1
),...,(
n
xx
0
s
j
s
),(φ
1jjj
sx
.,1 n
j
x
)(
1jj
sA
)(01sQ
)(01sQ
получена заменой в задаче Ak(s) множества Xk(s) мно-
жеством
, а задаче P' сопоставлены подзадачи
так же, как задаче
(4.1) – (4.2) мы сопоставили подзадачи Qk(s).
Можно считать, что процедура 2, выполняя прямой ход (п. 2 и 3), дополняет описание каждого множества
Если k K, то значение
=
ние
в задаче
При этом в задаче
в задаче
и
не достигается,
ограничением
достигается,
≤
=
идентичны. Если же k K, то значе-
точка
– ε <
оптимальна и
<
и
является наибольшим возможным значением ЦФ, так как в этой задаче присутствует дополнительное ограничение
Таким образом:
если k K;
является оптимальным решением в задачах
является субоптимальным решением задачи
тимальным решением задачи
если k K.
≤
и
и оп-
Теорема 4.3 (о корректности метода ДП). Если задача (4.1) – (4.2) сов-
местна и ограниченна, то метод динамического программирования определяет
последовательность состояний s* =
и вектор x* =
такие, что
вектор x* является оптимальным управлением для задачи P', а последовательность s* указывает оптимальную (для задачи P') траекторию объекта управления в пространстве состояний.
Доказательство. По построению
предшествующих рассуждений ясно, что
всех j. Тогда x* является решением задачи
4.2. Это доказывает теорему, так как задача
= s0 и
=
для j
является решением задачи
по утверждению (б) следствия
совпадает с задачей P'. #
Из
для
Теорема 4.3 доказывает, что метод динамического программирования
находит оптимальное или субоптимальное решение задачи ДП, если она совместна и ограниченна. Заметим, что на этапе формализации задачи, как правило, удается так описать множества Xk(s) управлений, возможных на шаге k при
состоянии s, чтобы все совместные и ограниченные задачи Ak(s) были разреши-
мы. Достаточно, например, обеспечить замкнутость множеств
{Zk(x, s
) | x Xk(s)}.
k –1
В таком случае метод ДП находит оптимальное решение задачи (4.1) –
(4.2), если оно существует.
Вычислительная схема метода ДП должна преодолеть трудности параметрической оптимизации, поэтому она сильно зависит от типа решаемой задачи. Ниже мы рассмотрим основные типы прикладных задач динамического
программирования.
53

4.4. Статические распределительные задачи
,,1 n
n,1
nj
jj
xf
1
)(
nj
j
x
1
M(i, j) =
,
1j
ik
k
a
Kj = max{0, K – M(1, j)},
(4.12)
Fn(x, s0) =
nj
jj
xf
1
)(
→ max при условиях xj Xj(s
j –1
) и sj = s
j –1
– xj для j.
.,1 n
(4.13)
4.4.1. Распределение ресурса
Предположим, что в некоторой экономической системе n процессов (технологических способов) конкурируют за ресурс, суммарное использование ко-
торого ограничено величиной K. Технологический способ j
используя xj
единиц ресурса, порождает эффект fj(xj). Допустим, что функции fj удовлетворяют следующим условиям: fj(0) = 0; fj монотонно возрастает на промежутке
[0, aj]; fj(xj) = fj(aj) при xj > aj. Последнее условие означает, что мощность спосо-
ба j по переработке ресурса ограничена величиной aj.
Оценкой эффективности распределения ресурса является суммарный эффект. Нужно найти самое эффективное распределение ресурса.
Пусть x = (xj | j
F(x) =
)T. Тогда задача формализуется следующим образом:
→ max при условиях
≤ K, 0 ≤ xj ≤ aj для всех j.
Понятно, что множество допустимых решений задачи непусто (нулевое
решение допустимо), замкнуто и ограниченно. Если функции fj непрерывны, то
задача разрешима по теореме Вейерштрасса.
Представим процедуру выбора управления x как многошаговую, считая,
что на шаге j определяется значение xj, количество ресурса, используемое способом j. Пусть sj – нераспределенный остаток ресурса после шага j. Эта величина характеризует состояние системы в начале шага j + 1. Положим s0 = K (наличие ресурса в начале шага 1). При 1 ≤ i < j ≤ n + 1 пусть
где M(i, j) – максимальное количество ресурса, которое может быть использовано на шагах i, i + 1, …, j – 1, а Kj – минимальный возможный остаток ресурса
после шага j – 1.
Остаток ресурса в начале шага j (состояние s
) не больше K и, с одной
j –1
стороны, может быть равен K, если на предыдущих шагах ресурс не использовался. С другой стороны, до шага j может быть потреблено не более M(1, j)
единиц ресурса, поэтому остаток не меньше, чем Kj. Следовательно, множество
состояний, возможных в начале шага j, имеет вид S
управлений, допустимых на шаге j, имеет вид Xj(s
шем фазовое уравнение: sj = s
– xj (остаток ресурса после шага j равен остатку
j –1
j –1
= [Kj, K ]. Множество
j –1
) = [0, min{s
, aj}]. Запи-
j –1
ресурса после предыдущего шага за вычетом количества, предоставленного
способу j).
Условие задачи не ограничивает множество терминальных состояний, поэтому можем считать, что S* = R. Эквивалентная формулировка задачи:
54

Это частный случай задачи (4.1) – (4.2), предположения 4.1 – 4.4 выпол-
)(
1*nn
sZ
)(
1*nn
sZ
:1,1 n
)(
1*jj
sZ
= max{ fj(xj) +
)(
1
*
1 jjj
xsZ
| 0 ≤ xj ≤ min{s
j –1
, aj}}, s
j –1
S
j–1
.
(4.14)
)(
2
*
1 nn
sZ
)(
0*1
sZ
)(
10*2
xsZ
n,1
)(
1*nn
sZ
)(
1*nn
sZ
)0(
*
n
Z
).(
12
*
nnn
xsZ
нены с очевидностью, следовательно, можем применить метод ДП.
Уравнение Беллмана для шага n:
= max{ fn(xn) | 0 ≤ xn ≤ min{s
, an}}.
n –1
Из монотонности функции fn следует, что xn(s
= fn(min{s
n –1
, an}).
Уравнение Беллмана для шага j
n –1
) = min{s
, an} и
n –1
=
Например, для шага n – 1 получаем
= max{ f
n–1(xn –1
) + fn(min{s
n –2
– x
, an}) | 0 ≤ x
n –1
≤ min{s
n –1
n –2
, a
n –1
}}.
Для первого шага (при j = 1) уравнение (4.14) принимает вид:
= max{ f1(x1) +
| 0 ≤ x1 ≤ min{s0, a1}}.
Уравнения Беллмана для шагов j < n, вообще говоря, не решаются формульно, в отличие от уравнения для шага n. Для аналитического решения уравнений (4.14) необходимы более сильные предположения о функциях fj.
Если аналитическое решение уравнений Беллмана невозможно, то обычно предполагают, что ресурс распределяется дискретными «порциями» , причем K = N и aj = nj для всех j (N и nj – натуральные числа). Тогда
Sj = {Kj, Kj + , Kj + 2,…, K}, Xj(s
и уравнение Беллмана для j < n при каждом s
всех xj из Xj(s
j –1
).
) = {0, , 2,…, min{s
j –1
j –1
S
можно решать перебором
j –1
, aj}},
j –1
Задача упрощается, если функции fj выпуклы и мощности технологических способов достаточно велики: aj ≥ K для всех j. Тогда из монотонности
функции fn следует, что в оптимальном плане ресурс будет использован полностью, поэтому можно считать, что S* = {0}.
Теорема 4.4 (распределение ресурса при выпуклых функциях эффекта).
Предположим, что в задаче (4.13) для всех j функция fj монотонно возрастает и
выпукла на [0, K ], а aj ≥ K. Пусть max{ fj(K ) | j
} = fr(K ). Тогда задача имеет
решение x = (x1, …, xn)T такое, что xj = 0 при j r и xr = K.
Доказательство. Из монотонности функции fn следует, что в оптимальном плане ресурс будет использован полностью, поэтому можно считать, что
S * = {0}. Ясно, что S0 = {K }. Если j > 1, то M(1, j) ≥ a1 ≥ K, Kj = max{0, K – M(1, j)} =
= 0, S
= [Kj, K ] = [0, K ]. Следовательно, Xj(s
j –1
) = [0, min{s
j–1
, aj}] = [0, s
j –1
j –1
] для
всех j.
1.
выпуклая функция на [0, K ], причем
= max{ fn(xn) | 0 ≤ xn ≤ s
}, поэтому xn(s
n –1
= 0. Из утверждений (д) и (ж) теоре-
n –1
) = s
n –1
и
= fn(s
n –1
) –
мы 3.2 следует выпуклость функции
Z
n–1(xn –1
, s
n –2
) = f
n –1(xn –1
) +
55

Тогда при любом s
)(
2
*
1 nn
sZ
)(
2*nn
sZ
)0(
*
n
Z
)(
2*nn
sZ
)0(
*
1n
Z
)(
2
*
1 nn
sZ
1,1 n
)(
1*jj
sZ
)(
1
*
1 jj
sZ
)0(
*
j
Z
1
x
1
x
1j
s
j
x
1
x
1
s
2
x
)(
12
sx
r
x
j
x
n,1
n,1
n,1
F(x) =
nj
jj
xf
1
)(
→ min при условиях
nj
j
x
1
= K, 0 ≤ xj ≤ aj для всех j.
(4.15)
K ≤
.
1nj
j
a
(4.16)
43
n –2
S
максимум Z
n –2
стигается на одном из концов промежутка43, x
но,
= max{ f
n –1
(0) +
, f
n –1(sn –2
) +
n –1(xn –1
n –1(sn –2
, s
) по x
n –2
) {0, s
} = max{
[0, s
n –1
}. Следователь-
n –2
, f
n –1(sn –2
n –2
] до-
)}.
Ясно, что
пуклы, следовательно,
= 0. Кроме того, обе функции в фигурных скобках вы-
– выпуклая функция по утверждению (е) теоре-
мы 3.2.
Продолжая рассуждение, для j
2. По доказанному
всех j > 1. Если же
ции, докажем, что
3. Следовательно, Fn(K ) = fr(K ). Тогда fr(K ) = max{ fj(K ) | j
= max{
, fj(s
= x1(s0) {0, K}. Если
= 0, то
= K и
= K для некоторого r и
по индукции докажем, что
)}, xj(s
j –1
) {0, s
j –1
j–1
} и
= K, то
=
{0, K}. Рассуждая по индук-
= 0 для j r.
= 0.
=
}. #
= 0 для
Таким образом, при выпуклых функциях эффекта целесообразно все доступное количество ресурса выделить одному способу: тому, который использует этот ресурс с наибольшим эффектом. Заметим, что теорема 4.4 использует
метод ДП для обоснования формульного решения задачи.
4.4.2. Распределение производства товаров (услуг)
Предположим, что товар (услугу) можно произвести n способами. Способ
j
производит xj единиц товара (услуги) с затратами fj(xj) и за рассматрива-
емый период может произвести не более aj единиц (aj > 0 – мощность способа
j). Нужно распределить производство K > 0 единиц товара (услуги) между спо-
собами так, чтобы минимизировать суммарные затраты. Будем считать, что
функции fj(xj) монотонно возрастают при xj [0, aj], fj(xj) = + ∞ при xj > aj и
fj(0) = 0.
Пусть x = (xj | j
)T. Задача формализуется следующим образом
Существенное отличие этой задачи от предыдущей состоит в том, что
ограничение является равенством. Из-за этого задача может быть несовместной. Критерием совместности задачи является достаточность суммарной мощности для покрытия спроса:
Пусть на шаге j определяется значение xj, объем производства товара
(услуги) способом j. Состояние sj системы в начале шага j + 1 – это нераспределенный объем производства после шага j. Положим s0 = K (нераспределенный
объем производства в начале шага 1). Производство в количестве K должно
Рокафеллар Р. Выпуклый анализ. – М.: Мир, 1973 (следствие 32.3.1).
56

быть распределено, поэтому после шага n система должна перейти в состояние
M( j, j) =
1j
jk
k
a
= 0.
(4.17)
Xj(s
j –1
) = [max{0, s
j –1
– M( j + 1, n + 1)}, min{s
j –1
, aj}].
(4.18)
n,1
nk
k
a
1
0 ≤ sj = s
j –1
– xj ≤ M( j + 1, n + 1).
(4.19)
nj
jj
xf
1
)(
n,1
s = 0: S* = {0}.
Определим M(i, j) и Kj формулами (4.12). Заметим, что по определению
Фазовое уравнение имеет вид sj = s
даче (4.13), должно удовлетворять условию 0 ≤ xj ≤ min{s
sj = s
– xj > M( j + 1, n + 1), что эквивалентно xj < s
j –1
– xj. Управление на шаге j, как в за-
j –1
, aj}. Но если
j –1
– M( j + 1, n + 1), то про-
j –1
изводство, не распределенное до шага j + 1, невозможно распределить на шагах
j + 1, …, n, поэтому должно быть xj ≥ s
Может оказаться, что Xj(s
) = (если левая граница промежутка больше
j –1
– M( j + 1, n + 1). Следовательно,
j –1
правой).
Лемма 4.1. Если задача (4.15) совместна, то
S
[Kj, min{K, M( j, n + 1)}] ≠ и Xj(s
j–1
) ≠ для всех j
j –1
и s
j –1
S
j–1
.
Доказательство. Величина нераспределенного производства в начале
шага j не меньше Kj, значит, Kj ≤ s
s
≤ M( j, n + 1) и Xj(s
j–1
) ≠ . Если j = 1, то Kj = K – M(1, 1) = K и, учитывая
j –1
≤ K. Индукцией по j докажем, что
j–1
(4.16),
M( j, n + 1) = M( 1, n + 1) =
≥ K ≥ s0.
Теперь из (4.18) при j = 1 следует, что
Xj(s
Допустим, что Xj(s
ложение индукции). Из sj Sj следует, что sj = s
xj Xj(s
) = X1(s0) = [max{0, K – M(1, n + 1)}, min{s0, a1}] = [0, min{K, a1} ≠ .
j–1
) ≠ и s
j –1
). Из (4.18) и предположения индукции получаем s
j –1
≤ M( j, n + 1) для всех s
j –1
– xj для каких-то s
j –1
j –1
≥ xj ≥ s
j –1
S
(предпо-
j –1
j –1
j –1
S
j –1
и
– M( j +
+ 1, n + 1), откуда
Формула (4.18) для j + 1 дает X
min{sj, a
}]. Покажем, что левая граница промежутка не больше правой, то
j +1
) = [max{0, sj – M( j + 2, n + 1)},
j +1(sj
есть каждое число в первой фигурной скобке не больше каждого числа во второй фигурной скобке. Из (4.12) следует, что
M( j + 1, n + 1) = a
Тогда из (4.19) получаем sj – M( j + 2, n + 1) ≤ a
+ M( j + 2, n + 1).
j+1
, остальные соотноше-
j +1
ния очевидны. #
Задача ДП, эквивалентная задаче (4.15), имеет вид
Fn(x, s0) =
xj Xj(s
) и sj = s
j –1
j –1
→ min при условиях:
– xj для j
, s0 = K, sn = 0.
57

Из s
)(
1nn
sx
)(
1*nn
sZ
:1,1 n
)(
1*jj
sZ
)(
1
*
1 jjj
xsZ
1,1 n
n,1
n,1
F(x) =
nk
kk
xс
1
→ max при условиях
nk
kk
xw
1
≤ W, xk
k
m,0
для всех k.
(4.20)
k
k
j
j
w
xW
1
1
44
45
– xn = sn = 0 следует, что xn = s
n –1
– единственное допустимое значение
n –1
переменной в уравнении Беллмана для шага n. Следовательно,
= s
n –1
и
= fn(s
Уравнение Беллмана для шага j
n –1
).
= inf{ fj(xj) +
| xj Xj(s
)} для s
j –1
j –1
S
j –1
.
Из леммы 4.1 следует, что при условии (4.16) уравнения Беллмана разрешимы. Формульное решение этих уравнений для j
возможно только
при дополнительных предположениях относительно функций fj. В общем случае обычно допускают, что товар (услуга) производится неделимыми «порциями» , причем K = N и aj = nj для всех j (N и nj – натуральные числа). Тогда множества Sj и Xj(s
при каждом s
j –1
S
j –1
) для любого j конечны и уравнение Беллмана для j < n
j –1
можно решать конечным перебором.
Если ограничения по мощностям способов несущественны (K ≤ aj для
всех j) и функции fj вогнуты, то нетрудно доказать аналог теоремы 4.4: достаточно использовать только один способ, тот, который может произвести K единиц товара (услуги) с наименьшими затратами.
4.5. Задача о ранце
4.5.1. Основная модель
Линейная задача о ранце 44 формулируется следующим образом. Есть неделимые предметы n типов, число предметов типа k
равно mk. Предмет
типа k весит wk > 0 и имеет ценность ck > 0. Нужно уложить в ранец набор
предметов с суммарным весом не более W и максимальной суммарной ценностью.
Пусть xk – число предметов типа k в загружаемом наборе, x = (xk | k
).
Формализация задачи:
Следствие 4.145. Оптимальное решение задачи (4.20) существует при всех
допустимых сочетаниях параметров.
Если отказаться от неделимости предметов (то есть от условия целочисленности) и считать, что xk [0, mk] для всех k, то решение строится следующим образом: упорядочим типы предметов по невозрастанию стоимости на
единицу веса (c
/ wk) и положим
k
x1 = min{m1, W / w1}, xk = min{mk,
} для k > 1.
Другие названия: целочисленный рюкзак, knapsack problem.
Доказательство оставляем читателю.
58

Задачи вида (4.20), о ранце с неделимыми предметами, хорошо решаются
n,1
.)(,0
1kk
sd
nk
kk
xc
1
.,1 n
)(
1*nn
sZ
)(,0
1nn
sd
1,1 n
)(
1*kk
sZ
)(
1
*
1 kkkk
xwsZ
)(,0
1kk
sd
H(x) =
nk
kk
xw
1
→ min при условиях
nk
kk
xc
1
≥ A, xk
k
m,0
для всех k.
(4.21)
nk
kk
mc
1
методом ДП. Условимся, что на шаге k определяется значение xk, число загружаемых предметов типа k. Состояние s
системы в начале шага k – это «грузо-
k–1
подъемность», не использованная до шага k. Тогда фазовое уравнение имеет
вид sk = s
– wkxk. Положим s0 = W. В задаче нет ограничений на состояние си-
k–1
стемы после шага n, можем считать, что S* = [0, W].
Обозначения
[x] – целая часть числа x R, наибольшее целое число, не превосходящее x.
dk(s) = min{mk, [s / wk]}, где k
Множество управлений, допустимых на шаге k, если в начале шага система находится в состоянии s
Множество Sk состояний, возможных в начале шага k + 1:
S0 = {W}, Sk = {s – wkxk | s S
Задача ДП, соответствующая задаче (4.22), имеет вид
Fn(x, W) =
→ max при условиях: xk Xk(s
Уравнение Беллмана для шага n решается формульно
= max{cnxn | xn
Уравнение Беллмана для шага k
= max{ckxk +
Множества Sk и Xk(s) конечны для всех k и s, поэтому уравнения Беллмана
решаются перебором.
4.5.2. Обратная задача о ранце
k–1
: Xk(s
и s R.
) =
k–1
для k
, xk Xk(s)} [0, W ] при k > 1.
k –1
), s0 = W и sk = s
k –1
} = cndn(s
n–1
); xn(s
) = dn(s
n –1
| xk
}.
k –1
n–1
).
– wkxk
Допустим, что при исходных данных разд. 4.5.1 нужно составить самый
легкий набор предметов с суммарной ценностью не менее A:
Переменные интерпретируются, как в задаче (4.20). Это обратная задача
о ранце (ОЗР).
Понятно, что задача (4.21) разрешима, если и только если
≥ A.
Пусть шаг k состоит в выборе значения xk. Будем считать, что состояние s
k–1
системы в начале шага k равно разности между величиной A и ценностью набора,
составленного до шага k, если эта разность положительна, в противном случае
s
= 0. Отсюда s0 = A и фазовое уравнение имеет вид: sk = max{0, s
k–1
– ckxk}.
k–1
59

Обозначения
n,1
.)(,0
1kk
sg
Hn(x, A) =
nk
kk
xw
1
→ min при условиях
(4.22)
xk Xk(s
k–1
) и sk = max{0, s
k –1
– ckxk} для k
n,1
, s0 = A, sn = 0.
(4.23)
)(
1*nn
sZ
= inf{wnxn | xn
)(,0
1nn
sg
, s
n –1
≤ cnxn},
(4.24)
)(
1*nn
sZ
)(
1*nn
sZ
1,1 n
)(
1*kk
sZ
}),0 (max{
1
*
1 kkkk
xcsZ
)(,0
1kk
sg
nk
kk
xc
1
nk
kk
xw
1
Если x R, то ]x[ – наименьшее целое число a такое, что x ≤ a.
gk(s) = min{mk, ]s / ck[} для k
и s R.
Множество управлений, допустимых на шаге k, если в начале шага система находится в состоянии s
k–1
: Xk(s
k–1
) =
Опишем множество Sk состояний, возможных в начале шага k + 1:
S0 = {A}, Sk = {max{0, s – ckxk}| s S
, xk Xk(s)} при k > 1.
k –1
В конце шага n требуемая ценность должна быть накоплена, поэтому S* = {0}.
Задача ДП, эквивалентная задаче (4.21), имеет вид
Предположим, что задачи (4.21) и (4.22) – (4.23) разрешимы.
Уравнение Беллмана для шага n:
где условие s
следующим образом. Если s
нимум в (4.24) достигается при xn = xn(s
Если же cnmn < s
≤ cnxn эквивалентно sn = 0. Это уравнение формульно решается
n –1
≤ cnmn, то ]s
n –1
n –1
= wn ]s
, то в (4.24) условия, наложенные на xn, несовместны,
n –1
/ cn[ ≤ mn, gn(s
n –1
) = ]s
/ cn[. Тогда
n –1
/ cn[.
n –1
n –1
минимизация происходит на пустом множестве, значение xn(s
но. В этом случае положим
= + ∞.
) = ]s
n –1
/ cn[ и ми-
n –1
) не определе-
Уравнение Беллмана для шага k
= inf{wkxk +
:
| xk
}.
Множества Sk для всех k и Xk(s) для всех k, s конечны, поэтому уравнения
Беллмана при k < n решаются перебором.
4.5.3. Задача о выборе проектов
Предположим, что для каждого из n инвестиционных проектов указаны
необходимые затраты wk и ожидаемый эффект (например, прибыль) ck > 0. Все
проекты совместимы, поэтому выбор проектов для реализации ограничен только величиной K доступных для инвестирования средств. ЛПР стремится получить максимальный суммарный ожидаемый эффект.
Это частный случай ЛЗР при mk = 1 для всех k:
F(W) =
→ max при условиях
≤ K, xk {0, 1} для всех k,
где xk = 1, если проект k выбран для реализации, иначе xk = 0.
60
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
