看到《锯下七行》活动的规则那一刻,我就觉得它是一个比较适合用强化学习求优解的游戏,毕竟它有明确的选项(选哪个庇护所,是否募捐)、明确的目标(每日存活+10金币),以及明确的惩罚(被暴徒攻击掉血挂掉),所以在gpt同志的鼎力协助下完成了此游戏流程的编码,然后用一个神经网络作为村民的决策智能体,以(当前日数、当前血量、当前金钱)作为输入,以8维向量输出,前7维决定避难所的选择,最后一维决定是否捐赠,再尝试用强化学习(基础的Q-Learning)求其最优解。
当然,我并没有做完全的复现,因为:
1.水晶日报社实质上被当成了公爵之墓二号,因为其效果实在难以量化,但实际上其揭露的设定又很会吸引人
2.电锯人的攻击逻辑是随机选两个,但实际情况似乎是有一定的自主性的
所以结果很不保真,实际上也是如此,在不多的训练轮次里,存活人数并未收敛(设置初始100人)。理论上智能体的决策会先上升到较高位置,再高度趋同导致被刺客一锅端才对(笑)
训练轮次: 0 ,存活人数: 28
训练轮次: 1 ,存活人数: 36
训练轮次: 2 ,存活人数: 38
训练轮次: 3 ,存活人数: 23
训练轮次: 4 ,存活人数: 35
训练轮次: 5 ,存活人数: 48
训练轮次: 6 ,存活人数: 50
训练轮次: 7 ,存活人数: 36
训练轮次: 8 ,存活人数: 45
训练轮次: 9 ,存活人数: 36
训练轮次: 10 ,存活人数: 38
训练轮次: 11 ,存活人数: 27
训练轮次: 12 ,存活人数: 43
训练轮次: 13 ,存活人数: 30
训练轮次: 14 ,存活人数: 44
训练轮次: 15 ,存活人数: 31
训练轮次: 16 ,存活人数: 36
训练轮次: 17 ,存活人数: 39
训练轮次: 18 ,存活人数: 32
训练轮次: 19 ,存活人数: 28
|
也许是学习超参数设的不好,不过个人不太想继续做了,有bug也不想修了,毕竟休息日也写代码是很累的事情,除非有朋友能献上肌肉兽人本子,触手TK题材或以阿努比斯为主角的就更好了,嗯。
然后是训练完成后的所有存活村民的决策,虽然并未收敛,但也许其中的某一条说不定就是你的求生参考路径呢(笑)。
由于python的数组起始于0,所以为0的实际上为1,例如shelter_choice: 4, donate_choice: 1 表示选了第5个庇护所(【5】幸存者营地),已捐赠。
生存者 - 生命值: 2, 金钱: 0, 存活天数: 7
第 1 天:shelter_choice: 3, donate_choice: 1
第 2 天:shelter_choice: 4, donate_choice: 0
第 3 天:shelter_choice: 1, donate_choice: 1
第 4 天:shelter_choice: 0, donate_choice: 0
第 5 天:shelter_choice: 4, donate_choice: 0
第 6 天:shelter_choice: 4, donate_choice: 0
第 7 天:shelter_choice: 2, donate_choice: 1
生存者 - 生命值: 1, 金钱: 2, 存活天数: 7
第 1 天:shelter_choice: 3, donate_choice: 1
第 2 天:shelter_choice: 3, donate_choice: 0
第 3 天:shelter_choice: 0, donate_choice: 0
第 4 天:shelter_choice: 6, donate_choice: 0
第 5 天:shelter_choice: 2, donate_choice: 1
第 6 天:shelter_choice: 6, donate_choice: 1
第 7 天:shelter_choice: 4, donate_choice: 1
生存者 - 生命值: 3, 金钱: 1, 存活天数: 7
第 1 天:shelter_choice: 0, donate_choice: 0
第 2 天:shelter_choice: 0, donate_choice: 1
第 3 天:shelter_choice: 0, donate_choice: 0
第 4 天:shelter_choice: 5, donate_choice: 1
第 5 天:shelter_choice: 3, donate_choice: 1
第 6 天:shelter_choice: 2, donate_choice: 0
第 7 天:shelter_choice: 2, donate_choice: 0
生存者 - 生命值: 1, 金钱: 2, 存活天数: 7
第 1 天:shelter_choice: 2, donate_choice: 0
第 2 天:shelter_choice: 5, donate_choice: 0
第 3 天:shelter_choice: 0, donate_choice: 0
第 4 天:shelter_choice: 3, donate_choice: 0
第 5 天:shelter_choice: 2, donate_choice: 0
第 6 天:shelter_choice: 4, donate_choice: 0
第 7 天:shelter_choice: 1, donate_choice: 0
生存者 - 生命值: 1, 金钱: 0, 存活天数: 7
第 1 天:shelter_choice: 6, donate_choice: 0
第 2 天:shelter_choice: 3, donate_choice: 1
第 3 天:shelter_choice: 3, donate_choice: 1
第 4 天:shelter_choice: 1, donate_choice: 1
第 5 天:shelter_choice: 2, donate_choice: 1
第 6 天:shelter_choice: 0, donate_choice: 1
第 7 天:shelter_choice: 0, donate_choice: 1
生存者 - 生命值: 2, 金钱: 2, 存活天数: 7
第 1 天:shelter_choice: 3, donate_choice: 0
第 2 天:shelter_choice: 1, donate_choice: 1
第 3 天:shelter_choice: 2, donate_choice: 0
第 4 天:shelter_choice: 5, donate_choice: 0
第 5 天:shelter_choice: 4, donate_choice: 0
第 6 天:shelter_choice: 0, donate_choice: 0
第 7 天:shelter_choice: 6, donate_choice: 0
生存者 - 生命值: 1, 金钱: 0, 存活天数: 7
第 1 天:shelter_choice: 3, donate_choice: 1
第 2 天:shelter_choice: 4, donate_choice: 0
第 3 天:shelter_choice: 1, donate_choice: 1
第 4 天:shelter_choice: 4, donate_choice: 0
第 5 天:shelter_choice: 6, donate_choice: 1
第 6 天:shelter_choice: 5, donate_choice: 0
第 7 天:shelter_choice: 1, donate_choice: 1
生存者 - 生命值: 1, 金钱: 1, 存活天数: 7
第 1 天:shelter_choice: 3, donate_choice: 0
第 2 天:shelter_choice: 2, donate_choice: 0
第 3 天:shelter_choice: 6, donate_choice: 0
第 4 天:shelter_choice: 6, donate_choice: 0
第 5 天:shelter_choice: 6, donate_choice: 0
第 6 天:shelter_choice: 3, donate_choice: 0
第 7 天:shelter_choice: 3, donate_choice: 0
生存者 - 生命值: 4, 金钱: 0, 存活天数: 7
第 1 天:shelter_choice: 3, donate_choice: 0
第 2 天:shelter_choice: 5, donate_choice: 1
第 3 天:shelter_choice: 3, donate_choice: 1
第 4 天:shelter_choice: 0, donate_choice: 1
第 5 天:shelter_choice: 1, donate_choice: 1
第 6 天:shelter_choice: 1, donate_choice: 1
第 7 天:shelter_choice: 2, donate_choice: 0
生存者 - 生命值: 2, 金钱: 0, 存活天数: 7
第 1 天:shelter_choice: 1, donate_choice: 0
第 2 天:shelter_choice: 6, donate_choice: 1
第 3 天:shelter_choice: 2, donate_choice: 0
第 4 天:shelter_choice: 6, donate_choice: 1
第 5 天:shelter_choice: 2, donate_choice: 0
第 6 天:shelter_choice: 3, donate_choice: 1
第 7 天:shelter_choice: 5, donate_choice: 1
生存者 - 生命值: 1, 金钱: 0, 存活天数: 7
第 1 天:shelter_choice: 4, donate_choice: 1
第 2 天:shelter_choice: 5, donate_choice: 0
第 3 天:shelter_choice: 5, donate_choice: 0
第 4 天:shelter_choice: 3, donate_choice: 1
第 5 天:shelter_choice: 2, donate_choice: 0
第 6 天:shelter_choice: 4, donate_choice: 0
第 7 天:shelter_choice: 6, donate_choice: 0
生存者 - 生命值: 4, 金钱: 0, 存活天数: 7
第 1 天:shelter_choice: 1, donate_choice: 1
第 2 天:shelter_choice: 5, donate_choice: 1
第 3 天:shelter_choice: 0, donate_choice: 0
第 4 天:shelter_choice: 4, donate_choice: 0
第 5 天:shelter_choice: 4, donate_choice: 0
第 6 天:shelter_choice: 5, donate_choice: 1
第 7 天:shelter_choice: 5, donate_choice: 1
生存者 - 生命值: 1, 金钱: 0, 存活天数: 7
第 1 天:shelter_choice: 6, donate_choice: 0
第 2 天:shelter_choice: 0, donate_choice: 1
第 3 天:shelter_choice: 5, donate_choice: 0
第 4 天:shelter_choice: 3, donate_choice: 1
第 5 天:shelter_choice: 5, donate_choice: 0
第 6 天:shelter_choice: 3, donate_choice: 0
第 7 天:shelter_choice: 0, donate_choice: 0
生存者 - 生命值: 3, 金钱: 1, 存活天数: 7
第 1 天:shelter_choice: 1, donate_choice: 0
第 2 天:shelter_choice: 6, donate_choice: 0
第 3 天:shelter_choice: 4, donate_choice: 1
第 4 天:shelter_choice: 6, donate_choice: 0
第 5 天:shelter_choice: 0, donate_choice: 1
第 6 天:shelter_choice: 4, donate_choice: 0
第 7 天:shelter_choice: 4, donate_choice: 1
生存者 - 生命值: 1, 金钱: 0, 存活天数: 7
第 1 天:shelter_choice: 3, donate_choice: 0
第 2 天:shelter_choice: 5, donate_choice: 0
第 3 天:shelter_choice: 5, donate_choice: 0
第 4 天:shelter_choice: 6, donate_choice: 0
第 5 天:shelter_choice: 0, donate_choice: 0
第 6 天:shelter_choice: 4, donate_choice: 0
第 7 天:shelter_choice: 4, donate_choice: 1
生存者 - 生命值: 1, 金钱: 0, 存活天数: 7
第 1 天:shelter_choice: 0, donate_choice: 0
第 2 天:shelter_choice: 5, donate_choice: 1
第 3 天:shelter_choice: 6, donate_choice: 0
第 4 天:shelter_choice: 6, donate_choice: 0
第 5 天:shelter_choice: 3, donate_choice: 0
第 6 天:shelter_choice: 3, donate_choice: 1
第 7 天:shelter_choice: 1, donate_choice: 0
生存者 - 生命值: 1, 金钱: 0, 存活天数: 7
第 1 天:shelter_choice: 1, donate_choice: 1
第 2 天:shelter_choice: 0, donate_choice: 1
第 3 天:shelter_choice: 5, donate_choice: 0
第 4 天:shelter_choice: 4, donate_choice: 0
第 5 天:shelter_choice: 4, donate_choice: 1
第 6 天:shelter_choice: 0, donate_choice: 1
第 7 天:shelter_choice: 2, donate_choice: 1
生存者 - 生命值: 2, 金钱: 1, 存活天数: 7
第 1 天:shelter_choice: 2, donate_choice: 0
第 2 天:shelter_choice: 3, donate_choice: 1
第 3 天:shelter_choice: 2, donate_choice: 0
第 4 天:shelter_choice: 1, donate_choice: 1
第 5 天:shelter_choice: 6, donate_choice: 0
第 6 天:shelter_choice: 2, donate_choice: 0
第 7 天:shelter_choice: 1, donate_choice: 1
生存者 - 生命值: 1, 金钱: 0, 存活天数: 7
第 1 天:shelter_choice: 5, donate_choice: 0
第 2 天:shelter_choice: 3, donate_choice: 1
第 3 天:shelter_choice: 3, donate_choice: 1
第 4 天:shelter_choice: 4, donate_choice: 0
第 5 天:shelter_choice: 1, donate_choice: 0
第 6 天:shelter_choice: 4, donate_choice: 1
第 7 天:shelter_choice: 3, donate_choice: 0
生存者 - 生命值: 2, 金钱: 0, 存活天数: 7
第 1 天:shelter_choice: 2, donate_choice: 0
第 2 天:shelter_choice: 2, donate_choice: 1
第 3 天:shelter_choice: 0, donate_choice: 0
第 4 天:shelter_choice: 0, donate_choice: 1
第 5 天:shelter_choice: 3, donate_choice: 0
第 6 天:shelter_choice: 5, donate_choice: 1
第 7 天:shelter_choice: 2, donate_choice: 1
生存者 - 生命值: 2, 金钱: 0, 存活天数: 7
第 1 天:shelter_choice: 1, donate_choice: 1
第 2 天:shelter_choice: 3, donate_choice: 0
第 3 天:shelter_choice: 5, donate_choice: 0
第 4 天:shelter_choice: 4, donate_choice: 0
第 5 天:shelter_choice: 2, donate_choice: 1
第 6 天:shelter_choice: 2, donate_choice: 1
第 7 天:shelter_choice: 1, donate_choice: 0
生存者 - 生命值: 3, 金钱: 0, 存活天数: 7
第 1 天:shelter_choice: 1, donate_choice: 1
第 2 天:shelter_choice: 4, donate_choice: 1
第 3 天:shelter_choice: 2, donate_choice: 1
第 4 天:shelter_choice: 6, donate_choice: 0
第 5 天:shelter_choice: 2, donate_choice: 1
第 6 天:shelter_choice: 2, donate_choice: 1
第 7 天:shelter_choice: 5, donate_choice: 0
生存者 - 生命值: 3, 金钱: 0, 存活天数: 7
第 1 天:shelter_choice: 2, donate_choice: 1
第 2 天:shelter_choice: 1, donate_choice: 1
第 3 天:shelter_choice: 2, donate_choice: 0
第 4 天:shelter_choice: 3, donate_choice: 0
第 5 天:shelter_choice: 1, donate_choice: 1
第 6 天:shelter_choice: 5, donate_choice: 0
第 7 天:shelter_choice: 1, donate_choice: 1
生存者 - 生命值: 1, 金钱: 2, 存活天数: 7
第 1 天:shelter_choice: 4, donate_choice: 0
第 2 天:shelter_choice: 6, donate_choice: 0
第 3 天:shelter_choice: 4, donate_choice: 0
第 4 天:shelter_choice: 0, donate_choice: 0
第 5 天:shelter_choice: 2, donate_choice: 1
第 6 天:shelter_choice: 0, donate_choice: 1
第 7 天:shelter_choice: 1, donate_choice: 1
生存者 - 生命值: 2, 金钱: 1, 存活天数: 7
第 1 天:shelter_choice: 5, donate_choice: 0
第 2 天:shelter_choice: 2, donate_choice: 0
第 3 天:shelter_choice: 5, donate_choice: 0
第 4 天:shelter_choice: 3, donate_choice: 1
第 5 天:shelter_choice: 5, donate_choice: 1
第 6 天:shelter_choice: 1, donate_choice: 1
第 7 天:shelter_choice: 3, donate_choice: 0
生存者 - 生命值: 1, 金钱: 1, 存活天数: 7
第 1 天:shelter_choice: 4, donate_choice: 0
第 2 天:shelter_choice: 3, donate_choice: 1
第 3 天:shelter_choice: 3, donate_choice: 0
第 4 天:shelter_choice: 1, donate_choice: 0
第 5 天:shelter_choice: 1, donate_choice: 1
第 6 天:shelter_choice: 1, donate_choice: 0
第 7 天:shelter_choice: 3, donate_choice: 1
生存者 - 生命值: 2, 金钱: 1, 存活天数: 7
第 1 天:shelter_choice: 3, donate_choice: 1
第 2 天:shelter_choice: 5, donate_choice: 0
第 3 天:shelter_choice: 0, donate_choice: 0
第 4 天:shelter_choice: 3, donate_choice: 1
第 5 天:shelter_choice: 3, donate_choice: 0
第 6 天:shelter_choice: 4, donate_choice: 1
第 7 天:shelter_choice: 1, donate_choice: 1
生存者 - 生命值: 2, 金钱: 2, 存活天数: 7
第 1 天:shelter_choice: 6, donate_choice: 1
第 2 天:shelter_choice: 5, donate_choice: 0
第 3 天:shelter_choice: 4, donate_choice: 0
第 4 天:shelter_choice: 5, donate_choice: 0
第 5 天:shelter_choice: 4, donate_choice: 0
第 6 天:shelter_choice: 1, donate_choice: 0
第 7 天:shelter_choice: 0, donate_choice: 1
|
只能说多去公爵之墓是真的有用。
对了,当你看到上面这句话时,暴徒们多半也看到了,所以上面这句话作废(笑)。
最后附上全部代码放在了附件之中,约400行,也不算少了hh
|