文明模擬

  Civilization Simulation

  這是我一個GitHub項目(Node.JS項目,暫時不做前臺UI)的名字,地址在:https://github.com/LostAbaddon/Civilization。

  顧名思義,就是模擬文明。

  準(zhǔn)確地說來,是模擬一個文明會被隨機產(chǎn)生的宇宙中,各文明的演化情況。

  聽著很有趣是不是?


  這個宇宙的規(guī)則,是這樣的:

 ?。?,宇宙是三維的,具有固定的長寬高,而且是循環(huán)的——也就是你走到左的頭,再走,就從右的頭冒出來了;

 ?。?,宇宙每個紀(jì)年都會以一定的概率產(chǎn)生一個新的文明;

 ?。玻挛拿鲿哂形ㄒ坏腎D號,以及隨機出現(xiàn)在宇宙的一個固定位置上;

 ?。?,每個文明初始都會被賦予一定的屬性,包括:

 ?。?,是否在遇到新文明時告知對方自己的存在;

 ?。?,是否對已探索到的文明發(fā)動攻擊;

 ?。?,是否幫助比自己弱的文明;

 ?。洌獾焦艉笫欠穹磽?;

  e,遭到攻擊后是否隱藏自己。

 ?。?,每個文明都有文明值和已探索區(qū)域,且:

  4.1,文明的發(fā)展速度依賴于當(dāng)前即得文明值,以及距離文明最大值的差距;

 ?。?2,文明已探索區(qū)域半徑的增值,依賴于文明值和已探索區(qū)域半徑平方的倒數(shù)(因為三維空間中,新增是以球面推進的);

  5,當(dāng)文明A探索到文明B,則文明B進入文明A的“已知文明列表”。如果文明A主動告訴文明B自己的存在,那么文明B進入文明A的“安全列表”,因此告知對方自己的存在也就意味著信任對方。此后,A會將B的存在告訴A所有信任的文明(這點其實很關(guān)鍵哦,擴大朋友圈,玩SNS和SEO的人都知道有多重要!);

  6,如果文明A遭到文明B的攻擊,那么文明A會遭受文明值的損失,損失程度相當(dāng)于文明B的文明值乘上一個系數(shù),并且A會將B從信任列表中取出;如果文明A受到文明B的援助,那么文明A會增加文明值,增加程度相當(dāng)于兩個文明的文明值的差,以及文明A距離文明最大值的差異,再乘上一個系數(shù),并且A會將B加入到信任列表;

  7,如果文明A遭到攻擊,那么文明A會按照自己的政策決定是否反擊或者隱藏自己。如果選擇隱藏自己,那么將從所有已探索到A的文明的已知文明列表和安全列表中移除,當(dāng)然別人可以再度發(fā)現(xiàn)他們;

  8,如果A遭到B攻擊,那么所有信任A的文明可以決定是否給予幫助,以及,是否攻擊B作為復(fù)仇;

 ?。?,每個紀(jì)年的結(jié)束,所有文明都會根據(jù)這一個紀(jì)年遭到攻擊和幫助的情況,決定自己政策的改變:如果遭到的攻擊較多,則有一定的幾率變成主動進攻型文明并不再宣告自己存在;如果受到的援助較多,則有一定的幾率變成幫助弱者文明并主動宣告自己存在;如果幫助他人的程度比受到的幫助多,則有一定幾率停止幫助他人。


  上面是這個模擬的主要規(guī)則,下面是一些統(tǒng)計分析。

  在終端運行模擬程序的時候,每個紀(jì)元(默認(rèn)是25個紀(jì)年為一個紀(jì)元)都會有一行顯示(建議在Win下把終端的寬度拉到很大),X表示所有文明的平均探索范圍,0表示所有文明的平均文明值。尾數(shù)第一個是當(dāng)前紀(jì)元,第二組數(shù)字是存活文明數(shù)/總文明數(shù),第三組是平均信任文明數(shù)/平均探知文明數(shù),第四組是主動進攻者、幫助弱小者和主動宣示者的數(shù)量,最后一組是紀(jì)元最后一年的戰(zhàn)斗次數(shù)和援助次數(shù)。

  在運行結(jié)束后,會有>>提示符,此下可以輸入命令,包括:

  1,quit:退出

  2,dead:顯示死亡文明統(tǒng)計信息

  3,new:顯示每個統(tǒng)計時段新生文明數(shù)圖

  4,die:顯示每個統(tǒng)計時段死亡文明數(shù)圖

  5,live:顯示每個統(tǒng)計時段存活文明數(shù)圖

  6,civ:顯示每個統(tǒng)計時段平均文明值數(shù)圖

  7,exp:顯示每個統(tǒng)計時段平均探索半徑數(shù)圖

  8,found:顯示每個統(tǒng)計時段平均探知文明數(shù)數(shù)圖

  9,ally:顯示每個統(tǒng)計時段平均信任文明數(shù)數(shù)圖

  10,atck:顯示每個統(tǒng)計時段平均主動攻擊者數(shù)數(shù)圖

  11,help:顯示每個統(tǒng)計時段平均幫助弱者數(shù)數(shù)圖

  12,show:顯示每個統(tǒng)計時段平均主動宣示者數(shù)數(shù)圖

  13,war:顯示每個統(tǒng)計時段平均戰(zhàn)斗數(shù)數(shù)圖

  14,warP:顯示每個統(tǒng)計時段平均戰(zhàn)斗總傷害值數(shù)圖

  15,hlp:顯示每個統(tǒng)計時段平均援助數(shù)數(shù)圖

  16,hlpP:顯示每個統(tǒng)計時段平均援助總值數(shù)圖

  17,restart:重新開始一次模擬

  18,set xxx=xxx:設(shè)置參數(shù):

  18.1, era=x:設(shè)置統(tǒng)計時段為幾個紀(jì)年


  上面就是可用的命令,下面是一些簡單的分析。

  以200個紀(jì)元,每個紀(jì)元50個紀(jì)年這樣的程度來做統(tǒng)計,我們發(fā)現(xiàn),演化到最后,主動攻擊者死光了,所有人幾乎都結(jié)成同盟,也即相互信任。

  這個結(jié)果很讓人興奮是吧?

  但,如果認(rèn)真分析上面的規(guī)則,我們發(fā)現(xiàn)這個結(jié)果是規(guī)則的必然,而規(guī)則是有問題的。

  在上述規(guī)則上,假定我們有三個攻擊者ABC和三個非攻擊者XYZ。

  我們發(fā)現(xiàn),攻擊者主動攻擊,那么ABC就不可能和XYZ達成信任關(guān)系,ABC也不可能在內(nèi)部達成信任關(guān)系——因為我們沒有“戰(zhàn)斗同盟”這個概念,也就是說,目前的不存在文明聯(lián)盟,只存在較弱的文明邦聯(lián)。

  而后,XYZ是非攻擊者,他們之間有一定的概率形成信任關(guān)系,從而形成三人小團體——邦聯(lián)。

  接著,ABC有一定的概率攻擊XYZ,而XYZ會相互援助,最后的結(jié)果就是XYZ受到的攻擊最多和受到的援助持平。而XYZ會反擊,這就是說,ABC攻擊任何一個人,都會遭到三個人的反擊——而ABC還會相互攻擊。更要命的是,ABC不會受到任何援助。

  這就是說,就平均來說,攻擊者受到的攻擊反而更大,而幾乎不會得到援助。

  因此,主動攻擊者所面對的,其實是和一個抱團的團伙伙并——

  XYZ說你是要單挑還是群毆?單挑是你一個單挑我們一伙,群毆是我們一伙群毆你一個。

  因此,主動攻擊者被滅就很正常了。

  而對于新加入這M來說,一樣的,受到的攻擊比受到的援助要小——援助弱者嘛,新加入的M一定是弱者——所以M很快就和XYZ抱團取暖了。

  這就看到另一個更嚴(yán)重的問題——現(xiàn)在的規(guī)則中,不存在使文明主動變成攻擊者的“激勵機制”,只有被攻擊后被迫轉(zhuǎn)型的“被動機制”。而對援助弱者文明來說,正如上面所說,后者的動力是非常巨大的。

  所以,在現(xiàn)有規(guī)則下,黑暗森林的不會出現(xiàn)就是必然了。

  但,很顯然,這樣的規(guī)則是有問題的。

  在實際宇宙中,由于資源緊缺的壓力,文明會掠奪他人,但這點在現(xiàn)有規(guī)則中無法被體現(xiàn)出來。而且文明之間的猜疑鏈也無法被體現(xiàn)——更不說科技爆炸對猜疑鏈的加成。文明之間復(fù)雜的政治博弈也無法被體現(xiàn)。甚至,現(xiàn)在的政策改變記住也和實際脫離很遠(yuǎn)。

  因此,現(xiàn)在的模擬,只能認(rèn)為是不考慮資源壓力,大家都不玩高級政治手腕也無猜疑心的弱智文明在天堂里的博弈——既然如此,出現(xiàn)攻擊者被援助者團滅的情況也就很自然了。


  我會在下一個版本中逐步加入對上面提到的缺陷的修正,希望可以得到更好的文明博弈的模擬。

  目前打算做的,包括增加星球這個概念——每個星球上都是有資源的。

  而文明的文明最大值,則和他所占有的星球的資源總量相關(guān)。文明越是接近資源飽和,就越是呈現(xiàn)攻擊性。

  另一個修正,就是會將探索范圍分解為“探知文明存在范圍”和“攻擊范圍”。而對于攻擊的政策也會做出調(diào)整。

  政策方面,會適當(dāng)引入更復(fù)雜的決策機制——不過這個要用算法表達出來其實很麻煩,關(guān)鍵是越復(fù)雜的政策,運行速度越慢,我會很不爽的。


  好吧,就這樣了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

  • 8月8日凌晨,由天云網(wǎng)絡(luò)出品,后院花語咖啡館聯(lián)合出品的王珂然翻唱版《其實》Mv正式發(fā)行。由洪偉導(dǎo)演指導(dǎo)拍攝,他對于...
    江云帆工作室閱讀 547評論 0 0
  • 我們專業(yè)課的一位老師說,只有當(dāng)你功成名就之后,才會去看望你的老師!我當(dāng)時就想了想自己,不管是任何一次同學(xué),老師的聚...
    驪山雨半閱讀 523評論 4 1
  • 十幾天前,飛機降落在上海,我坐在機場大巴上,看著窗外土黃的陽光穿過似乎帶著細(xì)沙的空氣照在玻璃上,慢慢散開光暈去,心...
    壬捷閱讀 333評論 0 1
  • 人嘛,做事情總喜歡有儀式感,這樣呢也就是有了一個好的開頭。這篇文章就是儀式性的。 2017年,是一個寧做雞頭不做鳳...
    泥_叔閱讀 1,458評論 4 0
  • 這就是命吧,不早不晚,恰恰就是你 十六年前,我還是個不諳世事的少女,擁有著衣來伸手飯來張口的權(quán)利,有著說走就走的勇...
    亮晶晶小盆友閱讀 330評論 0 3

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