Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методы оптимизации.pdf
Скачиваний:
127
Добавлен:
05.06.2015
Размер:
710.9 Кб
Скачать

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