MNL(SUE) --> CNL-UE with FW

case study

  1. VI Projection and MP FW comparison
  2. find they all collapse, find where is the problem
  3. see the performance of MNL based sue
  4. 公式是什么
  5. 正確嗎
  6. 算法
  7. 編程

Bug:

entropy_left 和 entropy_right相互顛倒防止

LeftTrialOutput = LeftTrialOutput + entropy_left;
RightTrialOutput = RightTrialOutput + entropy_right;
note 這個(gè)bug是通過一步步的debug試出來的。
  1. 用e-5來顯示比%.10lf更高的精度
%.5e //顯示5位數(shù)字
  1. 檢查是否滿足均衡條件
計(jì)算機(jī)跑出的結(jié)果

完全滿足均衡條件


看看是否滿足均衡條件
  1. 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)

Paste_Image.png
  1. 計(jì)算一下平均最小期望


    Paste_Image.png

    Theta=0.1的時(shí)候也不一致。


    Paste_Image.png

    嚇?biāo)赖?,excel中l(wèi)n試ln,然后就一致了
    Paste_Image.png

總結(jié)

FW在解MNL based SEU時(shí)就會(huì)出現(xiàn)偏差

  1. congestion situation
在Deamnd加倍,path cost比以前多10倍的情況下,表現(xiàn)良好,達(dá)到均衡,最小期望值也一樣

同樣,再此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)了。

Paste_Image.png

所得結(jié)論確實(shí)與Theta的變化一致。
CNL里面的離散參數(shù)
下層0-1
上層》0
下層=1時(shí),為MNL
CNL有不同表達(dá)式,怎么互推
CNL更接近Probit,緩解了獨(dú)立性

CNL-UE with FW Debug

  1. CNL上沒有問題
  2. 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ì)過了
    簡化網(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)該是收斂的?;氐紹PR就可以,都是增函數(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ì)?

  1. 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 萬次迭代,最高1
e-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上也能跑起來
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • fix step size 過高引起的Precision異常 Projection method 里面分為兩步,一...
    Silly_N_Fool閱讀 474評(píng)論 0 0
  • 背景 一年多以前我在知乎上答了有關(guān)LeetCode的問題, 分享了一些自己做題目的經(jīng)驗(yàn)。 張土汪:刷leetcod...
    土汪閱讀 12,927評(píng)論 0 33
  • 記憶中,我最早接觸的書,是圖書連環(huán)畫,就是上面是圖畫,下面配有文字的小人書。在七八十年代,兒童圖書并不像現(xiàn)在那樣泛...
    一泓夜雨閱讀 513評(píng)論 8 4

友情鏈接更多精彩內(nèi)容