
182
|
第
12
章
12.9 练习
本章的代码位于本书代码库中的 Jupyter 笔记本 chap12.ipynb 中。打开笔
记本,阅读代码,然后运行。你可以使用此笔记本进行以下练习。我的解决
方案在 chap12soln.ipynb 中。有关使用此代码的详细信息,请参阅前言
中的“使用代码”一节。
练习 12-1
本章的模拟依赖于我通常选择的条件和参数。作为练习,我鼓励你探索
其他条件,看看它们对结果有什么影响。以下是一些建议:
1. 改变初始条件:不要从所有叛变者开始,如果从所有合作者、所有 TFT
或随机智能体开始,看看会发生什么。
2. 在 Tournament.melee 中,我在每个时间步开始时洗牌智能体,因此
每个智能体将与两个随机选择的智能体进行比赛。如果你不洗牌会发生
什么?在这种情况下,每个智能体重复地与相同的邻居竞争。这可能会
使少数智能体的策略更容易通过利用地方优势,入侵多数智能体。
3. 由于每个智能体只与其他两个智能体竞争,所以每轮的结果都是高度可
变的:在任何给定的轮中,能够与大多数其他智能体竞争得很好的智能
体可能会在任何一轮中运气不佳,反之亦然。如果在每一轮中增加每
个智能体的对手数量会发生什么?或者,如果一个智能体在每一步结
束时的适应度是当前得分和前一轮结束时的适应度的平均值,那么该
怎么办?
4. 我为 prob_survival 选择的函数从 0.7 到 0.9 不等,所以最不合适的
智能体平均生存 3.33 个时间步长,此时 p=0.7 ;最合适的智能体平均生
存 10 ...