文明模拟

  Civilization Simulation

  这是我一个GitHub项目(Node.JS项目,暂时不做前台UI)的名字,地址在:https://github.com/LostAbaddon/Civilization

  顾名思义,就是模拟文明。

  准确地说来,是模拟一个文明会被随机产生的宇宙中,各文明的演化情况。

  听着很有趣是不是?


  这个宇宙的规则,是这样的:

  0,宇宙是三维的,具有固定的长宽高,而且是循环的——也就是你走到左的头,再走,就从右的头冒出来了;

  1,宇宙每个纪年都会以一定的概率产生一个新的文明;

  2,新文明会具有唯一的ID号,以及随机出现在宇宙的一个固定位置上;

  3,每个文明初始都会被赋予一定的属性,包括:

  a,是否在遇到新文明时告知对方自己的存在;

  b,是否对已探索到的文明发动攻击;

  c,是否帮助比自己弱的文明;

  d,遭到攻击后是否反击;

  e,遭到攻击后是否隐藏自己。

  4,每个文明都有文明值和已探索区域,且:

  4.1,文明的发展速度依赖于当前即得文明值,以及距离文明最大值的差距;

  4.2,文明已探索区域半径的增值,依赖于文明值和已探索区域半径平方的倒数(因为三维空间中,新增是以球面推进的);

  5,当文明A探索到文明B,则文明B进入文明A的“已知文明列表”。如果文明A主动告诉文明B自己的存在,那么文明B进入文明A的“安全列表”,因此告知对方自己的存在也就意味着信任对方。此后,A会将B的存在告诉A所有信任的文明(这点其实很关键哦,扩大朋友圈,玩SNS和SEO的人都知道有多重要!);

  6,如果文明A遭到文明B的攻击,那么文明A会遭受文明值的损失,损失程度相当于文明B的文明值乘上一个系数,并且A会将B从信任列表中取出;如果文明A受到文明B的援助,那么文明A会增加文明值,增加程度相当于两个文明的文明值的差,以及文明A距离文明最大值的差异,再乘上一个系数,并且A会将B加入到信任列表;

  7,如果文明A遭到攻击,那么文明A会按照自己的政策决定是否反击或者隐藏自己。如果选择隐藏自己,那么将从所有已探索到A的文明的已知文明列表和安全列表中移除,当然别人可以再度发现他们;

  8,如果A遭到B攻击,那么所有信任A的文明可以决定是否给予帮助,以及,是否攻击B作为复仇;

  9,每个纪年的结束,所有文明都会根据这一个纪年遭到攻击和帮助的情况,决定自己政策的改变:如果遭到的攻击较多,则有一定的几率变成主动进攻型文明并不再宣告自己存在;如果受到的援助较多,则有一定的几率变成帮助弱者文明并主动宣告自己存在;如果帮助他人的程度比受到的帮助多,则有一定几率停止帮助他人。


  上面是这个模拟的主要规则,下面是一些统计分析。

  在终端运行模拟程序的时候,每个纪元(默认是25个纪年为一个纪元)都会有一行显示(建议在Win下把终端的宽度拉到很大),X表示所有文明的平均探索范围,0表示所有文明的平均文明值。尾数第一个是当前纪元,第二组数字是存活文明数/总文明数,第三组是平均信任文明数/平均探知文明数,第四组是主动进攻者、帮助弱小者和主动宣示者的数量,最后一组是纪元最后一年的战斗次数和援助次数。

  在运行结束后,会有>>提示符,此下可以输入命令,包括:

  1,quit:退出

  2,dead:显示死亡文明统计信息

  3,new:显示每个统计时段新生文明数图

  4,die:显示每个统计时段死亡文明数图

  5,live:显示每个统计时段存活文明数图

  6,civ:显示每个统计时段平均文明值数图

  7,exp:显示每个统计时段平均探索半径数图

  8,found:显示每个统计时段平均探知文明数数图

  9,ally:显示每个统计时段平均信任文明数数图

  10,atck:显示每个统计时段平均主动攻击者数数图

  11,help:显示每个统计时段平均帮助弱者数数图

  12,show:显示每个统计时段平均主动宣示者数数图

  13,war:显示每个统计时段平均战斗数数图

  14,warP:显示每个统计时段平均战斗总伤害值数图

  15,hlp:显示每个统计时段平均援助数数图

  16,hlpP:显示每个统计时段平均援助总值数图

  17,restart:重新开始一次模拟

  18,set xxx=xxx:设置参数:

  18.1, era=x:设置统计时段为几个纪年


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

  以200个纪元,每个纪元50个纪年这样的程度来做统计,我们发现,演化到最后,主动攻击者死光了,所有人几乎都结成同盟,也即相互信任

  这个结果很让人兴奋是吧?

  但,如果认真分析上面的规则,我们发现这个结果是规则的必然,而规则是有问题的。

  在上述规则上,假定我们有三个攻击者ABC和三个非攻击者XYZ。

  我们发现,攻击者主动攻击,那么ABC就不可能和XYZ达成信任关系,ABC也不可能在内部达成信任关系——因为我们没有“战斗同盟”这个概念,也就是说,目前的不存在文明联盟,只存在较弱的文明邦联。

  而后,XYZ是非攻击者,他们之间有一定的概率形成信任关系,从而形成三人小团体——邦联。

  接着,ABC有一定的概率攻击XYZ,而XYZ会相互援助,最后的结果就是XYZ受到的攻击最多和受到的援助持平。而XYZ会反击,这就是说,ABC攻击任何一个人,都会遭到三个人的反击——而ABC还会相互攻击。更要命的是,ABC不会受到任何援助。

  这就是说,就平均来说,攻击者受到的攻击反而更大,而几乎不会得到援助。

  因此,主动攻击者所面对的,其实是和一个抱团的团伙伙并——

  XYZ说你是要单挑还是群殴?单挑是你一个单挑我们一伙,群殴是我们一伙群殴你一个。

  因此,主动攻击者被灭就很正常了。

  而对于新加入这M来说,一样的,受到的攻击比受到的援助要小——援助弱者嘛,新加入的M一定是弱者——所以M很快就和XYZ抱团取暖了。

  这就看到另一个更严重的问题——现在的规则中,不存在使文明主动变成攻击者的“激励机制”,只有被攻击后被迫转型的“被动机制”。而对援助弱者文明来说,正如上面所说,后者的动力是非常巨大的。

  所以,在现有规则下,黑暗森林的不会出现就是必然了。

  但,很显然,这样的规则是有问题的。

  在实际宇宙中,由于资源紧缺的压力,文明会掠夺他人,但这点在现有规则中无法被体现出来。而且文明之间的猜疑链也无法被体现——更不说科技爆炸对猜疑链的加成。文明之间复杂的政治博弈也无法被体现。甚至,现在的政策改变记住也和实际脱离很远。

  因此,现在的模拟,只能认为是不考虑资源压力,大家都不玩高级政治手腕也无猜疑心的弱智文明在天堂里的博弈——既然如此,出现攻击者被援助者团灭的情况也就很自然了。


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

  目前打算做的,包括增加星球这个概念——每个星球上都是有资源的。

  而文明的文明最大值,则和他所占有的星球的资源总量相关。文明越是接近资源饱和,就越是呈现攻击性。

  另一个修正,就是会将探索范围分解为“探知文明存在范围”和“攻击范围”。而对于攻击的政策也会做出调整。

  政策方面,会适当引入更复杂的决策机制——不过这个要用算法表达出来其实很麻烦,关键是越复杂的政策,运行速度越慢,我会很不爽的。


  好吧,就这样了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,378评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,356评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,702评论 0 342
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,259评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,263评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,036评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,349评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,979评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,469评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,938评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,059评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,703评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,257评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,262评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,485评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,501评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,792评论 2 345

推荐阅读更多精彩内容

  • 8月8日凌晨,由天云网络出品,后院花语咖啡馆联合出品的王珂然翻唱版《其实》Mv正式发行。由洪伟导演指导拍摄,他对于...
    江云帆工作室阅读 411评论 0 0
  • 我们专业课的一位老师说,只有当你功成名就之后,才会去看望你的老师!我当时就想了想自己,不管是任何一次同学,老师的聚...
    骊山雨半阅读 441评论 4 1
  • 十几天前,飞机降落在上海,我坐在机场大巴上,看着窗外土黄的阳光穿过似乎带着细沙的空气照在玻璃上,慢慢散开光晕去,心...
    壬捷阅读 237评论 0 1
  • 人嘛,做事情总喜欢有仪式感,这样呢也就是有了一个好的开头。这篇文章就是仪式性的。 2017年,是一个宁做鸡头不做凤...
    泥_叔阅读 1,405评论 4 0
  • 这就是命吧,不早不晚,恰恰就是你 十六年前,我还是个不谙世事的少女,拥有着衣来伸手饭来张口的权利,有着说走就走的勇...
    亮晶晶小盆友阅读 268评论 0 3