Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Специальные методы исследования операций и математические модели. Курс лекций

.pdf
Скачиваний:
0
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
☆
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
.
1k
s
k
x
),(
1kk
sx
k
s
).,(φ
1kkk
sx
)(
0
*
sZ
n
)(
1kk
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
)(
1kk
sA
.
k
x
)(
1
*
kk
sZ
)(
1kk
sA
)(
1
*
kk
sZ
)),ε((
1kkk
sxZ
k
x
k
s
).,(φ
1kkk
sx
),(
1kkk
sxZ
),(
1kkk
sxf
)(
*1
kk
sZ
)(
*1
kk
sZ
T
1
),...,(
n
xx
).,...,,(
10
n
sss
T
1
),...,(
n
xx
),...,,(
10
n
sss
)(
1kk
sX
)(
1kk
sX
),(
1kkk
sxZ
),(
1kkk
sxZ
)(sX
k
.
1k
s
:)(sA
n
)(sX
n
)(sA
k
:1,1 n
)),(φ(
*
1
sxZ
kkk
).(sX
k
).(sX
k
)(sQ
k
n
kj
jjj
sxf ),(
1
)(
1jj
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
)(
1kk
sX
),(
1kkk
sxZ
).,(
1kkk
sxZ
)(
1
*
kk
sZ
)(
1kk
sA
),(
1kkk
sxZ
),(
1
*
kk
sZ
)(
1kk
sX
),(
1kk
sX
)(
1kk
sA
)(
1kk
sA
)(
1
*
kk
sZ
)(
1kk
sA
)(
1
*
kk
sZ
),(
1kkk
sxZ
)(
1
*
kk
sZ
)(
1kk
sX
).(
1kk
sX
)(
1kk
sA
k
x
),(
1kkk
sxZ
),(
1kkk
sxZ
).,(
1kkk
sxZ
k
x
)(
1kk
sA
),(
1kk
sA
k
x
)(
1kk
sA
),(
1kk
sA
),...,,(
10
n
sss
T
1
),...,(
n
xx
0
s
j
s
),(φ
1jjj
sx
.,1 n
j
x
)(
1jj
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) =
,
1j
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 ≤
.
1nj
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
)(
1nn
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
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]