对于我的学士论文,我想编写一个遗传算法来学习玩 Stratego 游戏(如果你不知道这个游戏,可以假设我说的是国际象棋)。我以前从未做过实际的 AI 项目,所以看到我实际上对实现事物知之甚少,这让我大开眼界。
我坚持的事情是为实际策略提出一个很好的表示。我可能犯了一些思维错误,但我遇到了一些问题:
董事会职位之间的过渡,因为那只是
蛮力吧?
喜欢?我想出的任何表示都不能互换
分支...如果我要使用一个位串,这显然也是
常见的,这些位代表什么?
我觉得我学了三年多就应该知道这些了,所以我觉得自己很傻——这看起来我好像一点头绪都没有。尽管如此,任何关于谷歌什么的帮助或提示将不胜感激!
最佳答案
我认为,您可以定义一个决策模型,然后尝试优化该模型的参数。您还可以创建多阶段决策模型。我曾经做过类似的事情来解决动态拨号问题 (paper here),将其建模为两阶段线性决策问题。举个例子,你可以:
您提取的特征可以非常简单,也可以非常复杂,这取决于您认为最有效的功能与需要多长时间计算的功能。
为了评估和提高决策模型的质量,您可以在与对手的几场比赛中模拟这些决策,并训练结合这些特征的模型参数来对 Action 进行排名(例如使用 GA)。通过这种方式,您可以调整模型以赢得尽可能多的与指定对手的比赛。您可以通过与以前从未见过的对手比赛来测试该模型的通用性。
正如Mathew Hall 刚才所说,您可以为此使用GP(如果您的模型是复杂规则),但这只是一种模型。在我的情况下,权重的线性组合做得很好。
顺便说一句,如果您有兴趣,我们还有一个关于启发式优化的软件,它为您提供 GA、GP 和那些东西。它叫HeuristicLab .它是 GPL 和开源的,但带有 GUI (Windows)。我们有一些关于如何在外部程序中评估适应度函数的 Howto(使用 Protocol Buffer 的数据交换),因此您可以处理您的模拟和决策模型,并让 HeuristicLab 中的算法优化您的参数。
关于artificial-intelligence - 如何为遗传算法的棋盘游戏策略选择一个好的表示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8725092/