3.3 動的計画法の応用     目次(第3章)へ

3.3.1 作業人員配置計画への応用

 次の表のように,5人の作業員を4つの収穫作業に配分するときの最適化を考えてみよう.ただし,表中の数字は,ある作業に作業員を配分したときのその作業の利益(単位:万円)を示す.

作業員

収穫作業

J1

J2

J3

J4

1

2

3

4

5

20

40

60

60

50

10

20

30

50

70

30

40

50

70

80

20

30

40

50

60

 全作業員5人を4つの作業に配分する方法は,全部で56通りあるので,各々全部計算して最大値を見いだすことはできる.これは, "brute force" 法と呼ばれる.

 ●ソフトウェア DP2_e_80.exe

 この問題に動的計画法を適用して,作業を段階(stages),その作業に配分する作業員を状態(states)とみなし後退法を適用すると, 次表は段階4(作業4)について,各1〜5人の作業員を配分したときの利益を示し,その次の表は段階3について示す.

 段階 4

 

次の状態

最大

最適

状態

0

1

2

3

4

5

利益

コース

1

2

3

4

5

20

30

40

50

60

         

20

30

40

50

60

0

0

0

0

0

段階3

 

次の状態

最大

最適

状態

0

1/20

2/30

3/40

4/50

5/60

利益

コース

1

2

3

4

5

30

40

50

70

80

20

30+20=50

40+20=60

50+20=70

70+20=90

30

30+30=60

40+30=70

50+30=80

40

30+40=70

40+40=80

50

30+50=80

60

30

50

60

70

90

0

1

1,2

0,1,2,3

1

段階2

 

次の状態

最大

最適

状態

0

1/30

2/50

3/60

4/70

5/90

利益

コース

1

2

3

4

5

10

20

30

50

70

30

10+30=40

20+30=50

30+30=60

50+30=80

50

10+50=60

20+50=70

30+50=80

60

10+60=70

20+60=80

70

10+70=80

90

30

50

60

70

90

1

2

2,3

2,3,4

5

段階1

 

次の状態

最大

最適

状態

0

1/30

2/50

3/60

4/70

5/90

利益

コース

1

2

3

4

5

20

40

60

60

50

30

20+30=50

40+30=70

60+30=90

60+30=90

50

20+50=70

40+50=90

60+50=110

60

20+60=80

40+60=100

70

20+70=90

90

30

50

70

90

110

1

1,2

1,2

1,2

2

 

従って,最大利益は110万円で,作業員の配置は[3,0,1,1]である.

また,数式解法では以下のとおりである.

なお,RJのあとの数字は,当該作業番号と各々配分全作業員を示す.

RJ41=20,  RJ42=30,  RJ43=40,  RJ44=50,  RJ45=60

 

RJ31=max(J31, RJ41) =max(30, 20)=30

RJ32=max(J32, J31+RJ41, J30+RJ42) =max(40, 30+20, 0+30)=50

RJ33=max(J33, J32+RJ41, J31+RJ42, J30+RJ43) =max(50, 40+20, 30+30, 0+40)=60

RJ34=max(J34, J33+RJ41, J32+RJ42, J31+RJ43, J30+RJ44)

=max(70, 50+20, 40+30, 30+40, 0+50)=70

RJ35=max(J35, J34+RJ41, J33+RJ42, J32+RJ43, J31+RJ44, J30+RJ45)

=max(80, 70+20, 50+30, 40+40, 30+50, 0+60)=90

 

RJ21=max(J21, RJ31) =max(10, 30)=30

RJ22=max(J22, J21+RJ31, J20+RJ32 =max(20,10+30,0+50)=50

RJ23=max(J23, J22+RJ31, J21+RJ32, J20+RJ33 =max(30, 20+30, 10+50, 0+RJ33)=60

RJ24=max(J24, J23+RJ31, J22+RJ32, J21+RJ33, J20+RJ34)

=max(50, 30+30, 20+50, 10+60, 0+70)=70

RJ25=max(J25, J24+RJ31, J23+RJ32, J22+RJ33, J21+RJ34 ,J20+RJ35)

=max(70, 50+30, 30+50, 20+60, 10+70, 0+90)=90

 

RJ11=max(J11, RJ21) =max(20, 30)=30

RJ12=max(J12, J11+RJ21, J10+RJ22) =max(40, 20+30, 0+50)=50

RJ13=max(J13, J12+RJ21, J11+RJ22, J10+RJ23) =max(60, 40+30, 20+50, 0+60)=70

RJ14=max(J14, J13+RJ21, J12+RJ22, J11+RJ23, J10+RJ24)

=max(60, 60+30, 40+50, 20+60, 0+70)=90

RJ15=max(J15, J14+RJ21, J13+RJ22, J12+RJ23, J11+RJ24, J10+RJ25)

=max(50,60+30,60+50,40+60,20+70,0+90)=110

 

J(3,0,1,1)=110

次へ