[討論] 三層迴圈(三維)寫法已回收
不好意思 因為模式的需要
由於以前非資工相關背景的關係,現在模式需要自己寫個程式(Mathematica)
我的主要問題 由於我現在的模式為三維的問題
維度可分為時間、商品一、商品二
帶入模式求最佳價格 ,這三種維度互相影響著價格 然後進行動態規畫求解,
所以我目前初步想法是寫三圈迴圈(之前相關文獻都是時間以及一種商品數量)
但是目前我初步寫完實在是不知道哪邊錯 或是整個觀念錯誤,我的程式碼在以下
希望有高手可以指點我一下~不好意思了 真的很緊急以及需要
如可以解決 小弟附上微薄P幣兩千
----------------------------------------
timeint = 10;
inven1 = 5;
inven2 = 5;
a = 0.4;
b = 0.3;
c = 0.2;
v = Table[0, {i, timeint + 1}, {j, inven1 + 1}, {k, inven2 + 1}];
vv = Table[0, {i, timeint + 1}, {j, inven1 + 1}, {k, inven2 + 1}];
preti = Table[0, {i, timeint + 1}];
mt = Table[0.35, {i, timeint + 1}];
For[ti = 2, ti <= timeint + 1, ti = ti + 1, preti[[1]] = 0;
For[in1 = inven1 + 1, in1 >= Max[(inven1 - timeint + ti), 2],
in1 = in1 - 1,
prein1 = Table[0, (j, inven1 + 1)];
prein1[[1]] = 0;
For[in2 = inven2 + 1, in2 >= Max[(inven2 - timeint + ti), 2],
in2 = in2 - 1,
prein2 = Table[0, (k, inven2 + 1)];
prein2[[1]] = 0;
revcdf = E^-(0.0045*(timeint + 1)/ti*p)^4;
prob1 = Part[mt, ti]*a*revcdf;
prob2 = Part[mt, ti]*b*revcdf;
prob3 = Part[mt, ti]*c*revcdf;
opt = FindMinimum[-((prob1*(p + Part[v, ti - 1, in1 - 1, in2])) +
(prob2*(p + Part[v, ti - 1, in1, in2 - 1])) +
(prob3*(2 p + Part[v, ti - 1, in1 - 1, in2 - 1])) +
((1 - prob1 - prob2 - prob3) Part[v, ti - 1, in1, in2])),
{p, preti[[ti - 1]]}];
p = p /. opt[[2]];
prein1[[in1]] = p;
prein2[[in2]] = p;
Clear[p];
Part[v, ti, in1, in2] = -Part[opt, 1];
Part[vv, ti, in1, in2] = opt;
];
preti[[ti]] = Max[prein1];
Clear[prein1];
];
preti[[ti]] = Max[prein2];
Clear[prein2];
];
v // MatrixForm
vv // MatrixForm
preti
opt
其中v為利潤集合 vv為價格 利潤集合
我先將時間初步分為10期 兩種商品數量各為5個
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.80.253
→
03/23 00:27, , 1F
03/23 00:27, 1F