如何为Min-Max算法编写分析功能



我正在尝试将AI编码与TIC-TAC-TOE有点相似。您可以在此处查看其规则。

我正在使用的Min-Max算法和分析功能可以在此处找到

到目前为止我尝试过的方式:

  1. 我已经建立了一些对当前玩家有益的模式。(在Python中)

例如。my_pattern = " ".join(str(x) for x in [piece, None, piece, piece, None])

  1. 我将这些模式与每件作品的六角形游戏板上的所有6个可能的方向匹配(不适合空格)。确切地说,将my_pattern与6个不同的数组匹配(每个数组代表6个不同的方向之一)。

现在,此分析功能实际上应该计算什么?

  1. 整个董事会状态的得分?
  2. 最后一步的得分?

如果某人可以准确描述分析功能的目的,那将是很棒的。

分析功能代表板的当前状态。它可能/可能不包括最后一步,以前的任何动作或达到董事会职位的移动顺序。它也应该考虑播放谁的转弯。

我的意思是相同的板可能是好/坏的白色/黑色,具体取决于转弯是谁。(称为国际象棋中的Zugzwang的情况)。

另外,可以以各种移动序列达到相同的板,因此,是否要将其包括在分析中,这取决于游戏的类型。(高级国际象棋发动机肯定包括移动顺序,尽管不是计算当前板,而是为了进一步分析达到该职位的可能性)。但是,在此游戏中,我认为您的分析功能不需要包括最后一个或任何以前的移动(顺序)。

编辑:

分析功能的示例:

value = 10000*W(4) - 10000*W(3) + 200*W(2.1) + 200*W(1.2) + 100*W(2) + 100*W(1.1) + 2*W(1e) + 10*W(1m) + 30*W(1c) - (10000*B(4) - 10000*B(3) + 200*B(2.1) + 200*B(1.2) + 100*B(2) + 100*B(1.1) + 2*B(1e) + 10*B(1m) + 30*B(1c))

其中:

W = white
B = black pieces
4 = made line of 4 pieces
3 = made line of 3 pieces
2 = made line of 2 pieces having possibility of getting extended to 4 from atleast one side
. = blank (ie, 1.2 = W.WW on the board)
1.1 = Piece|Blank|Piece and possibility of extending to 4 from atleast one side
e|m|c = edge|middle|center of board, and possibility of extending to 4 from either sides

该分析功能的积极结果意味着白色更好,0表示平衡板,负值表示黑色具有有利的位置。您可以由于要执行的测试结果而更改权重。但是,找到所有可能的组合是详尽的任务,但是游戏是这样的:)

最新更新