作者: chungyuandye (養花種魚數月亮賞星星)
標題: Re: [問題] 關於動態規劃
時間: Mon Mar 26 21:14:15 2012
※ 引述《akingo14 (阿肯狗)》之銘言:
: 非常謝謝 感激不盡:)
: ※ 引述《chungyuandye (養花種魚數月亮賞星星)》之銘言:
: : 把preti這個陣列的第一個元素設為0
: : opt這個資料包含兩個東西,第一個最小值,第二個最小值所對定的p。
: : p = p /. opt[[2]]
: : 就是把最小值所對應的p取出來,帶回去
: : 你用迴圈,所以只是為了避免下一要要用到時變數時會重複定義,將把取消罷了。
: : 最後再把你這個階段的解丟到暫存的陣列裡
: : (*同理*)
幫你改寫一下∼
Clear["Global`*"];
timeint=200;
inven=80;
Table[vtemp[1,z]={0,0},{z,10^4}];
Table[vtemp[z,1]={0,0},{z,10^4}];
mt=0.35;
{A1,B1}={A,B}/.
FindRoot[{B*Gamma[1/A+1]==70,
B^2*(Gamma[2/A+1]-Gamma[1/A+1]^2)==100},{A,1},{B,
1}];
tempti=Table[{0},{timeint+1}];
vtemp[ti_,in_]:=
vtemp[ti,in]=Block[{prob,revcdf,p,obj,opt,ptemp},
revcdf=E^-(1/(30+0.1ti)*p)^3.25;(*Exp[-(1/B1*p)^A1]*);
prob=mt*revcdf;
obj=-(prob*(p+vtemp[ti-1,in-1][[1]])+(1-prob)*
vtemp[ti-1,in][[1]]);
opt=Quiet@FindMinimum[obj,{p,tempti[[ti,-1]]}];
ptemp=p/.opt[[2]];
tempti[[ti]]=Flatten@{tempti[[ti]],ptemp};
{-opt[[1]],ptemp}]
Table[vtemp[i,j][[1]],{i,2,timeint+1},{j,inven+1,
Max[(inven-timeint+i),2],-1}]//TableForm
Table[vtemp[i,j][[2]],{i,2,timeint+1},{j,inven+1,
Max[(inven-timeint+i),2],-1}]//TableForm
Max[tempti[[#]]]&/@Range[timeint+1]
--
養花種魚數月亮賞星星
http://chungyuandye.twbbs.org
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.173.130.93
沒有留言:
張貼留言