新人如何培养 - StupidCodeGenerator/StupidCodeGenerator.github.io GitHub Wiki

##培训计划

因为我们不是公益组织,所以我们认为招来的人肯定有编程基础。即使对方编程技能不足,也要让他自学。 毕竟自学也是能力重要的一环,克服不了这个问题,可以回家呆着不送。

所以第一课直接上AI的基础架构。

##AI最小系统

ActionSet, 知识库, 效用函数

AI的基础架构就是根据游戏规则给出一个集合ActionSet = {a1, a2, a3, ... an} 所有的Action都必须合法。

然后我们需要定义一个效用函数,根据当前游戏中的信息和当前的Action给出一个数值。 这个数值表达了这个Action的“效用”。效用越高表示这个行为越有益,反之越有害。

在理想情况下,我们可以设计出完美的效用函数,然后直接使用效用函数最大的Action作为最终的输出。 在不理想的情况下,我们需要一个知识库来对ActionSet进行过滤,并对效用函数的计算结果进行修正。

解决了架构问题,我们所有的努力就集中在了效用函数和知识库上。效用函数是重中之重,需要设计各种稀奇古怪的算法 来弄清楚到底哪一种行为更靠谱。

##训练项目:井字棋

井字棋的AI非常简单,几乎就是最简单的AI了。使用搜索算法,蒙特卡洛算法,都可以非常轻易的实现。 新人如果能在两周之内的时间里完成这个AI,证明新人可用。否则就不能用,只能送走。