6 DynamicProgramming
6 DynamicProgramming
ﻛﻨﻔﻮﺳﻴﺴﻮس
ﻳﻚ ﺳﻔﺮ ﻫﺰار ﻓﺮﺳﻨﮕﻲ ،ﺑﺎ ﮔﺎم ﻧﺨﺴﺖ آﻏﺎز ﻣﻲﮔﺮدد!
2
ﻣﺴﺌﻠﻪﻫﺎﻳﻲ ﺑﺎ ﺗﺼﻤﻴﻢﮔﻴﺮﻳﻬﺎي ﭘﻲ در ﭘﻲ و ﭼﻨﺪﻳﻦ ﻣﺮﺣﻠﻪ ﻳﺎﻓﺘﻦ ﻛﻮﺗﺎﻫﺘﺮﻳﻦ ﻣﺴﻴﺮ از ﺑﻴﻦ ﭼﻨﺪﻳﻦ ﻣﺴﻴﺮ از ﮔﺮه ﻛﻨﻮﻧﻲ ﺑﻪ ﻳﻚ ﮔﺮه
ﺣﻠﻪاي
اي ﺌﻠﻪﻫﺎي ﺗﻚ ﻣﺮﺣﻠﻪ
ﻋﻪاي از ﻣﺴﺌﻠﻪﻫﺎي
ﻣﺠﻤﻮﻋﻪاي
ﺣﻠﻪ ﺑﻪﻪ ﺠ
ﻦ ﻣﺮﺣﻠﻪ
ﭼﻨﺪﻳﻦ
ﺌﻠﻪاي ﺑﺎﺎ ﭼﻨﺪ
ﻞ ﻣﺴﺌﻠﻪاي
ﺗﺒﺪﻳﻞ
ﺗﺪ ﮔﺮه
ﺮﻳﻦ ﺮ
دﺳﺘﻴﺎﺑﻲ ﺑﺑﻪ آﺧﺮﻳﻦ
دﻳﮕﺮ ﺗﺎ ﻴ ﺑﻲ
ﻳ ﺮ
ﻫﺮ ﻣﺮﺣﻠﻪ ﺷﺎﻣﻞ ﻳﻚ ﻳﺎ ﺷﻤﺎر ﻛﻤﻲ ﻣﺘﻐﻴﻴﺮ ﺗﺼﻤﻴﻢ ﻓﺮاﻳﻨﺪ ﺗﺠﺰﻳﻪ و ﺗﺤﻠﻴﻞ ﺷﺒﻜﻪ در ﻣﺮﺣﻠﻪﻫﺎي ﭘﻲ در ﭘﻲ
آﻏﺎز ﺣﻞ ﺑﺎ ﻳﻚ ﻣﺮﺣﻠﻪ
ﺑﺮرﺳﻲ راه ﻛﺎرﻫﺎي ﻣﺨﺘﻠﻒ
ﻧﻪ اﻳﻨﻜﻪ ﻫﻤﻪ ﺑﺎ ﻫﻢ
4 3
اﺳﺘﺎﻧﺪارد
ر ﻳﻜﺴﺎن و
اﻟﮕﻮرﻳﺘﻢ ﻳ ن
ﻧﺒﻮد ﻳﻳﻚ ﻮرﻳ ﻢ
اﻣﺎ ،ﺒﻮ
2 2
6 8
2 اراﺋﻪ روﺷﻲ ﻛﻠﻲ ﺑﺮاي ﺣﻞ ﻣﺴﺌﻠﻪ
7 3 6 7 5
5 3 ﻫﺮ ﻣﺴﺌﻠﻪ ﻧﻴﺎزﻣﻨﺪ ﻓﺮﻣﻮﻟﻪ ﻛﺮدن وﻳﮋه ﺧﻮد
1
1 6 8 9 6 11 ﻧﻴﺎزي ﺑﻪ ﺧﻄﻲ ﺑﻮدن رواﺑﻂ ﺑﻴﻦ ﻣﺘﻐﻴﻴﺮﻫﺎ ﻧﻴﺴﺖ
4 4 4 4
2 7 5 7 ﺗﻮاﻧﻤﻨﺪ در ﺣﻞ ﻣﺴﺌﻠﻪﻫﺎي ﺧﻄﻲ ،ﻏﻴﺮﺧﻄﻲ ،اﺣﺘﻤﺎﻟﻲ ،ﻏﻴﺮاﺣﺘﻤﺎﻟﻲ،
3 7
5 10 ﻣﺘﻐﻴﻴﺮﻫﺎي ﭘﻴﻮﺳﺘﻪ ،ﻣﺘﻐﻴﻴﺮﻫﺎي ﻋﺪد ﺻﺤﻴﺢ
6 5
١
ﻣﺴﺌﻠﻪ ﻛﻮﺗﺎﻫﺘﺮﻳﻦ ﻣﺴﻴﺮ )(SPP ﻣﺴﺌﻠﻪ ﻛﻮﺗﺎﻫﺘﺮﻳﻦ ﻣﺴﻴﺮ )(SPP
در ﻣﺮﺣﻠﻪ :4ﺳﻪ وﺿﻌﻴﺖ ﻳﺎ ﺣﺎﻟﺖ )(state ﺗﻘﺴﻴﻢ ﻃﻮل ﺳﻔﺮ ﺑﻪ ﭼﻬﺎر ﻣﺮﺣﻠﻪ )(stage
ﺑﻬﺘﺮﻳﻦ ﺗﺼﻤﻴﻢ ﻣﺮﺣﻠﻪ 4 ﻣﺮﺣﻠﻪ :1ﺳﻔﺮ از ﺷﻬﺮ ،1ﺑﻪ ﻳﻜﻲ از ﺷﻬﺮﻫﺎي ،4 ،3 ،2ﻳﺎ 5
اﮔﺮ در وﺿﻌﻴﺖ 8ﺑﺎﺷﺪ ،رﻓﺘﻦ ﺑﻪ 11 ﻣﺮﺣﻠﻪ :2اداﻣﻪ ﺳﻔﺮ از ﻣﻘﺼﺪ ﭘﻴﺸﻴﻦ ﺑﻪ ﻳﻜﻲ از ﺷﻬﺮﻫﺎي 6ﻳﺎ 7
اﮔﺮ در وﺿﻌﻴﺖ 9ﺑﺎﺷﺪ ،رﻓﺘﻦ ﺑﻪ 11
10
ﺷﻬﺮﻫﺎي ،9 ،8ﺎﻳﺎ 1
ﻳﻜﻲ از ﺷ ﺎﭘﻴﺸﻴﻦ ﺑﻪ ﻜ
ﻣﻘﺼﺪ ﺸ اداﻣﻪ از ﻘ
ﻣﺮﺣﻠﻪ :3ا ا
ﻠ
اﮔﺮ در وﺿﻌﻴﺖ 10ﺑﺎﺷﺪ ،رﻓﺘﻦ ﺑﻪ 11
ﻣﺮﺣﻠﻪ :4رﺳﻴﺪن ﺑﻪ ﻣﻘﺼﺪ ﻧﻬﺎﻳﻲ )ﺷﻬﺮ (11
8 ﺳﻪ اﺻﻄﻼح ﻣﻬﻢ
5 ﻫﺮ ﻣﺮﺣﻠﻪ ﻳﻚ ﻣﺴﺌﻠﻪ ﻓﺮﻋﻲ
2 2 6
8 ﻣﺮﺣﻠﻪ :ﻧﻤﺎد n 2 2 6
8
7
5
3
2 3 6
7 5
611 ﺣﺎﻟﺖ :ﻧﻤﺎد S
7
5
3
2 3 6
7 5 ﺣﻞ ﭘﺴﺮو )(backward
1
6 4
1
8
99 6 11 1
6 4
1
8
9 6 11
4
2
5 3
4 7 4
7
5 7
10 ﻣﺘﻐﻴﻴﺮ ﺗﺼﻤﻴﻢ :ﻧﻤﺎد xn
4
2
5 3
4 7 4
7
5 7
10
ﺗﺼﻤﻴﻢ ﮔﻴﺮﻧﺪه ﺧﻮد را در آﺧﺮﻳﻦ ﻣﺮﺣﻠﻪ ﻓﺮض ﻣﻲﻛﻨﺪ
7
10 در ﻳﻜﻲ از ﺷﻬﺮﻫﺎي ،9 ،8ﻳﺎ 10
8 7
10 9
ﺳﻔﺮ از اﻳﻦ ﻣﺮﺣﻠﻪ ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﺣﺎﻟﺘﻬﺎي ﻣﺨﺘﻠﻒ اﻳﻦ ﻣﺮﺣﻠﻪ و ﺗﺼﻤﻴﻤﻬﺎي ﺑﻬﻴﻨﻪ 8 5 5 11 ﺑﻬﺘﺮﻳﻦ ﺗﺼﻤﻴﻢ ﺑﺮاي ﺣﺎﻟﺖ ﻛﻨﻮﻧﻲ
ﻣﺮﺣﻠﻪ 4 9 6 6 11
ﻣﺠﻤﻮع ﻣﺴﺎﻓﺖ از ﻫﺮ ﺣﺎﻟﺖ ﻣﺮﺣﻠﻪ 3ﺗﺎ ﻣﻘﺼﺪ ﻧﻬﺎﻳﻲ ﺑﺮاﺑﺮ ﺑﺎ ﻣﺴﺎﻓﺖ ﻃﻲ ﺷﺪه 10 7 7 11
در اﻳﻦ ﻣﺮﺣﻠﻪ ﺑﻪ اﺿﺎﻓﻪ ﺣﺪاﻗﻞ ﻣﺴﺎﻓﺖ ﻣﺮﺣﻠﻪ ) 4ﺳﺘﻮن )(f4*(S ﻛﻮﺗﺎﻫﺘﺮﻳﻦ ﻣﺴﺎﻓﺖ از ﺣﺎﻟﺖ ﻛﻨﻮﻧﻲ ﺑﻪ ﻣﻘﺼﺪ ﻧﻬﺎﻳﻲ
ﻣﺜﻼَ اﮔﺮ ،S=6 ،n=3و x3=9ﺑﺎﺷﺪ دارﻳﻢ 2
2 8
7 3
2 3 6
6
7 5 ﻣﺴﺎﻓﺘﻲ ﻛﻪ ﺑﺎﻳﺪ از ﺣﺎﻟﺖ ﺑﻪ ﻣﻘﺼﺪ ﻧﻬﺎﻳﻲ ﭘﻴﻤﻮده ﺷﻮد
ﻣﺴﺎﻓﺖ ﻣﺮﺣﻠﻪ ﺑﻌﺪ +ﻣﺴﺎﻓﺖ اﻳﻦ ﻣﺮﺣﻠﻪ = ﻣﺴﺎﻓﺖ ﺗﺎ ﻣﻘﺼﺪ ﻧﻬﺎﻳﻲ 1 5
6 4
1
8
9 6 11
4
4
2
5 3
7 4
7
5 7
10
ﺣﺎﻟﺘﻬﺎي ﻣﻤﻜﻦ ﻣﺮﺣﻠﻪ ﻛﻨﻮﻧﻲ
12 11
٢
ﻣﺴﺌﻠﻪ ﻛﻮﺗﺎﻫﺘﺮﻳﻦ ﻣﺴﻴﺮ )(SPP ﻣﺴﺌﻠﻪ ﻛﻮﺗﺎﻫﺘﺮﻳﻦ ﻣﺴﻴﺮ )(SPP
x3 ﻣﺠﻤﻮع ﻣﺴﺎﻓﺖ از ﻣﺴﺎﻓﺖ از ﺣﺪاﻗﻞ ﻣﺴﺎﻓﺖ
S )f3*(S X*3 S=6ﺗﺎ = S=6در n=3ﺑﻪ + از x3=9ﺗﺎ
8 9 10
ﻣﻘﺼﺪ ﻧﻬﺎﻳﻲ x3=9 ﻣﻘﺼﺪ ﻧﻬﺎﻳﻲ
6 5+6=11 7+6=13 5+7=12 11 8
7 8+5=13 4+6=10 7+7=14 10 9
ﺗﺎﺑﻊ ﺑﺎزده ﺑﻪ ﻃﻮر ﻛﻠﻲ
)(return function
n=3
f3(S=6,x3=8)=6+5=11 ) f n (S , x n ) = C (S , X n ) + f n*+1 (x n
f3(S=6,x3=9)=7+6=13
f3(S=6,x3=10)=5+7=12
f3(S=7,x3=8)=8+5=13 ﻣﺠﻤﻮع ﻛﻞ ﺣﺪاﻗﻞ ﻣﺴﺎﻓﺖ از
ﻣﺴﺎﻓﺖ از Sﺗﺎ ) xnدر ﻣﺮﺣﻠﻪ
f3(S=7,x3=9)=4+6=10 ﻣﺴﺎﻓﺖ از S xnﻣﺮﺣﻠﻪ ﺑﻌﺪ
ﻛﻨﻮﻧﻲ ﻣﺮﺣﻠﻪ n ﺑﻌﺪ( ﺗﺎ ﻣﻘﺼﺪ
f3(S=7,x3=10)=7+7=14 ﺗﺎ ﻣﻘﺼﺪ ﻧﻬﺎﻳﻲ ﻧﻬﺎﻳﻲ
14 13
n=1
ﻛﻮﺗﺎﻫﺘﺮﻳﻦ ﻣﺴﻴﺮ از آﻏﺎز ﺗﺎ ﭘﺎﻳﺎن x1
S f1*(S) X*1
2 3 4 5
f1*(S) = 17
1 7+12=19 5+12=17 6+12=18 4+13=17 17 3ﻳﺎ 5
16 15
f n* (S ) = Max }) ∨ Min {f n (S , x n اﻓﺰاﻳﺶ ﺷﻤﺎر ﻣﺘﻐﻴﻴﺮﻫﺎي ﺣﺎﻟﺖ ﺑﻪ ﻣﻌﻨﻲ اﻓﺰاﻳﺶ ﭘﻴﭽﻴﺪﮔﻲ ﻣﺴﺌﻠﻪ
xn xn
18 17
٣
وﻳﮋﮔﻴﻬﺎي ﺑﻨﻴﺎدﻳﻦ ﺑﺮﻧﺎﻣﻪرﻳﺰي ﭘﻮﻳﺎ وﻳﮋﮔﻴﻬﺎي ﺑﻨﻴﺎدﻳﻦ ﺑﺮﻧﺎﻣﻪرﻳﺰي ﭘﻮﻳﺎ
.6ﭘﺎﺳﺦ ﺑﻬﻴـﻨﻪ ﻣﺴﺌﻠﻪ از زﻧﺠـﻴﺮه ﺗﺼﻤـﻴﻤﻬﺎي ﻣﺮاﺣﻞ ﺗﻌﺮﻳﻒ ﻣﻲﺷﻮد .5وﺟﻮد ﭘﻴﻮﺳﺘﮕﻲ در ﻣﺮاﺣﻞ ﭘﻲ در ﭘﻲ ﺗﺼﻤﻴﻢ ﮔﻴﺮي
ﺻﺮﻓﻨﻈﺮ از ﭼﮕﻮﻧﮕﻲ رﺳﻴﺪن ﺑﻪ ﻳﻜﻲ از ﺣﺎﻟﺘﻬﺎي ﻣﺮﺣﻠﻪ ،ﺑﺎﻳﺪ ﻫﻤﻪ •
ﺗﺎﺑﻊ ) f*n(Sﺣﺎﻟﺖ Sﻣﺮﺣﻠﻪ nرا ﺑﻪ ﻣﺮﺣﻠﻪ ﭘﺴﻴﻦ ﭘﻴﻮﻧﺪ ﻣﻲدﻫﺪ •
در واﻗﻊ f*n (S) ،ﻳﻚ ﻣﻘﺪار اﻧﺒﺎﺷﺘﻪ از ﺗﺼﻤﻴﻤﻬﺎي ﭘﻲ در ﭘﻲ اﺳﺖ •
20 19
22 21
24 23
۴
ﺑﺮﻧﺎﻣﻪرﻳﺰي ﭘﻮﻳﺎ ::ﻣﺴﺌﻠﻪ ﻣﻮﺟﻮدي ﻛﺎﻻ ﺑﺮﻧﺎﻣﻪرﻳﺰي ﭘﻮﻳﺎ ::ﻣﺴﺌﻠﻪ ﻣﻮﺟﻮدي ﻛﺎﻻ
ﻣﺜﻼً اﮔﺮ در ﻣﺎه ﺳﻮم ) (n=3ﻣﻮﺟﻮدي اول ﻣﺎه (S=1) 1و ﮔﺎم .1ﺗﻌﺮﻳﻒ ﻣﺮﺣﻠﻪ و ﺣﺎﻟﺖ
ﻣﻴﺰان ﺗﻮﻟﻴﺪ (x3=3) 3و ﺗﻘﺎﺿﺎ (d3=2) 2ﺑﺎﺷﺪ ،دارﻳﻢ: ﻣﺮﺣﻠﻪ ) :(nﻣﺎﻫﻬﺎ
ﺑﺮﻧﺎﻣﻪرﻳﺰي ﭘﻮﻳﺎ ::ﻣﺴﺌﻠﻪ ﻣﻮﺟﻮدي ﻛﺎﻻ :ﺣﻞ ﺑﺮﻧﺎﻣﻪرﻳﺰي ﭘﻮﻳﺎ ::ﻣﺴﺌﻠﻪ ﻣﻮﺟﻮدي ﻛﺎﻻ
x4 ﻣﺮﺣﻠﻪ :4 ﺑﺮ اﺳﺎس ﻓﺮض ﺑﺎﻻ ،ﻣﻮﺟﻮدي اول ﻣﺎه ،4ﺑﺮاﺑﺮ ﺑﺎ 2ﺧﻮاﻫﺪ ﺑﻮد
S f*4(S) x*4
0 1 2 3 4 ﭼﻮن ﺗﻘﺎﺿﺎ 4 ،واﺣﺪ در ﻣﺎه 3 :3واﺣﺪ ﺗﻮﻟﻴﺪ 1 ،واﺣﺪ ﻣﻮﺟﻮدي اول ﻣﺎه 2 ،واﺣﺪ ﺗﻘﺎﺿﺎ
0 - - - - 7 7 4 اﺳﺖ ،و 1واﺣﺪ ﻣﻮﺟﻮدي
از ﻣﺎه ﻗﺒﻞ وﺟﻮد دارد و ﭘﺲ ،ﺑﺎﻳﺪ ﻫﺰﻳﻨﻪ ﻣﺎه ﺑﻌﺪ را ﻧﻴﺰ اﻓﺰود
1 - - - 6 - 6 3 ﭘﺎﻳﺎن ﺎﻣﺎه 4
ﻧﺒﺎﻳﺪ ددر ﺎ ﺎن
ﻧﻴﺰ ﻧ ﺎ ﺪ
ﻧﺰ
1
2 - - 5 - - 5 2 ﻣﻮﺟﻮدي ﺑﺎﺷﺪ ،ﭘﺲ ﺗﻨﻬﺎ ) f n (S ) = ( S + x n − d n
ﮔﺰﻳﻨﻪ ﺗﺼﻤﻴﻢ 3 ،واﺣﺪ 2
3 - 4 - - - 4 1 ﺗﻮﻟﻴﺪ اﺳﺖ. ) + C (x n ) + f n +1 (S n +1 + x n +1 − d n +1
4 0 - - - - 0 0 در اﻳﻨﺼﻮرت ﻫﺰﻳﻨﻪ ﻛﻞ
1 6واﺣﺪ اﺳﺖ.
) f 4 (S , x 4 ) = (S + x 4 − d 4 ) + C (x 4
2
28 27
ﺑﺮﻧﺎﻣﻪرﻳﺰي ﭘﻮﻳﺎ ::ﻣﺴﺌﻠﻪ ﻣﻮﺟﻮدي ﻛﺎﻻ :ﺣﻞ ﺑﺮﻧﺎﻣﻪرﻳﺰي ﭘﻮﻳﺎ ::ﻣﺴﺌﻠﻪ ﻣﻮﺟﻮدي ﻛﺎﻻ :ﺣﻞ
x3
x2 ﻣﺮﺣﻠﻪ :2 S )f*3(S x *3
S
0 1 2 3 4 5
)f*2(S x *2 0 1 2 3 4 5 ﻣﺮﺣﻠﻪ :3
0 - - 12 5/12 13 5/13 12 1
0 - - - 18 5/17 16 16 5
1 - 11 5/11 12 5/12 10 10 5
1 - - 17 5/16 15 16 15 4
2 7 5/10 10 5/11 9 - 7 0
2 - 16 5/15 14 15 16 14 3
3 5/6 10 5/10 8 - - 5/6 0
3 12 5/14 13 14 15 16 12 0
4 6 5/9 7 - - - 6 0
4 5/10 12 13 14 15 13 5/10 0
5 5/5 6 - - - - 5/5 0
1
) f 2 (S , x 2 ) = (S + x 2 − d 2 ) + C (x 2 ) + f 3* (S 6 2 - - - - - 2 0
2 1
) f 3 (S , x 3 ) = (S + x 3 − d 3 ) + C (x 3 ) + f 4* (S
2
30 29
۵
ﺗﻤﺮﻳﻦ ::ﻣﺴﺌﻠﻪ ﺗﺨﺼﻴﺺ ﻇﺮﻓﻴﺖ ﺑﺮﻧﺎﻣﻪرﻳﺰي ﭘﻮﻳﺎ ::ﻣﺴﺌﻠﻪ ﻣﻮﺟﻮدي ﻛﺎﻻ :ﺣﻞ
ﺷﺮﻛﺘﻲ داراي 6ﺧﻂ ﺗﻮﻟﻴﺪ ﺑﺮاي 3ﻣﺪل ﺗﻠﻮﻳﺰﻳﻮن اﺳﺖ .ﺳﻮد ﺗﻮﻟﻴﺪ ﻫﺮ ﻣﺪل در ﻫﺮ x1
S
0 1 2 3 4 5
)f*1(S x *1 ﻣﺮﺣﻠﻪ :1
ﺧﻂ داده ﺷﺪه اﺳﺖ .ﭼﻨﺪ ﺧﻂ ﺗﻮﻟﻴﺪ ﺑﻪ ﻫﺮ ﻣﺪل ﺗﺨﺼﻴﺺ داده ﺷﻮد ﺗﺎ ﺳﻮد ﺷﺮﻛﺖ
0 - 20 5/20 19 5/20 5/20 20 1
ﺑﻴﺸﻴﻨﻪ ﮔﺮدد.
ﺳﻮد ﻣﺎﻫﻴﺎﻧﻪ ﻫﺮ ﺧﻂ ﺑﺮاي ﻫﺮ ﻣﺪل )ﻣﻴﻠﻴﻮن رﻳﺎل( ﺗﻌﺪاد ﺧﻄﻮط
1
ﻣﺪل 3 ﻣﺪل 2 ﻣﺪل 1
ﻴﺺ داده
ﺗﺨﺼﻴﺺ ) f 1 (S , x 1 ) = (S + x 1 − d 1 ) + C (x 1 ) + f 2* (S
ﺷﺪه 2
0 0 0 0
ﭘﺲ ﭘﺎﺳﺦ ﺑﻬﻴﻨﻪ
20 10 15 1
x 1* = 1, x 2* = 5, x 3* = 0, x 4* = 4
35 15 30 2
45
50
20
25
40
45
3
4
f n* (S ) = 20
54 29 48 5
60
/09آورﻳﻞ17/
30 50
دکـتر سلیمی فرد ::پژوهش عملياتي :: ٣برنامهریزی پویا
6 32 31
۶