第六十七章:兩秒!
第六十七章:兩秒!(第2/3頁)
整之後產生了新的需求變化,就再報給共享層,再來一輪分配。”
“反複迭代,直到所有層的線路方案和共享層的樞紐分配方案互相一致。”
聽完韓川的解釋,許誌遠詫異地看了過來,蹙眉問道:“這樣計算量不同樣還是很大嗎?”
韓川搖搖頭,道:“並不會。”
“因為共享層處理的不是原始的線路數據,而是各層提交上來的需求彙總。”
“需求彙總的數據量相對較小,因為一個換乘樞紐,不管連接多少條線路,在共享層裡隻對應一個變量:該樞紐的總換乘流量。”
(本章未完,請點擊下一頁繼續閱讀)第六十七章:兩秒!(第2/2頁)
“你原來用協調參數處理的時候,每一條經過西直門的線路都要和其他所有經過西直門的線路做配對協調。”
說著,他提起筆,在稿紙圖層邊重寫了一個算式。
“假設西直門有n條線路經過,協調參數的數量是o(n)。”
“那麼在共享層裡,這n條線路各自向西直門提交一個需求值,共享層隻需要處理一個變量。”
“也就是說,西直門的樞紐容量分配,那麼複雜度從o(n)降到了o(n)。”
“更重要的是,這個o(n)的過程是有解析解的,即【l(x,λ)=i=1∑n(xdi)2+λ(xc)】”
“其中d_i是第i條線路提交的需求值,x是共享層分配給該樞紐的總流量,c是樞紐容量上限,λ是拉格朗日乘子。對x求導,令導數為零.....”
許誌遠看著那個矩陣表達式,沉默了幾秒。
然後他把韓川的稿紙拉過來,對照著上麵的公式,開始修改自己的matlab代碼。
屏幕上的代碼一行行流暢地刷過,不到半個小時左右的時間,許誌遠把代碼粘進主程序裡,然後打開題目附件裡的站點數據文件,配好輸入參數,按下了運行鍵。
屏幕上冇有立刻跳出結果,matlab的命令窗口裡,光標一閃一閃地,正在跑迭代。
等了大概兩秒的時間,結果出來了!
兩秒!
看著屏幕上的結果,許誌遠下意識地以為是程序出bug了。
這速度,是不是也太快了?
他滾動鼠標,仔細地檢查了一下迭代日誌,從頭到尾看了一遍。
第一輪迭代,共享層收到來自三層共一百二十條線路的需求數據,彙總成三十七個樞紐的容量分配方案。
第二輪迭代,需求變化量比第一輪下降了百分之七十。
第三輪,再降百分之五十。
到第五輪的時候,各層的線路方案和共享層的樞紐分配方案已經基本一致,偏差量降到了初始值的千分之一以下。
“嘶!”
“這怎麼可能!?”
“五輪收斂,每一
(本章未完,請點擊下一頁繼續閱讀)