如何为棋盘游戏(wizwoz)创建评估函数结果

游戏名为wizwoz:

两个玩家,红色(简称为r)和金色(简称为g)最初选择两个数值n和k。创建一个n × n的棋盘,并在棋盘上随机放置k个“r”和k个“g”。从玩家r开始,每个玩家在他的字母(玩家r用“r”,玩家g用“g”)放置在一个空的方格中。棋盘填满后,每个玩家的得分等于棋盘上用该玩家颜色填充的最大连通区域的尺寸(其中,连通区域是指区域内任意两个方格之间存在仅由上下左右移动组成的路径)。得分最高的玩家获胜,并获得其得分与另一玩家得分之间的差额。下面展示了两个完成的游戏示例,每个玩家最大的连通区域被标出。请注意,在第二个示例中,两个各有2个r的部分是不连通的。

enter image description here

我在编写alpha-beta剪枝算法时,卡在了评估函数上。

有什么帮助吗?最好是伪代码。


回答:

从一个非常简单的评估函数开始。例如,只使用当前最大组件的尺寸。等你让AI运作起来后,再考虑调整评估启发式方法。

这里是伪代码示例(未经测试)

components = {k:set([k]) for k in board}def contract(k1, k2):    if color(k1) != color(k2):        return    new = components[k1]    if k2 not in new:        new.union_update(components[k2])        for x in components[k2]:            components[x] = newfor x,y:    contract(board[x,y], board[x,y+1])    contract(board[x,y], board[x+1,y])return max(map(len, components))

Related Posts

Keras Dense层输入未被展平

这是我的测试代码: from keras import…

无法将分类变量输入随机森林

我有10个分类变量和3个数值变量。我在分割后直接将它们…

如何在Keras中对每个输出应用Sigmoid函数?

这是我代码的一部分。 model = Sequenti…

如何选择类概率的最佳阈值?

我的神经网络输出是一个用于多标签分类的预测类概率表: …

在Keras中使用深度学习得到不同的结果

我按照一个教程使用Keras中的深度神经网络进行文本分…

‘MatMul’操作的输入’b’类型为float32,与参数’a’的类型float64不匹配

我写了一个简单的TensorFlow代码,但不断遇到T…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注