PLAN-B terraform量化數(shù)據(jù)分享(2)
量化計(jì)算可以幫助我們簡化流程避免冗余,它一般分為三個(gè)方面:資源產(chǎn)量、建筑數(shù)量、物流速度。
在操作上,先根據(jù)最終所要達(dá)到的終端資源產(chǎn)量反推計(jì)算之前每一步的所需產(chǎn)量,再根據(jù)每種建筑的年產(chǎn)量計(jì)算所需的個(gè)數(shù),最后沿途檢查物流系統(tǒng)能否保證及時(shí)供給。

????細(xì)心的同學(xué)可能已經(jīng)發(fā)現(xiàn)了,在上一篇專欄中我們只介紹了三步量化的前兩步,并沒有提及物流,是因?yàn)檫@個(gè)游戲的物流系統(tǒng)實(shí)在是,呃,非常有特點(diǎn)。
????往好處說,作者刻畫了非常多的細(xì)節(jié),比如倉庫無人機(jī)會(huì)在確認(rèn)需要搬運(yùn)的貨物后,從所屬倉庫的停機(jī)坪出發(fā)、前往貨物所在地、攜帶貨物前往目的地、再回到停機(jī)坪充電,每一段路程都有加減速的過程,并且每個(gè)無人機(jī)都是獨(dú)立行動(dòng);又比如卡車/火車會(huì)根據(jù)道路擁擠情況(與前車的距離)以及上下貨速度(無人機(jī)數(shù)量/效率)智能調(diào)整車速,假如道路足夠擁擠(車足夠多)的話甚至?xí)ㄋ勒麠l線路導(dǎo)致車輛全部無法動(dòng)彈。
????往壞處說,這些細(xì)節(jié)都會(huì)實(shí)時(shí)影響運(yùn)輸效果并且讓你的電腦變卡,給整個(gè)物流系統(tǒng)的量化工作帶來了非常多的變量。而缺乏量化的物流,就會(huì)導(dǎo)致整體規(guī)劃出現(xiàn)各種莫名其妙的運(yùn)輸瓶頸,從而達(dá)不到設(shè)計(jì)的額定產(chǎn)量(例如上一篇專欄文末所示的情況)。
????本文將通過一些實(shí)驗(yàn)數(shù)據(jù)來對(duì)物流系統(tǒng)進(jìn)行一個(gè)粗略的量化。
短程(單個(gè)倉庫)
首先來看一下倉庫,1/2/3級(jí)倉庫可以覆蓋距離自身1/2/3格內(nèi)的范圍,并帶有1/2/4個(gè)無人機(jī)。
本游戲的物流核心就是倉庫的無人機(jī),它的行為邏輯可以分為三類:
????1.入庫,從倉庫出發(fā),將供應(yīng)端的資源搬到所屬倉庫儲(chǔ)存
????2.出庫,將所屬倉庫的庫存資源搬到需求端,再回到倉庫
????3.直飛,從倉庫出發(fā),將供應(yīng)端的資源直接搬到需求端,再回到倉庫
我們可以通過構(gòu)建一些特殊的布局,來測定不同情況下無人機(jī)的運(yùn)輸量。
游戲中共有幾十種直飛路徑,精確到每一種情況的量化既難以完成也沒有意義,我們的目標(biāo)是得到一個(gè)泛用且穩(wěn)妥的運(yùn)輸量下限,為此可以先做一些簡化,減少不同的討論情況。

注意到大部分情況下直飛時(shí)無人機(jī)路徑是一個(gè)三角形,這比先入庫再出庫的兩次折返路程更短,也更節(jié)約時(shí)間。因?yàn)槲覀冃枰氖沁\(yùn)輸量下限,假如只看出入庫,則僅需考慮5種情況,即下圖紅圈中的5個(gè)位置。

在測試過程中發(fā)現(xiàn),除了測試所針對(duì)的距離差別外,以下因素對(duì)運(yùn)輸量也有較大影響:
幀率越高,運(yùn)輸量會(huì)隨之下降
游戲進(jìn)行速度越高,運(yùn)輸量也會(huì)隨之下降
這就導(dǎo)致,雖然每個(gè)樣例的測試本身除了時(shí)間消耗外沒什么難度,但在不同的測試環(huán)境下往往會(huì)得到相去甚遠(yuǎn)的測試結(jié)果,可見制作組是真的很想勸退玩家的微觀管理(法國人:差不多得嘞)。建議大家不要太過在意具體的數(shù)值精度,有個(gè)數(shù)量級(jí)的概念、再橫向比較一下數(shù)量關(guān)系就好。有能力有想法的同學(xué)也可以在此基礎(chǔ)上另行測試。

如上圖所示,我們構(gòu)建了一個(gè)3級(jí)→2級(jí)→1級(jí)→3級(jí)的結(jié)構(gòu),泵站產(chǎn)出的水會(huì)逐步向右運(yùn)輸。其中左側(cè)的3級(jí)倉庫負(fù)責(zé)塞滿2級(jí)倉庫,右側(cè)的3級(jí)倉庫負(fù)責(zé)將1級(jí)倉庫收到的水集裝箱平均放置,而2級(jí)→1級(jí)的運(yùn)輸過程是我們關(guān)心的實(shí)驗(yàn)?zāi)繕?biāo),由且僅由2級(jí)倉庫完成。
測試持續(xù)進(jìn)行,每隔150天(半年)暫停記錄右側(cè)1級(jí)與3級(jí)(合計(jì)40個(gè))倉庫的庫存,多次測量并處理后就可以得到2格距離上無人機(jī)的年運(yùn)輸量。
通過改變倉庫距離和布局,我們就可以得到所需的5個(gè)位置的運(yùn)輸量。在這個(gè)過程中,由于1級(jí)倉庫無法構(gòu)建單方運(yùn)輸、3級(jí)倉庫會(huì)和兩端的輔助倉庫互動(dòng)干擾測試流程,因此設(shè)計(jì)了如下幾種不同的結(jié)構(gòu)類型。

將我們關(guān)心的5個(gè)位置按距離命名,分別為一格、偏兩格、兩格、偏三格與三格,在本文截稿時(shí)共測取以下這些數(shù)據(jù)(在同一個(gè)地點(diǎn)、5倍速+60幀的環(huán)境下),表格中為測量得到的年運(yùn)輸量除以參與測試的無人機(jī)數(shù)量得到的每架無人機(jī)平均運(yùn)輸量:

來分析一些數(shù)量關(guān)系并進(jìn)行一些推測
入庫的運(yùn)輸量比出庫少大約20%,同時(shí)出入庫的結(jié)果接近兩者之和
按比例推測一格距離的入庫量在154左右,出庫量在192左右
(直線)直飛雖然路程上兩倍于入庫,但運(yùn)輸量非常接近
因?yàn)闇y試選取的直線構(gòu)造是所有直飛路徑中路程最遠(yuǎn)的,推測其他直飛運(yùn)輸量均在此之上
偏兩格、兩格、偏三格、三格的(直線)直飛運(yùn)輸量乘以運(yùn)輸距離(偏兩格按√3、偏三格按√7估算),乘積分別為163、172、174、174
一格、偏兩格、兩格的出入庫運(yùn)輸量乘以運(yùn)輸距離,乘積分別為171、194、200
大膽猜測,運(yùn)輸量與距離成反比,但由于無人機(jī)存在加減速過程導(dǎo)致一格與偏兩格的距離上平均速度較低從而影響運(yùn)輸量。
有用的信息暫時(shí)就這么多,如果對(duì)大家有什么啟發(fā)或者說有什么進(jìn)一步的發(fā)現(xiàn)也歡迎給我留言反饋。
中短程(多個(gè)倉庫聯(lián)動(dòng))
每個(gè)倉庫的無人機(jī)會(huì)試圖在覆蓋范圍內(nèi)所有同種類倉庫間進(jìn)行庫存均分,這在之前的單倉庫測試布局里已經(jīng)有所體現(xiàn)。均分意味著無人機(jī)們會(huì)從(覆蓋范圍內(nèi))庫存最多的倉庫往庫存最少的倉庫進(jìn)行搬運(yùn),為了避免來回搬運(yùn),只有兩個(gè)倉庫的庫存差不小于2時(shí)無人機(jī)才會(huì)行動(dòng)。
如果將多個(gè)倉庫排成一串,且兩端存在穩(wěn)定的庫存差(一端有供應(yīng)/需求),資源會(huì)在倉庫間穩(wěn)定地轉(zhuǎn)運(yùn),從供應(yīng)端流向需求端。因?yàn)閹齑娌顬?時(shí)資源不會(huì)搬運(yùn),因此倉庫的實(shí)際庫存上限會(huì)隨轉(zhuǎn)運(yùn)次數(shù)遞減,最遠(yuǎn)可以轉(zhuǎn)運(yùn)39次。
舉例而言,假設(shè)有一排倉庫,每個(gè)倉庫僅能覆蓋到前后相鄰倉庫,且僅有首個(gè)倉庫的覆蓋范圍內(nèi)存在供應(yīng)端(并稱其為最大距離倉庫鏈)。為它們依次編號(hào)(記為#1、#2、#3……)則:
#1可以儲(chǔ)存到40個(gè)上限
#2與#3可經(jīng)由#2的搬運(yùn),達(dá)到39個(gè)上限(此時(shí)與40僅相差1,#2不會(huì)繼續(xù)搬運(yùn))
#4與#5可經(jīng)由#4的搬運(yùn),達(dá)到38個(gè)上限
以此類推
#78與#79可經(jīng)由#78的搬運(yùn),達(dá)到1個(gè)上限
#80無法獲得資源
最終庫存穩(wěn)定(沒有無人機(jī)繼續(xù)搬運(yùn))的情形如下圖所示

1級(jí)倉庫有點(diǎn)特殊,測試表明它在直線排列時(shí)不會(huì)執(zhí)行直飛操作,最遠(yuǎn)只能運(yùn)送到#40

但若存在夾角,仍能執(zhí)行直飛,在足夠曲折的路徑下依然可以運(yùn)送到#79

在此基礎(chǔ)上,若#2~#80(直線型1級(jí)倉庫為#2~#41)覆蓋范圍內(nèi)存在任意需求端(供應(yīng)中心/工廠類建筑/起點(diǎn)車站等),無人機(jī)從倉庫搬運(yùn)資源滿足需求的過程就會(huì)破壞倉庫鏈的穩(wěn)定狀態(tài),構(gòu)成轉(zhuǎn)運(yùn)所需的庫存差。于是從供應(yīng)端到需求端的沿途倉庫會(huì)穩(wěn)定單向地運(yùn)輸資源,起到類似傳送帶的效果。
原則上,2/3級(jí)倉庫鏈可以在相距最遠(yuǎn)162/243格的供應(yīng)/需求端之間運(yùn)輸物資,但運(yùn)輸能力會(huì)隨鏈條長度增加而下降。需求端在#20以內(nèi)時(shí),倉庫鏈上所有無人機(jī)可以同時(shí)運(yùn)轉(zhuǎn)。對(duì)更遠(yuǎn)的需求端,倉庫鏈無法全程維持轉(zhuǎn)運(yùn)所需庫存差,因此無人機(jī)會(huì)輪流工作,降低整體運(yùn)輸量。
以2級(jí)倉庫構(gòu)成的最大距離倉庫鏈舉例,不同位置的需求端對(duì)應(yīng)年運(yùn)輸量分別為:
#20以內(nèi)約為267
#30約為236
#40約為199
#50約為156
#60約為108
#70約為82
#80約為36
密鋪的倉庫鏈可看作多個(gè)最大距離倉庫鏈并聯(lián),但會(huì)有一定程度的內(nèi)耗(本可以由A到B一步到位的運(yùn)輸變?yōu)锳到C再到B的兩步),實(shí)測密鋪2級(jí)倉庫鏈#20以內(nèi)的運(yùn)輸量在360左右,顯著小于267×2。
此外,倉庫鏈中還存在無法被搬走的下限庫存,例如你的需求端掛在#10,則#10與#9的庫存可以被#10的無人機(jī)搬空,#8與#7庫存為1時(shí)不會(huì)被搬走,#6與#5庫存為2時(shí)不會(huì)被搬走,以此類推。當(dāng)你構(gòu)建倉庫鏈時(shí)產(chǎn)出會(huì)優(yōu)先填充這部分庫存,倉庫鏈越長這部分庫存也越多,例如#30的需求端需要210的下限庫存,意味著你搭建完30個(gè)倉庫之后得過個(gè)大半年資源才能運(yùn)到需求端。
結(jié)合以上兩點(diǎn),不建議使用長度大于#20(2級(jí)倉庫40格/3級(jí)倉庫60格)的倉庫鏈,更遠(yuǎn)距離建議選擇道路運(yùn)輸。
長程(道路運(yùn)輸)
道路運(yùn)輸包括公路(卡車)與鐵路(火車),作為物流系統(tǒng)的一環(huán)似乎并不難量化,因?yàn)樗鼈冏詭н\(yùn)輸量統(tǒng)計(jì)。但值得一提的是,面板運(yùn)輸量的數(shù)字后面帶有(最大),表明它是一個(gè)上限值,并不代表實(shí)際運(yùn)輸量。

我們首先看一看這個(gè)數(shù)據(jù)是怎么計(jì)算的,然后介紹影響實(shí)際運(yùn)輸量的兩個(gè)瓶頸因素。
根據(jù)常識(shí)推測,(單輛卡車的)年運(yùn)輸量與每次運(yùn)輸耗時(shí)成反比,若耗時(shí)以天為單位計(jì),則兩者乘積即為每年的天數(shù)300.
調(diào)整面板卡車數(shù)量可知總運(yùn)輸量與其成正比,卡車數(shù)量越多,平均單車運(yùn)輸量精度越高。
建立不同距離的運(yùn)輸線路,分別測量1000輛車時(shí)的面板運(yùn)輸上限,可得以下數(shù)據(jù):

可見耗時(shí)隨距離變化的差值非常均勻,這表明面板運(yùn)輸量的計(jì)算邏輯非常簡單,即:
總運(yùn)輸量=300/(路程耗時(shí)+固定耗時(shí))*車輛數(shù)
其中路程耗時(shí)與路程成正比,固定耗時(shí)用于上下貨以及加減速階段,單位均為天。
上面的例子中,由于運(yùn)輸距離極短,1000輛車具有上萬的面板運(yùn)輸量。實(shí)際情況又如何呢?
車輛數(shù)瓶頸
在同一條運(yùn)輸線路里的車需要排隊(duì),并會(huì)根據(jù)跟車距離調(diào)整車速。當(dāng)數(shù)量過多時(shí),會(huì)因?yàn)檐囁龠^低反而降低實(shí)際運(yùn)輸量,極端情況下甚至?xí)绮诫y行。
經(jīng)過測試,面板總運(yùn)輸量到450左右時(shí),等待上貨的空車會(huì)從起點(diǎn)排到終點(diǎn),影響終點(diǎn)下貨。
面板總運(yùn)輸量達(dá)到700左右,等待卸貨的卡車會(huì)從終點(diǎn)排到起點(diǎn),于是運(yùn)輸線路會(huì)全線卡死。
車輛數(shù)瓶頸與運(yùn)輸距離無關(guān),后者只影響堵路/卡死所需的卡車數(shù)量。
上下貨瓶頸
卡車的運(yùn)輸量也受限于起/終點(diǎn)負(fù)責(zé)上貨/卸貨的倉庫,這里可能存在一個(gè)“搶單”環(huán)節(jié):當(dāng)卡車到達(dá)起點(diǎn)時(shí),起點(diǎn)需要一定的時(shí)間為其匹配某一倉庫的某臺(tái)無人機(jī),兩者確立聯(lián)系后卡車起步且無人機(jī)起飛,下一輛卡車待其出發(fā)后經(jīng)歷一個(gè)短暫的加減速過程到達(dá)起點(diǎn)等待匹配。

“搶單”環(huán)節(jié)與排隊(duì)候車兩部分所消耗的時(shí)間就會(huì)導(dǎo)致,明明有冗余的車在排隊(duì),也有冗余的無人機(jī)在待機(jī),但運(yùn)輸量就是上不去,存在一個(gè)軟上限。并且這個(gè)軟上限還會(huì)根據(jù)游戲速度以及幀率而變化,倍速越高、幀率越高,運(yùn)輸上限越低。
在60幀的環(huán)境下,1/3/5倍速的公路實(shí)際運(yùn)輸上限大約在300/180/150左右。
火車的情況稍有不同,由于一輛火車有30個(gè)倉位,當(dāng)火車頭到達(dá)起點(diǎn)時(shí),起點(diǎn)會(huì)為其匹配30架次的無人機(jī)運(yùn)輸,期間火車會(huì)緩慢前行,直至倉位塞滿或車尾離開起點(diǎn)后開始加速。因此,火車的上下貨瓶頸更多地體現(xiàn)在無人機(jī)的運(yùn)輸效率上。
注意到火車面板運(yùn)輸量是定值,不隨倉庫距離/數(shù)量改變,說明在計(jì)算面板值時(shí)所用的過站時(shí)間也是定值,若實(shí)際過站時(shí)間短于這個(gè)值,則實(shí)際運(yùn)輸量會(huì)高于面板值,此時(shí)面板上的(最大)名不副實(shí)。

通過在起終點(diǎn)附近放置不少于8個(gè)3級(jí)倉庫,確保同時(shí)滿足30架次的無人機(jī)運(yùn)輸從而盡量減少火車低速過站的時(shí)間,1/3/5倍速的鐵路實(shí)際運(yùn)輸上限大約在每年54/51/43車,即1620/1530/1290左右。

本文由于測試數(shù)據(jù)非常費(fèi)時(shí)且相當(dāng)枯燥,從開題到結(jié)題拖了有近兩個(gè)月,收尾也略有些倉促。
感謝大家看到這里,希望能對(duì)大家的游戲體驗(yàn)有所幫助。