我正在开发一个人工智能来玩一个相当简单的游戏,使用极小极大和遗传算法来找到权重来对棋盘状态进行评分。
游戏类似于 4x4 tictactoe,但可以花一个回合将棋子移动到相邻的空间,棋子有不同的大小,更大的棋子可以覆盖更小的棋子。
我想通过查看各种因素来为棋盘打分,例如他们距离连续完成 4 个有多接近,以及有多少相邻的敌人可能被移动到,但我不知道这些因素应该具体是什么是。
我的想法:对于每一行,根据友方棋子数、空格数和敌方棋子数做一个评分表达式,但我想不出一个简单的表达式来用权重评分,因为值可能赢了不是线性函数。
对于每一行,根据行中敌人的数量制作分段评分表达式,并根据盟友的数量制作表达式。因此,在空行中放置 1 块可能比在充满敌人的行中放置 1 块更有价值,从而阻止它们,而对于已经被阻止的连续 3 块,反之亦然。
我注意到的一些复杂情况:连续拥有 3 个棋子,但其中一个敌人的大棋子也在这一行中,除了阻止他们的棋子移动之外,几乎没有任何价值。
连续拥有 3 个棋子,如果你可以将一个大棋子放在他们的小棋子旁边以移动到该棋子上,那么在那一排有一个小的敌人棋子几乎是一场胜利。这似乎特别难以察觉。如果将其考虑在内,也可能不需要上述“可以移动到的相邻敌人的数量”。
谢谢你的帮助。我不知道如何进行。