Artificial intelligence 一类抽象策略博弈的评价函数

Artificial intelligence 一类抽象策略博弈的评价函数,artificial-intelligence,evaluation,chess,minimax,Artificial Intelligence,Evaluation,Chess,Minimax,我正在用C#&XNA编写一个抽象的策略游戏。至于人工智能,我目前正在使用Negascout,深度为5。以下是对游戏的描述: 游戏包括一个由6x7个六边形位置、42个六边形瓷砖组成的棋盘,每个玩家(最多2名玩家)有6块棋子(1个国王和5个棋子) 在游戏的第一阶段,玩家交替地在棋盘的空白位置放置一个随机瓷砖。每个瓷砖最多可以有6个箭头指向边缘。有些箭头可以是双箭头。箭头表示该瓷砖的移动方向。如果存在有效位置,则双箭头可使工件移动/跳跃2个位置。如果棋盘上还有空位,玩家不允许在对手的行中放置棋盘 此阶

我正在用C#&XNA编写一个抽象的策略游戏。至于人工智能,我目前正在使用Negascout,深度为5。以下是对游戏的描述:

游戏包括一个由6x7个六边形位置、42个六边形瓷砖组成的棋盘,每个玩家(最多2名玩家)有6块棋子(1个国王和5个棋子)

在游戏的第一阶段,玩家交替地在棋盘的空白位置放置一个随机瓷砖。每个瓷砖最多可以有6个箭头指向边缘。有些箭头可以是双箭头。箭头表示该瓷砖的移动方向。如果存在有效位置,则双箭头可使工件移动/跳跃2个位置。如果棋盘上还有空位,玩家不允许在对手的行中放置棋盘

此阶段完成后,下一个玩家依次将其国王放置在离他最近的6个牌匾中的任何一个牌匾上。接下来,开始各部分的移动。根据瓷砖上的箭头移动碎片。通过抓捕或阻挡国王赢得比赛

好的,现在来看看我的移动生成函数

  • 瓷砖铺设阶段 a) 在最近的一行上放置瓷砖。旋转平铺以找到最佳旋转。 b) 当最近的一行已满时,将一块瓷砖放在一个空位置上,该位置四周都是位置(即没有板边缘)。旋转平铺以找到最佳旋转。 c) 如果没有找到位置,请添加所有剩余的空位置,尝试找到最佳旋转

  • 国王安置阶段 a) 找到瓷砖最好的位置,然后将国王放在那里。 b) 将剩余的棋子放在行上剩余的空位置上

  • 运动阶段 a) 如果国王受到攻击,如果攻击的棋子没有防御,尝试攻击该棋子。 b) 为所有被攻击玩家的棋子添加移动。 c) 添加玩家可以攻击的所有对手棋子。 d) 添加玩家可以移动到的所有位置

  • 现在谈谈评价函数

  • 瓷砖铺设阶段 得分=当前玩家到目前为止放置的牌数+最近一行当前玩家的牌数-对手到目前为止放置的牌数-最远一行(离对手最近)对手的牌数

  • 国王安置阶段 得分=最近一行的当前玩家牌-最远一行(离对手最近)的对手牌

  • 运动阶段 分数=当前玩家的棋子价值-对手的棋子价值

  • 对于箭头指向的每个有效位置,瓷砖的权重为100。工件的重量如下所示:

    计件价值=计件类型(国王=10000,兵=1000)+机动性+防御-攻击-保护-阻挡

    其中: 移动性=节点可以移动到的位置数量(自由或被对手占据)*1000 防守=围绕此棋子的当前玩家棋子数量,可实际移动到此位置*1000 攻击=围绕此棋子的可实际移动到此位置的对手棋子数量*1000 阻塞=(国王=-10000,棋子=-1000)棋子无法移动,因为所有箭头指向无效位置,并且棋子在此游戏中没有再次移动的机会

    很长时间了,但我的问题来了:

  • 放置瓷砖时,AI有时会使用错误的旋转放置瓷砖(即,将瓷砖放置在箭头指向无效位置的位置)。有时这种情况发生在他的“家”排

  • 当移动碎片时,AI忽略了国王的安全。主要移动国王,在大约4-6个移动中被捕获

  • 有人,特别是有国际象棋AI经验的人,对如何改进我的AI,特别是我的移动生成和评估功能有想法和建议吗

    谢谢 伊万

    顺便说一句。。。如果有人对试用邮件感兴趣,请告诉我,我会在我的网站上上传一个设置

    很长时间了,但我的问题来了:

    确实很长

    放置瓷砖时,AI有时会使用错误的旋转放置瓷砖(即,将瓷砖放置在箭头指向无效位置的位置)。有时这种情况发生在他的“家”排

    换句话说,代码中有一个bug。即使有这么多的序言,也无法回答这个问题。这个问题应该是一个单独的、措辞简洁的问题,包括一份相关代码的副本

    当移动碎片时,AI忽略了国王的安全。主要移动国王,在大约4-6个移动中被捕获

    同上。即使你写了大量的序言,也无法回答这个问题

    我给你的建议是,你的问题要更简洁,只发布与问题相关的细节,不要将多个问题合并到一篇文章中

    有人,特别是有国际象棋AI经验的人,对如何改进我的AI,特别是我的移动生成和评估功能有想法和建议吗

    这是一个过于模糊的问题,通常会被关闭。如果你想要一些关于你的代码的建议,你必须提供这些代码,以便任何人都能给你一个超越盲目猜测的有用答案