
- •Динамическое программирование
- •Задача распределения инвестиций
- •Решение задачи распределения инвестиций с помощью таблиц.
- •Заполнение таблицы этапа 4.
- •Заполнение таблицы этапа 3 и последующих.
- •Получение оптимального решения в задаче распределения инвестиций.
- •Графическое решение задачи распределения инвестиций.
- •Задача распределения инвестиций — общий случай
- •Графическое решение задачи
- •Решение с помощью таблиц
- •Задача распределения инвестиций на компьютере.
- •Задача о загрузке(о рюкзаке или о ранце)
- •Задача о рюкзаке на компьютере.
- •Задача о надежности
- •Задача о надёжности на компьютере.
- •Задача календарного планирования трудовых ресурсов
- •Календарное планирование на компьютере
- •Задача о дилижансах
- •Управление запасами
- •Вычисление оптимального решения
- •Управление запасами на компьютере
- •Замена оборудования.
- •Замена оборудования на компьютере
- •Решение задачи о распределении инвестиций
- •Динамическое программирование
- •Полный перебор
- •Задача о загрузке
- •Динамическое программирование – вычислить C и R
- •Динамическое программирование – без вычисления C и R
- •Полный перебор
- •Решение задачи о надёжности
- •Динамическое программирование
- •Полный перебор
- •Календарное планирование трудовых ресурсов
- •Динамическое программирование
- •Полный перебор
- •Управление запасами
- •Динамическое программирование
- •Полный перебор
- •Замена оборудования
- •Динамическое программирование
- •Полный перебор
- •Список литературы

0 . |
0 . |
0 . |
0 . |
3 . |
5 . |
4 . |
3 . |
I n f |
9 . |
6 . |
I n f |
x_min |
= |
|
|
1 . |
1 . |
1 . |
1 . |
x_max |
= |
|
|
2 . |
3 . |
3 . |
2 . |
** * * * * * * *
Ответ
** * * * * * * *
f _ o p t |
= 12 |
|
|
x _ o p t |
= |
|
|
2 . |
1 . |
3 . |
2 . |
2 . |
2 . |
2 . |
1 . |
>d i a r y ( 0 )
4. Задача о загрузке(о рюкзаке или о ранце)
Задача 2 (о рюкзаке) Самолет загружается предметами n различных типов. Каждый предмет типа j дает доход cj тысяч рублей и весит aj тонн. Грузоподъемность самолета – b тонн.
Выбрать предметы, погрузка которых позволит получить максимальный доход без превышения грузоподъемности самолета.
Сначала рассмотрим задачу в общей постановке.
|
n∑ |
|
|
|
|
|
|
|
|
|
n |
|
|
|
|
|
|
|
|
max |
{j=1 |
c |
|
x |
; |
|
|
|
|
f1(y1) = x1;:::;xn |
j |
|
j } |
|
|
|
|
||
|
j=1 aj xj y1; |
|
|
|
|
||||
|
x∑ |
0 |
– целые, |
j |
2 |
1 : n |
, |
||
|
j |
|
|
|
y1 = b.
Легко вывести рекуррентные уравнения Беллмана для процедуры обратной прогонки.
max |
fcnxng ; |
fn(yn) = xn=0;1;:::;[b=an] |
|
max |
fcj xj + fj+1(yj aj xj )g ; |
fj (yj ) = xj=0;1;:::;[b=aj] |
|
|
j = n 1; : : : ; 2; 1 |
Здесь квадратные скобки в выражении [b=aj ] используются для обозначения целой части числа b=aj , стоящего в этих скобках.
Другие обозначения:
cj – доход, получаемый от перевозки одного предмета типа j;
aj – вес этого предмета,
xj – количество предметов j-го типа (управление),
yj – часть грузоподъемности самолета, выделенная для предметов j; j + 1; : : : ; n (состояние),
fj (yj ) – максимальный доход от погрузки предметов j; j + 1; : : : ; n; если в самолете выделено yj тонн под эти предметы.
Решим следующую конкретную задачу с помощью этого рекуррент-
ного уравнения. |
|
|
|
|
|
|
|
|
max |
f |
65x |
|
+ 80x |
|
+ 30x |
3g |
; |
f1(y1) = x1;x2;x3 |
|
1 |
|
2 |
|
|
2x1 + 3x2 + 1x3 y1, xj – целые, y1 = 5:
В таблицах 13 – 15 выполнены все вычисления, необходимые для получения оптимального решения.
При заданном y1 = 5 оптимальным решением является x = (2; 0; 1); а суммарная стоимость груза равна 160.
19
Этап 3. Предметы 3 типа. |
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
max |
f |
30x |
; max x |
|
= [5=1] = 5 |
|
|
|||||
|
|
|
f3(y3) = x3 |
|
|
3g |
|
|
3 |
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Оптимальное |
||
|
|
|
|
|
30x3 |
|
|
|
|
|
решение |
|
||||
|
y3 |
x3=0 |
x3=1 |
x3=2 |
x3=3 |
x3=4 |
x3=5 |
f3(y3) |
x3 |
|||||||
|
0 |
0 |
– |
– |
|
|
|
– |
|
– |
|
|
– |
0 |
|
0 |
|
1 |
0 |
30 |
– |
|
|
|
– |
|
– |
|
|
– |
30 |
|
1 |
|
2 |
0 |
30 |
60 |
|
|
|
– |
|
– |
|
|
– |
60 |
|
2 |
|
3 |
0 |
30 |
60 |
|
|
|
90 |
|
– |
|
|
– |
90 |
|
3 |
|
4 |
0 |
30 |
60 |
|
|
|
90 |
|
120 |
|
|
– |
120 |
|
4 |
|
5 |
0 |
30 |
60 |
|
|
|
90 |
|
120 |
|
|
150 |
150 |
|
5 |
|
|
|
|
|
Таблица 13: Задача о рюкзаке, этап 3 |
|
|||||||||||||||||
Этап 2. Предметы 2 и 3 типа. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
f2(y2) = |
max |
80x + f |
|
(y |
2 |
3x |
|
) ; max x |
|
= [5=3] = 1 |
|||||||||||
|
|
x2 f |
2 |
|
3 |
|
|
2 |
|
g |
|
2 |
|
|
|
|
|||||||
|
|
|
|
|
80x2 + f3(y2 3x2) |
|
|
|
|
Оптимальное |
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
решение |
|
|
||||||||||||
|
|
|
|
y2 |
x2 = 0 |
|
x2 = 1 |
|
|
|
|
f2(y2) |
x2 |
|
|
||||||||
|
|
|
|
0 |
0+ 0= 0 |
|
– |
|
|
|
|
|
|
|
0 |
|
|
0 |
|
|
|||
|
|
|
|
1 |
0+ 30=30 |
|
– |
|
|
|
|
|
|
|
30 |
|
|
0 |
|
|
|||
|
|
|
|
2 |
0+ 60=60 |
|
– |
|
|
|
|
|
|
|
60 |
|
|
0 |
|
|
|||
|
|
|
|
3 |
0+ 90=90 |
|
80+0 = 80 |
|
|
|
90 |
|
|
0 |
|
|
|||||||
|
|
|
|
4 |
0+120=120 |
|
80+30=110 |
|
|
120 |
|
|
0 |
|
|
||||||||
|
|
|
|
5 |
0+150=150 |
|
80+60=140 |
|
150 |
|
|
0 |
|
|
|||||||||
|
|
|
|
|
Таблица 14: Задача о рюкзаке, этап 2 |
|
|||||||||||||||||
Этап 1. Предметы 1, 2 и 3 типа. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
f1(y1) = |
max |
65x + f |
|
(y |
1 |
2x |
|
) ; max x |
|
= [5=2] = 2 |
|||||||||||
|
|
x1 f |
1 |
|
2 |
|
|
1 |
|
g |
|
1 |
|
|
|
|
|||||||
|
|
|
|
|
65x1 + f2(y1 2x1) |
|
|
|
|
|
|
Оптимальное |
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
решение |
|
|||||||||||
|
y1 |
|
x1 = 0 |
|
x1 = 1 |
|
|
|
|
x1 = 2 |
|
|
f1(y1) |
x1 |
|||||||||
|
0 |
|
0+ 0= 0 |
|
– |
|
|
|
|
– |
|
|
|
|
|
|
0 |
|
0 |
||||
|
1 |
|
0+ 30= 30 |
|
– |
|
|
|
|
– |
|
|
|
|
|
|
30 |
|
0 |
||||
|
2 |
|
0+ 60= 60 |
|
65+ 0= 65 |
|
|
– |
|
|
|
|
|
|
65 |
|
1 |
||||||
|
3 |
|
0+ 90= 90 |
|
65+30= 95 |
|
– |
|
|
|
|
|
|
95 |
|
1 |
|||||||
|
4 |
|
0+120=120 |
|
65+60=125 |
|
130+ 0=130 |
|
130 |
|
2 |
||||||||||||
|
5 |
|
0+150=150 |
|
65+90=155 |
|
130+30=160 |
|
160 |
|
2 |
Таблица 15: Задача о рюкзаке, этап 1
Заметим, что на этапе 1 достаточно построить только одну строку таблицы для значения y1 = 5: Однако, располагая полной таблицей, можно провести анализ чувствительности решения, то есть посмотреть уменьшение целевой функции при уменьшении грузоподъемности самолета. Вычислительная схема динамического программирования автоматически обеспечивает проведение анализа модели на чувствительность.
Легко решить задачу о рюкзаке и графически. Ничего нового здесь нет, поэтому предлагается сделать это самостоятельно.
4.1. Задача о рюкзаке на компьютере.
Для решения задачи о рюкзаке можно пойти по лёгкому пути, а именно, можно свести задачу к задаче о распределении инвестиций. С точки зрения
20
математика, задача о рюкзаке — это частный случай задачи об инвестициях с линейной целевой функцией и линейным ограничением. Другими словами, надо построить матрицы C и R, которые фигурировали в предыдущей задаче. В программе это сделано даже двумя способами. Первый из них простой, правда, медленный и громоздкий, а второй, в стиле SciLab – очень быстрый и компактный.
|
/ / |
|
f u n c t i o n RiukDiCR ( c , |
a , |
b ) |
|
|
|
||||||||
|
/ / |
|
Решение задачи о загрузке самолета методом ДП . |
|||||||||||||
|
/ / |
==== 30 марта 2011 |
года Визгунов===== НП..====== |
|||||||||||||
|
c l c , |
c l e a r , |
mode ( 0 ) , |
l i n e s ( 0 ) |
|
|
|
|||||||||
|
c |
= |
[ |
65 |
|
80 |
30 |
] ; |
/ / |
доход от |
перевозки предмета |
|||||
|
a |
= |
[ |
|
2 |
|
3 |
1 |
] ; |
/ / |
вес |
этого предмета |
|
|||
|
b |
= |
5 ; |
y1 |
|
= |
b ; |
|
/ / |
грузоподъемность самолета |
||||||
|
n |
|
= l e n g t h ( a ) ; |
|
|
|
|
/ / |
s 9 Кол . |
|
||||||
|
s 9 |
|
= |
y1 |
+ |
|
1 ; |
|
|
|
|
|
состояний |
|||
|
u9 |
|
= |
1 |
+ |
f l o o r ( b |
/ min ( a ) ) ; |
/ / |
u9 |
Кол . |
управлений |
|||||
|
/ / |
|
1 ) |
Очевидный способ |
вычисления |
С и |
R |
|
||||||||
|
C |
= %inf * o n e s ( u9 , |
n ) ; |
|
|
|
|
|
||||||||
|
R = C ; |
|
|
|
|
|
/ / |
( u 1) |
|
|
|
|||||
|
f o r |
u |
= |
1 |
|
: |
u9 |
|
это количество предметов |
|||||||
|
|
|
f o r |
j |
= |
1 |
: n |
|
|
|
|
/ / |
j номер |
|
||
|
|
|
|
temp |
= a ( j ) |
* ( u |
1); |
предмета |
||||||||
|
|
|
|
i f |
temp <= b |
/ / |
если предметы помещаются в самолет |
|||||||||
|
|
|
|
|
C ( u , j ) = temp ; |
|
|
|
|
|
||||||
|
|
|
|
|
R ( u , j ) = c ( j ) * ( u 1); |
|
|
|||||||||
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
|
|
|
|
end |
end |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
C ; |
R ; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/ / |
|
2 ) Вычисления С и R |
в |
духе |
S c i L a b |
|
|
||||||||
|
C = ( 0 : u9 1) ’ * a |
|
|
|
|
|
|
|
||||||||
|
I = f i n d ( C > y1 ) |
|
|
|
|
|
|
|
|
|||||||
|
C ( I ) |
= %inf |
|
|
|
|
|
|
|
|
|
|||||
|
R = ( 0 : u9 1) ’ * c ; |
|
|
|
|
|
|
|
||||||||
|
R ( I ) |
= %inf |
|
|
|
|
|
|
|
|
|
|||||
|
/ / |
|
Теперь почти задача о распределении инвестиций |
|||||||||||||
|
X |
= %inf * o n e s ( s9 , |
n + 1 ) ; |
|
|
|
|
|||||||||
|
F |
= X ; |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
F ( : , n + 1 ) = z e r o s ( s9 , 1 ) ; |
|
|
|
|
|||||||||||
|
f o r j = n : 1 : 1 |
|
|
|
|
|
|
|
||||||||
|
|
|
Fsu |
= %inf * |
o n e s ( s9 , |
u9 ) ; |
|
|
|
|||||||
|
|
|
f o r s = 1 : s 9 |
|
|
|
|
/ / Y j = s 1 |
|
|||||||
|
|
|
|
f o r u = 1 : u9 |
|
|
|
/ / X j = u |
|
|||||||
|
|
|
|
|
|
s s = s C ( u , j ) ; |
|
|
|
|
|
|||||
|
|
|
|
|
|
i f 1 <= s s & s s <= s 9 |
|
|
|
|||||||
|
|
|
|
|
|
end |
Fsu ( s , u ) = R ( u , j ) + F ( s s , j + 1 ) ; |
|||||||||
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
end |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[ f s , |
i n d e x ] = |
max ( Fsu , |
’ c ’ ) ; |
|
|
||||||||
|
|
|
F ( : , j ) |
|
= |
f s ; |
|
|
|
|
|
|
|
|
||
|
|
X ( : , j ) = i n d e x 1 ; |
|
|
|
|
|
|
||||||||
|
|
|
/ / |
Печать |
шапки |
и таблицы |
|
|
|
|
||||||
|
|
|
/ / |
====================== |
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
21

|
u7 = |
1 + |
f l o o r ( b / |
min ( a ( j ) ) ) ; |
|
|
||
|
l i n e 5 0 = p a r t ( ’ ’ , o n e s ( 1 , 2 2 ) ) + ’ | ’ + . . . |
|||||||
|
p a r t ( ’ ’ , o n e s ( 1 , 3 + 6 * u7 ) ) ; |
|
|
|||||
|
/ / l i n e 5 0 = c o d e 2 s t r ( s t r 2 c o d e ( ’ ’ ) * o n e s ( 1 , 5 8 ) ) ; |
|||||||
|
w r i t e ( 6 , ’ ’ ) |
|
|
|
|
|
||
|
w r i t e ( 6 , |
’Этап ’ + |
s t r i n g ( j ) ) |
|
|
|||
|
w r i t e ( 6 , |
l i n e 5 0 ) |
/ / |
напечатать |
50 минусов |
|||
|
w r i t e ( 6 , |
’ Yj F j ( Yj ) Xj * | Fsu ’ ) ; |
||||||
|
w r i t e ( 6 , l i n e 5 0 ) |
|
|
|
|
|||
|
Temp |
= [ ( 0 |
: y1 ) ’ , |
f s , |
( i n d e x |
1 ) , |
Fsu ] ; |
|
|
d i s p ( Temp ( : , 1 |
: 3 + u7 ) ) |
|
|
||||
|
w r i t e ( 6 , l i n e 5 0 ) |
|
|
|
|
|||
end |
|
|
|
|
|
|
|
|
/ / |
Вычислить |
и напечать |
ответ |
|
|
|
||
/ / |
========================== |
|
|
|||||
x _ o p t = z e r o s ( 1 , n ) ; |
|
|
|
|
||||
s = s 9 ; |
|
|
|
|
|
|
|
|
f o r |
j = |
1 : |
n |
|
|
|
|
|
|
x _ o p t ( j ) = X( s , j ) ; |
|
|
|
||||
|
s = s a ( j ) * x _ o p t ( j ) ; |
|
|
|||||
end |
|
|
|
|
|
|
|
|
c , |
a , x _ o p t |
|
|
|
|
|
|
|
w r i t e ( 6 , ’ f _ o p t = ’ + s t r i n g ( F ( s9 , 1 ) ) + . . . |
||||||||
|
|
’ y1 = ’ |
+ s t r i n g ( y1 ) ) |
|
|
|||
e x e c ( ’ RiukDiCR . s c e ’ , |
0 ) |
|
|
|
||||
C |
= |
|
|
|
|
|
|
|
|
0 . |
|
0 . |
0 . |
|
|
|
|
|
2 . |
|
3 . |
1 . |
|
|
|
|
|
4 . |
|
6 . |
2 . |
|
|
|
|
|
6 . |
|
9 . |
3 . |
|
|
|
|
|
8 . |
1 2 . |
4 . |
|
|
|
|
|
|
1 0 . |
1 5 . |
5 . |
|
|
|
|
|
I |
= |
|
|
|
|
|
|
|
|
4 . |
|
5 . |
6 . |
9 . |
1 0 . |
1 1 . |
1 2 . |
C |
= |
|
|
|
|
|
|
|
|
0 . |
|
0 . |
0 . |
|
|
|
|
|
2 . |
|
3 . |
1 . |
|
|
|
|
|
4 . I n f |
2 . |
|
|
|
|
||
|
I n f |
I n f |
3 . |
|
|
|
|
|
|
I n f |
I n f |
4 . |
|
|
|
|
|
|
I n f |
I n f |
5 . |
|
|
|
|
|
R |
= |
|
|
|
|
|
|
|
|
0 . |
|
0 . |
0 . |
|
|
|
|
|
6 5 . |
|
8 0 . |
3 0 . |
|
|
|
|
|
1 3 0 . I n f |
6 0 . |
|
|
|
|
||
|
I n f |
I n f |
9 0 . |
|
|
|
|
|
|
I n f |
I n f |
1 2 0 . |
|
|
|
|
|
|
I n f |
I n f |
1 5 0 . |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Этап 3
|
Yj F j ( Yj ) Xj * | Fsu
|
0 . |
0 . |
0 . |
0 . |
I n f |
I n f |
I n f |
I n f |
I n f |
1 . |
3 0 . |
1 . |
0 . |
3 0 . |
I n f |
I n f |
I n f |
I n f |
2 . |
6 0 . |
2 . |
0 . |
3 0 . |
6 0 . I n f |
I n f |
I n f |
|
3 . |
9 0 . |
3 . |
0 . |
3 0 . |
6 0 . |
9 0 . I n f |
I n f |
|
4 . |
1 2 0 . |
4 . |
0 . |
3 0 . |
6 0 . |
9 0 . |
1 2 0 . I n f |
22

5 . 1 5 0 . 5 . 0 . 3 0 . 6 0 . 9 0 . 1 2 0 . 1 5 0 .
|
Этап |
2 |
|
|
|
| |
||||
Yj |
F j ( Yj ) |
Xj * | |
Fsu |
|
| |
||||
0 . |
0 . |
0 . |
0 . |
I n f |
1 . |
3 0 . |
0 . |
3 0 . |
I n f |
2 . |
6 0 . |
0 . |
6 0 . |
I n f |
3 . |
9 0 . |
0 . |
9 0 . |
8 0 . |
4 . |
1 2 0 . |
0 . |
1 2 0 . |
1 1 0 . |
5 . |
1 5 0 . |
0 . |
1 5 0 . |
1 4 0 . |
|
Этап 1
|
Yj F j ( Yj ) Xj * | Fsu
|
0 . |
0 . |
0 . |
0 . |
I n f |
I n f |
1 . |
3 0 . |
0 . |
3 0 . |
I n f |
I n f |
2 . |
6 5 . |
1 . |
6 0 . |
6 5 . |
I n f |
3 . |
9 5 . |
1 . |
9 0 . |
9 5 . |
I n f |
4 . |
1 3 0 . |
2 . |
1 2 0 . |
1 2 5 . |
1 3 0 . |
5 . |
1 6 0 . |
2 . |
1 5 0 . |
1 5 5 . |
1 6 0 . |
|
c |
= |
|
|
|
6 5 . |
8 0 . |
3 0 . |
a |
= |
|
|
|
2 . |
3 . |
1 . |
x _ o p t |
= |
|
|
|
2 . |
0 . |
1 . |
f _ o p t = 160 y1 = 5
Но лучше все-таки обойтись без вычисления матриц C и R, это позволяет сделать программу динамического программирования более простой и компактной, к тому же такая программа позволит решать задачи большего размера.
/ / f u n c t i o n R i u k D i ( c , a , b )
/ / |
Программа |
R i u k D i . s c e . Нет вычислений С |
и R ! ! ! |
/ / |
Решение задачи о загрузке самолета методом ДП . |
||
/ / |
===== 30 |
марта 2011 года ===== Визгунов |
НП . |
|
|
|
|
c l c , |
c l e a r , |
l i n e s ( 0 , |
1 0 0 ) , |
mode ( 0 ) |
|
|
||||||
/ / доходы = |
|
|
|
|
|
|
|
|
|
|||
c |
= [ |
65 |
80 |
30 |
] ; |
|
|
|
|
|
|
|
/ / вес |
предметов = |
|
|
|
|
|
|
|
||||
a |
= [ |
|
2 |
3 |
1 |
] ; |
|
|
|
|
|
|
/ / грузоподъемность |
самолета = |
|
|
|
|
|
||||||
b |
= 5 ; |
y1 |
= |
b ; |
|
|
|
|
|
|
|
|
n |
= l e n g t h ( a ) ; |
|
|
|
/ / |
s 9 |
Кол . |
|
||||
s 9 |
= |
y1 |
+ |
1 ; |
|
|
|
|
состояний |
|||
u9 |
= |
1 |
+ |
f l o o r ( b |
/ min ( a ) ) ; |
/ / |
u9 |
Кол . |
управлений |
|||
X |
= %inf |
* |
o n e s ( s9 , |
n + 1 ) ; |
|
|
|
|
||||
F |
= X ; |
|
|
|
|
|
|
|
|
|
|
|
F ( : , n + 1 ) = z e r o s ( s9 , 1 ) ; |
|
|
|
|
||||||||
f o r j = n : 1 : 1 |
|
|
|
|
|
|
||||||
|
Fsu |
= %inf * |
o n e s ( s9 , |
u9 ) ; |
/ / Y j = s 1 |
|||||||
|
f o r s = 1 : s 9 |
|
|
|
||||||||
|
|
f o r u = 1 : u9 |
|
|
|
/ / X j = u |
||||||
|
|
|
|
s s |
= s a ( j ) * |
( u |
1); |
/ / |
C ( u , j ) было |
i f 1 <= s s & s s <= s 9
23

Fsu ( s , u ) = c ( j ) * ( u 1 ) + F ( s s , j + 1 ) ;
|
|
|
end |
|
|
|
|
|
|
|
end |
end |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[ f s , |
i n d e x ] = |
max ( Fsu , |
’ c ’ ) ; |
|
||||
|
F ( : , j ) = |
f s ; |
|
|
|
|
|
||
|
X ( : , j ) = i n d e x 1 ; |
|
|
||||||
|
/ / |
Печать |
шапки и |
таблицы |
|
|
|||
|
/ / |
====================== |
|
||||||
|
u7 |
= |
1 + |
f l o o r ( b |
/ |
min ( a ( j ) ) ) ; |
|
||
|
l i n e 5 0 = p a r t ( ’ ’ , o n e s ( 1 , 2 2 ) ) + ’ | ’ + . . . |
||||||||
|
p a r t ( ’ ’ , o n e s ( 1 , 3 + 6 * u7 ) ) ; |
|
|||||||
|
/ / l i n e 5 0 = c o d e 2 s t r ( s t r 2 c o d e ( ’ ’ ) * o n e s ( 1 , 5 8 ) ) ; |
||||||||
|
w r i t e ( 6 , ’ ’ ) |
|
|
|
|
|
|||
|
w r i t e ( 6 , |
’Этап ’ |
+ |
s t r i n g ( j ) ) |
|
||||
|
w r i t e ( 6 , |
l i n e 5 0 ) |
|
/ / |
напечатать 50 |
минусов |
|||
|
w r i t e ( 6 , |
’ Yj F j ( Yj ) Xj * | Fsu ’ ) ; |
|||||||
|
w r i t e ( 6 , l i n e 5 0 ) |
|
|
|
|
||||
|
Temp |
= [ ( 0 |
: y1 ) ’ , |
f s , |
i n d e x 1 , |
Fsu ] ; |
|||
|
d i s p ( Temp ( : , |
1 : |
3+ |
u7 ) ) |
|
|
|||
end |
w r i t e ( 6 , l i n e 5 0 ) |
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
/ / |
Вычислить |
и напечать |
ответ |
|
|
||||
/ / |
========================== |
|
|||||||
x _ o p t = z e r o s ( 1 , n ) ; |
|
|
|
||||||
s = s 9 ; |
|
|
|
|
|
|
|
||
f o r |
j |
= |
1 : |
n |
|
|
|
|
|
|
x _ o p t ( j ) = X( s , j ) ; |
|
|
||||||
end |
s = s a ( j ) * x _ o p t ( j ) ; |
|
|||||||
|
|
|
|
|
|
|
|
|
|
c , |
a , |
x _ o p t |
|
|
|
|
|
|
|
w r i t e ( 6 , ’ f _ o p t = ’ + s t r i n g ( F ( s9 , 1 ) ) + . . . |
|||||||||
|
|
|
’ y1= ’ |
|
+ s t r i n g ( y1 ) ) |
|
|||
/ / e n d f u n c t i o n |
|
|
|
|
|
||||
e x e c ( ’ R i u k D i . s c e ’ , 0 ) |
|
|
|
||||||
Этап |
3 |
|
|
|
|
|
|
|
|
Yj F j ( Yj ) Xj * | Fsu
|
0 . |
0 . |
0 . |
0 . |
I n f |
I n f |
I n f |
I n f |
I n f |
1 . |
3 0 . |
1 . |
0 . |
3 0 . |
I n f |
I n f |
I n f |
I n f |
2 . |
6 0 . |
2 . |
0 . |
3 0 . |
6 0 . |
I n f |
I n f |
I n f |
3 . |
9 0 . |
3 . |
0 . |
3 0 . |
6 0 . |
9 0 . |
I n f |
I n f |
4 . |
1 2 0 . |
4 . |
0 . |
3 0 . |
6 0 . |
9 0 . |
1 2 0 . I n f |
|
5 . |
1 5 0 . |
5 . |
0 . |
3 0 . |
6 0 . |
9 0 . |
1 2 0 . |
1 5 0 . |
|
Этап 2
|
Yj F j ( Yj ) Xj * | s u
|
0 . |
0 . |
0 . |
0 . |
I n f |
1 . |
3 0 . |
0 . |
3 0 . |
I n f |
2 . |
6 0 . |
0 . |
6 0 . |
I n f |
3 . |
9 0 . |
0 . |
9 0 . |
8 0 . |
4 . |
1 2 0 . |
0 . |
1 2 0 . |
1 1 0 . |
5 . |
1 5 0 . |
0 . |
1 5 0 . |
1 4 0 . |
24

|
Этап 1
|
Yj |
F j ( Yj ) Xj * | |
Fsu |
|
0 . |
0 . |
0 . |
0 . |
I n f |
I n f |
1 . |
3 0 . |
0 . |
3 0 . |
I n f |
I n f |
2 . |
6 5 . |
1 . |
6 0 . |
6 5 . |
I n f |
3 . |
9 5 . |
1 . |
9 0 . |
9 5 . |
I n f |
4 . |
1 3 0 . |
2 . |
1 2 0 . |
1 2 5 . |
1 3 0 . |
5 . |
1 6 0 . |
2 . |
1 5 0 . |
1 5 5 . |
1 6 0 . |
|
c |
= |
|
|
|
6 5 . |
8 0 . |
3 0 . |
a |
= |
|
|
|
2 . |
3 . |
1 . |
x _ o p t |
= |
|
|
|
2 . |
0 . |
1 . |
f _ o p t = 160 y1 = 5
В распечатке представлена также программа полного перебора. Эта программа решает всё ту же задачу. Убеждаемся, что она имеет одно оптимальное решение. Все промежуточные шаги поиска этого решения распечатаны, чтобы алгоритм был более прозрачен.
>w r i t e ( 6 , m g e t l ( ’ R i u k P e . s c e ’ ) )
/ / f u n c t i o n R i u k P e ( c , a , b )
/ / |
|
программа |
R j u k P e . s c e |
Лабораторная номер 3 |
||||
/ / |
|
30 |
марта |
2011 |
года ===== Визгунов НП . |
|||
c l c , |
c l e a r , |
|
l i n e s ( 0 ) , |
mode ( 0 ) |
||||
c |
= |
[ |
65 |
80 |
30 |
] |
|
|
a |
= |
[ |
2 |
|
3 |
1 |
] |
|
b |
= |
5 , |
y1 |
= |
b ; |
|
|
|
|
|
|
|
|
|
|
|
|
n= l e n g t h ( a ) ;
s 9 = y1 + 1 ; |
|
|
|
|
/ / |
s 9 |
Кол . |
состояний |
|||||
u9 |
= 1 |
+ |
f l o o r ( b |
/ |
min ( a ) ) ; |
|
|
|
|
||||
/ / |
u9 |
= |
1 |
+ |
f l o o r ( max ( b |
. / |
a ) ) ; |
|
|
||||
x_min = z e r o s ( 1 , n ) ; |
|
/ / |
[ 0 |
0 |
0 ] |
||||||||
x = x_min ; |
|
|
|
|
|
/ / |
[ 2 |
1 |
5 |
] |
|||
x_max |
= |
f l o o r ( b |
. / |
a ) ; |
|||||||||
f _ o p t |
= %inf ; |
|
|
|
|
|
|
|
|
||||
j |
= n ; |
%t |
|
|
|
|
|
|
|
|
|
|
|
w h i l e |
|
|
|
|
|
|
|
|
|
|
|
||
|
i f |
x ( j ) |
<= x_max ( j ) |
|
|
|
|
|
|||||
|
|
i f |
a |
* |
x ’ |
<= |
b |
/ / если |
предметы |
войдут в самолет |
|||
|
|
|
f |
= |
c * |
x ’ ; |
|
|
|
|
|
|
|
|
|
|
i f |
f _ o p t |
< |
f |
|
|
|
|
|
||
|
|
|
|
|
d i s p ( ’ f _ o p t < f <<<<<<<<<<<<< ’ ) |
||||||||
|
|
|
|
|
f _ o p t |
= |
f |
|
|
|
|
|
|
|
|
|
|
|
x _ o p t |
= |
x |
|
|
|
|
|
|
|
|
|
|
|
/ / d i s p ( ’ |
’ ) |
|
|
|
|
|
||
|
|
|
e l s e i f |
f == f _ o p t |
|
|
|
|
|||||
|
|
|
|
|
d i s p ( ’ f _ o p t == f ============= ’ ) |
||||||||
|
|
|
|
|
f _ o p t |
|
|
|
|
|
|
|
|
|
|
|
end |
x _ o p t = [ x _ o p t ; x ] |
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
end |
|
|
|
|
|
|
|
|
|
|
|
|
|
j |
= |
n ; |
|
|
|
|
|
|
|
|
|
|
e l s e |
|
/ / x ( j ) |
> |
x_max ( j ) |
|
|
|
|||||
|
|
x ( j ) = x_min ( j ) ; |
|
|
|
|
|
25

j |
= |
j 1 ; |
/ / |
закончить бесконечный цикл |
|
i f |
j <= 1 e 5 |
|
end |
break |
|
|
||
end |
/ / |
i f |
x ( j ) = x ( j ) + 1 ; |
||
end / / |
w h i l e %t |
|
|
|
|
w r i t e ( 6 |
, ’ ===== ’ ) |
w r i t e ( 6 |
, ’ ответ ’ ) |
w r i t e ( 6 |
, ’ ===== ’ ) |
x _ o p t , f _ o p t
/ / e n d f u n c t i o n
>e x e c ( ’ R i u k P e . s c e ’ , 0 )
c |
= |
|
|
|
|
|
6 5 . |
|
8 0 . |
3 0 . |
|
a |
= |
|
|
|
|
|
2 . |
|
|
3 . |
1 . |
b |
= |
|
|
|
|
|
5 . |
|
|
|
|
f _ o p t |
< |
f |
<<<<<<<<<<<<< |
||
f _ o p t |
|
= |
|
|
|
|
0 . |
|
|
|
|
x _ o p t |
|
= |
|
|
|
|
0 . |
|
|
0 . |
0 . |
f _ o p t |
< |
f |
<<<<<<<<<<<<< |
||
f _ o p t |
|
= |
|
|
|
|
3 0 . |
|
|
|
|
x _ o p t |
|
= |
|
|
|
|
0 . |
|
|
0 . |
1 . |
f _ o p t |
< |
f |
<<<<<<<<<<<<< |
||
f _ o p t |
|
= |
|
|
|
|
6 0 . |
|
|
|
|
x _ o p t |
|
= |
|
|
|
|
0 . |
|
|
0 . |
2 . |
f _ o p t |
< |
f |
<<<<<<<<<<<<< |
||
f _ o p t |
|
= |
|
|
|
|
9 0 . |
|
|
|
|
x _ o p t |
|
= |
|
|
|
|
0 . |
|
|
0 . |
3 . |
f _ o p t |
< |
f |
<<<<<<<<<<<<< |
||
f _ o p t |
|
= |
|
|
|
|
1 2 0 . |
|
|
|
|
x _ o p t |
|
= |
|
|
|
|
0 . |
|
|
0 . |
4 . |
f _ o p t |
< |
f |
<<<<<<<<<<<<< |
||
f _ o p t |
|
= |
|
|
|
|
1 5 0 . |
|
|
|
|
x _ o p t |
|
= |
|
|
|
|
0 . |
|
|
0 . |
5 . |
f _ o p t |
< |
f |
<<<<<<<<<<<<< |
||
f _ o p t |
|
= |
|
|
|
|
1 5 5 . |
|
|
|
|
x _ o p t |
|
= |
|
|
|
|
1 . |
|
|
0 . |
3 . |
f _ o p t |
< |
f |
<<<<<<<<<<<<< |
||
f _ o p t |
|
= |
|
|
|
|
1 6 0 . |
|
|
|
|
x _ o p t |
|
= |
|
|
|
|
2 . |
|
|
0 . |
1 . |
===== |
|
|
|
|
|
ответ |
|
|
|
|
26