case study
- VI Projection and MP FW comparison
- find they all collapse, find where is the problem
- see the performance of MNL based sue
- 公式是什么
- 正確嗎
- 算法
- 編程
Bug:
entropy_left 和 entropy_right相互顛倒防止
LeftTrialOutput = LeftTrialOutput + entropy_left;
RightTrialOutput = RightTrialOutput + entropy_right;
note 這個(gè)bug是通過一步步的debug試出來的删性。
- 用e-5來顯示比%.10lf更高的精度
%.5e //顯示5位數(shù)字
- 檢查是否滿足均衡條件
完全滿足均衡條件
-
Dispersion parameter
Theta=2
Paste_Image.png
Theta=3
Paste_Image.png
Theta=0.5
Paste_Image.png
Theta=0.1
Paste_Image.png
不能達(dá)到收斂(Theta=0.1)
-
計(jì)算一下平均最小期望
Paste_Image.png
Theta=0.1的時(shí)候也不一致击碗。
Paste_Image.png
嚇?biāo)赖松蟠牛琫xcel中l(wèi)n試ln煞茫,然后就一致了
Paste_Image.png
總結(jié)
FW在解MNL based SEU時(shí)就會(huì)出現(xiàn)偏差
- congestion situation
同樣,再此Demand下測(cè)試離散參數(shù),同樣非常敏感淋肾,步長一開始好好的硫麻,然后,突然變0樊卓,前后解的誤差急劇減少拿愧,同時(shí)不收斂。這個(gè)可以像一開始一樣一步步看碌尔。
11/29
ptt不能過高
這時(shí)link free flow time, OD demand, BPR對(duì)ptt影響都很大浇辜。
line search 里面也有bug
for (p_i = 0; p_i < NoPs; p_i++){
entropy_left = entropy_left + p[p_i].Pf_Left * (log(p[p_i].Pf_Left) - 1);
entropy_right = entropy_right + p[p_i].Pf_Right * (log(p[p_i].Pf_Right) - 1);
}
把這兩個(gè)問題測(cè)完,對(duì)Theta不敏感了唾戚,Apf符合Logit公式了柳洋。收斂的很好
改變Theta=2還是有bug
外部參數(shù)Theta要寫成2.0
到目前為止調(diào)整Theta沒問題了。Demand也可以叹坦。
Theta=0.1
符合logit fun
符合流量守恒
前后解相差很小熊镣。
Theta=0.01,direction=0募书;已經(jīng)達(dá)到最優(yōu)了绪囱。
所得結(jié)論確實(shí)與Theta的變化一致。
CNL里面的離散參數(shù)
下層0-1
上層》0
下層=1時(shí)莹捡,為MNL
CNL有不同表達(dá)式鬼吵,怎么互推
CNL更接近Probit,緩解了獨(dú)立性
CNL-UE with FW Debug
- CNL上沒有問題
- CNL excel 印證過篮赢,那估計(jì)在line search上有偏差
從MNL(SUE)可以看出齿椅,output的精度由line search的精度決定。不會(huì)比line search的精度高启泣。說錯(cuò)了涣脚,提高line search的精度沒有提高最終結(jié)果的精度。
S4LinkTravelTime(l);
S2CNL_Loading(l, nm, n, od);
S3AON(l, nm);
S5Direct(l, nm);
這幾部出錯(cuò)的可能性不大
打印輸出line search
line search內(nèi)部沒有問題寥茫,都在excel中核對(duì)過了
簡(jiǎn)化網(wǎng)絡(luò)遣蚀,就考慮三條線的情況。
也是AD符合CNL坠敷,line search有問題,不是路徑選擇的問題
將step size adjust 放在循環(huán)外面射富,對(duì)結(jié)果沒有影響膝迎。
line search 在縮小到一定程度的時(shí)候就不動(dòng)了。但是步長精度不需要那么高胰耗。問題不在這限次。MNL在line search的時(shí)候也有同樣的問題。
不是在已有的基礎(chǔ)上開發(fā),就很難Debug卖漫。
如果link travel time是常數(shù)费尽,一步就完成。所有流量分到最短路羊始,line search 的時(shí)候確實(shí)是偏向均衡解的旱幼。說明,至少在一定情況下line search是沒問題的突委。改為線性函數(shù)柏卤,也不已完成,但是解不正確匀油≡蹈浚看看MNL。對(duì)于FFT乘以系數(shù)還是常數(shù)敌蚜,要與flow掛鉤桥滨;乘以一個(gè)常數(shù),MNL也控制的不好弛车;但是在輸入data的時(shí)候齐媒,也乘以一個(gè)系數(shù),一步就能收斂帅韧。下面里初,把flow這個(gè)變量引入試試;加入Flow以后也不收斂忽舟,應(yīng)該是收斂的双妨。回到BPR就可以叮阅,都是增函數(shù)刁品,為啥不一樣?BPR改成1次浩姥,也不收斂挑随。這個(gè)怎么查?牽一發(fā)而動(dòng)全身勒叠,肯定其他地方也用到了兜挨。看一遍流程就知道啦眯分,link funtion是和objective fun連在一起的拌汇,link fun 改動(dòng),object fun也要改弊决。如果是常數(shù)噪舀,obj不變化魁淳,正好碰巧了。我在VI里調(diào)link fun就沒關(guān)系与倡,因?yàn)榫鸵徊接玫豯ink fun界逛。把link flow調(diào)低,link flow和Obj調(diào)整好纺座,對(duì)了息拜,沒錯(cuò)。不調(diào)低的話
- 那我再試試CNL下面的link travel fun的改變會(huì)怎樣比驻。
直接到無窮了该溯;
可能line search還有隱藏的問題
input對(duì)不對(duì)?
- Link travel time 是BPR+constant+constant
第二天别惦,從CNL-UE測(cè)試起狈茉。
要修改的地方:頭文件,文件讀寫時(shí)的文件名掸掸,強(qiáng)行給定的最短路徑(OD pair氯庆, mode)
昨天的code 測(cè)試亂了,從倉庫里取原來的扰付。又要重新Debug堤撵。說明,沒做一點(diǎn)改動(dòng)都要記錄羽莺,不然馬上就忘了实昨。而且代碼和數(shù)據(jù)要放一起,不能分開盐固。
原來的代碼數(shù)據(jù)結(jié)構(gòu)變了荒给,都要改。主要時(shí)nest數(shù)據(jù)結(jié)構(gòu)體刁卜。
** 在data input要輸入nest結(jié)構(gòu)體**
將cost: nest cost, root cost, MargProb, CondProb都進(jìn)行了調(diào)整
在probability 的計(jì)算代碼也進(jìn)行了修改
另外志电,在AON中也發(fā)現(xiàn)了問題
加載的時(shí)輔助流量,不是流量(ADem蛔趴,Dem)
- 將FW與MSA進(jìn)行對(duì)比:
首先挑辆,結(jié)果不一致。
第二孝情,MSA的比FW更加符合CNL概率鱼蝉。
第三,MSA的多種固定步長對(duì)結(jié)果沒有影響箫荡。(0.1魁亦,0.2... 1, 1.5)
總結(jié),可以認(rèn)為是line search的問題菲茬。 - 用VI的Projection和MSA對(duì)比吉挣,結(jié)果也不一致
- 想原因,可能是link travel time的表達(dá)式不一樣婉弹,改成相同的表達(dá)式后睬魂,結(jié)果果然一致。
- MSA改link cost中的一步镀赌,F(xiàn)W要改兩步
然后想到氯哮,F(xiàn)W不但要改link cost的表達(dá)式,還要改line search里面積分的表達(dá)式商佛。測(cè)試以后喉钢,發(fā)現(xiàn)FW,MSA良姆,Projection對(duì)同一個(gè)算例求解得到相同的結(jié)果肠虽。
3 precision of FW and MSA is still not acceptable
3.1 Is the problem of AON?
membership 0.5-0.5 correct
membership 0.2-0.8 correct
Mu 0.8 correct (一開始是不一樣的,后來檢查一下CNL.xlxs玛追,是原來的計(jì)算公式有錯(cuò)税课,改過來就完全一樣了)
總結(jié),不是AON的問題痊剖,還是要看看line search
3.2 check line search
check MSA: 精度一直在提高韩玩,只是比較慢而已。最高1e-6.
check line search: 精度一直在提高陆馁,明顯比MSA快找颓。但是仍有上限,20 萬次迭代叮贩,最高1e-7. 50萬次迭代击狮,3*e-8. 同時(shí)查看AON—CNL,我認(rèn)為沒有問題妇汗。
總結(jié):line search 上也沒有問題帘不,可能是FW自身的問題。
- 在MNL(SUE)中出現(xiàn)過的左右顛倒的問題杨箭,沒有出現(xiàn)寞焙。
- ptt也沒有過高
- line search里面的積分表達(dá)式正確
- 全局變量Theta要寫成1.0的形式
- line search 時(shí)候的積分表達(dá)式不對(duì)
3.3 test on larger net
- 規(guī)范輸入格式
- input data format
- input file name
- head file
- shortest path: different origin should be give the shortest path
還是有問題,跑不起來互婿。那就只能一步步Debug捣郊。
- 最短路給錯(cuò)了,Wrong origin
correct:Pred[2] = 15; Pred[3] = 15; Pred[15] = 14; Pred[14] = 5; Pred[5] = 1;
Wrong:Pred[2] = 15; Pred[3] = 15; Pred[15] = 14; Pred[14] = 5; Pred[5] = 4;
CNL pass
all pass
在ND上也能跑起來