Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
moya_kursovaya_p.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
130.6 Кб
Скачать

8. Текст программы.

Решение задачи методом динамического программирования на алгоритмическом языке PASCAL.ABC.

Program dp;

const

h=3;

M=9;

var

x:array[1..1000] of integer;

k:array[0..1000] of integer;

p,w:array[1..1000] of real;

F:array[0..1000,0..1000] of real;

Ps:array[0..1000,0..1000] of integer;

j,i,N,g:integer;

T,R:real;

Begin

p[1]:=0.4; p[2]:=0.2; p[3]:=0.3;

w[1]:=0.5; w[2]:=0.2; w[3]:=0.3;

for i:=1 to h do

begin

for j:=0 to M do

F[i,j]:=0;

end;

j:=1;

repeat

N:=0;

repeat

T:=-1000000;

x[j]:=0;

repeat

begin

R:=p[j]*(1-power(1-w[j],x[j]))+F[j-1,N-x[j]];

if R>T then begin

T:=R;

g:=x[j];

end;

x[j]:=x[j]+1;

end;

until x[j]>N;

F[j,N]:=T;

ps[j,N]:=g;

N:=N+1;

until N>M;

j:=j+1;

until j>h;

writeln (' N',' |','F1(x1) ','|','Ps1(x1)','|','F2(x2) ','|','Ps2(x2)','|','F3(x3) ','|','Ps3(x3)','|');

for j:=0 to M do

begin

write (j:2,' |');

for i:=1 to h do

begin

write (F[i,j]:7:5,'|');

write (ps[i,j]:4,' |');

end;

writeln;

end;

j:=h;

k[j]:=M;

repeat

j:=j-1;

k[j]:=k[j+1]-Ps[j+1,k[j+1]];

until j=0 ;

T:=0;

for j:=1 to h do

if T<F[j,k[j]] then T:=F[j,k[j]];

writeln('F(x1опт,x2опт,x3опт)=',T:7:5);

for j:=1 to h do

write('x',j,'опт= ',Ps[j,k[j]],'; ');

end.

9. Контрольный расчет

Исходные данные:

0.5

0.4

0.2

0.3

0.3

0.3

Все промежуточные вычисления по предыдущему алгоритму сведены в таблицу 1: Табл.1

N

F1(x1)

Ps1(x1)

F2(x2)

Ps2(x2)

F3(x3)

Ps3(x3)

0

0.00000

0

0.00000

0

0.00000

0

1

0.20000

1

0.20000

0

0.20000

0

2

0.32000

2

0.32000

0

0.32000

0

3

0.39200

3

0.39200

0

0.41000

1

4

0.43520

0.45200

1

0.48200

1

5

0.46112

5

0.49520

1

0.54500

2

6

0.47667

6

0.53720

0.60500

2

7

0.48600

7

0.56660

3

0.64910

3

8

0.49160

8

0.59252

3

0.69230

3

9

0.49496

9

0.61310

4

0.73430

Хопт = {4;2;3}.

Математическое ожидание равно 0.7343.

10. Применение программы для исходной задачи. Вариант 2821

Исходные данные для данного варианта:

N = 12

J = 3

0.291

0.496

0.192

0.297

0.893

0.198

Ниже приведена таблица 2, на которой показаны все промежуточные вычисления программы для поставленной задачи.

Таблица результатов: Табл.2

N

F1(x1)

Ps1(x1)

F2(x2)

Ps2(x2)

F3(x3)

Ps3(x3)

0

0.00000

0

0.00000

0

0.00000

0

1

0.41818

1

0.58548

1

0.58548

0

2

0.62100

2

1.00366

1

1.00366

0

3

0.71936

1.20648

1

1.20648

0

4

0.76707

4

1.37392

2

1.37392

0

5

0.79021

5

1.47229

1.48221

1

6

0.80143

6

1.52018

3

1.58058

1

7

0.80687

7

1.56789

3

1.67598

2

8

0.80951

8

1.59103

3

1.76003

3

9

0.81079

9

1.60472

4

1.83408

4

10

0.81142

10

1.61595

4

1.89932

5

11

0.81172

11

1.62139

4

1.95679

6

12

0.81186

12

1.62531

5

2.00743

Хопт = {3;2;7}.

Математическое ожидание равно 2.00743.

В таблице 3 показаны результаты вычислений, когда .

Исходные данные:

0.812

0.715

0.82

0.714

0.91

0.119

Таблица результатов: Табл.3

N

F1(x1)

Ps1(x1)

F2(x2)

Ps2(x2)

F3(x3)

Ps3(x3)

0

0.00000

0

0.00000

0

0.00000

0

1

0.58058

1

0.58548

1

0.58548

0

2

0.74605

1.16606

1

1.16606

0

3

0.79320

3

1.33351

2

1.33351

0

4

0.80664

4

1.49897

2

1.49897

0

5

0.81047

5

1.54686

3

1.60726

1

6

0.81156

6

1.59402

1.70267

2

7

0.81188

7

1.60772

4

1.78672

3

8

0.81196

8

1.62116

4

1.86077

4

9

0.81199

9

1.62507

5

1.92600

5

10

0.81200

10

1.62890

5

1.98348

6

11

0.81200

11

1.63002

6

2.03411

7

12

0.81200

12

1.63112

6

2.08200

Хопт = {2;3;7}.

Математическое ожидание равно 2.08200.

В таблице 4 показаны результаты вычислений, когда .

Исходные данные:

0.812

0.915

0.82

0.714

0.91

0.119

Таблица результатов: Табл.4

N

F1(x1)

Ps1(x1)

F2(x2)

Ps2(x2)

F3(x3)

Ps3(x3)

0

0.00000

0

0.00000

0

0.00000

0

1

0.74298

1

0.74298

0

0.74298

0

2

0.80613

1.32846

1

1.32846

0

3

0.81150

3

1.49591

2

1.49591

0

4

0.81196

4

1.55906

2

1.60420

1

5

0.81200

5

1.60695

1.69960

2

6

0.81200

6

1.62065

4

1.78365

3

7

0.81200

7

1.62602

4

1.85770

4

8

0.81200

8

1.62993

5

1.92294

5

9

0.81200

9

1.63105

6

1.98609

5

10

0.81200

10

1.63151

6

2.04356

6

11

0.81200

11

1.63183

7

2.09420

7

12

0.81200

12

1.63192

8

2.14209

Хопт = {2;3;7}.

Математическое ожидание равно 2.14209.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]