我写的程序来玩棋盘游戏变异的时候。基本战略是标准alpha beta修剪或类似的搜索,有时增强通常的做法残局或开口。我已经发挥了主要围绕与国际象棋变,因此时间的时候来接我评价的功能,使用基本棋评价职能。

然而,现在我写的一个程序发挥一种全新的游戏。我怎么选择一个良好或甚至是体面的评价功能?

主要的挑战是,同样的作品总是在委员会,所以通常的材料的功能不会改变基于的位置,而游戏已经打了不到一千倍,所以人一定不要玩这不够好但得到的见解。(PS。我认为莫戈的做法,但是随机游戏也不太可能终止。)

游戏细节:该游戏的玩法是在10-by-10董事会有一个固定的六件的每一侧。碎片有某些运动的规则和互动,在某些方面,但没有一件是没有抓获。游戏的目的是要有足够的你的作品在某些特殊的板。我们的目标的计算机程序是提供一个播放器,它是竞争的或优于目前的人员。

有帮助吗?

解决方案

查找您的评价函数的几个候选人,如流动性(可能的行动#)减去对手的移动,然后尝试找到每个指标的最优权重。遗传算法似乎工作得很好用于在评价函数优化的权重。

创建随机权人口,打他们彼此具有有限的深度和匝数,与来自赢家,洗牌随机组合更换失败者,并重复,每一代后打印出人口平均。让它运行,直到你满意的结果,或者直到你看到一个需要调整的范围内对一些指标,然后再试一次,如果它出现,对于一个度量的最佳值可能是您最初的范围之外。

后期编辑::一种比较公认的,研究,了解办法,我不知道在当时是一种叫做“差分进化”。后代从3个亲本,而不是2创建的,以避免对平均过早收敛的问题这样的方式。

其他提示

我将开始与某些基础知识和移动的东西更难以后。

基本剂和测试框架

无论什么方法你采取你需要开始很简单的东西和愚蠢的。最好的办法为一个愚蠢的代理是一个随机的一种(产生的所有可能的行动,选择一个随机).这将作为一个起点来比较所有其他代理。你需要一个强有力的框架进行比较。什么,需要的各种代理,可以起到一定数量的游戏它们之间和返回的矩阵的表现。基于结果的计算适用于每个代理。例如你的功能 tournament(agent1, agent2, agent3, 500) 将发挥500游戏,每一个之间的对剂(播放第一/二)和返回你喜欢的东西:

  x         -0.01       -1.484   |  -1.485
0.01          x         -1.29    |  -1.483
1.484       1.29          x      |  2.774

在这里,例如我使用2点赢,1点绘制的评分职能,并在结束时只是总结一切都找到的健身。这表立刻告诉我 agent3 是最好的, agent1 是不是真的从不同的 agent2.

因此,一旦这两个重要的事情是设立了你准备好了试验你的评价职能。


让我们开始选择的功能

  1. 首先你需要创造 not a terrible 评价职能。我的意思是,这个功能应该正确地确定3的重要方面(win/绘制/损失)。这听起来显而易见的,但是我已经看到大量的机器人,在那里创造者是不能够正确地设置这3个方面。

  2. 然后你用你的人类的聪明才智,找到一些特色游戏的状态。要做的第一件事是讲一个游戏专家,并问他,他怎么访问的位置。

  3. 如果你没有的专家,或者你甚至只是创造了规则的你的游戏5分钟前,不要低估了人的能力,以搜索的格局。甚至播放完毕后几个游戏,一个聪明的人可以给你的想法,他应该如何发挥了(这并不意味着他可实施的想法)。使用这些想法为特征。

  4. 在这一点上,你真的不需要知道这些功能如何影响游戏。例的特点:值的碎片,片流动,控制的重要位置,安全总数的可能的行动,接近于完成。

  5. 之后你编了这些特征和使用他们分开来看看有什么最好的作品(不赶快放弃的功能,不执行合理的理由本身,他们可能是有帮助的结合与其他人),你都准备好实验的组合。

建立更好的评估通过结合并加权简单的功能。 有几个标准的办法。

  1. 创建一个超级功能基于各种组合的特征。它可以是直线 eval = f_1 * a_1 + ... f_n * a_n (f_i 特征, a_i 系数),但它可以是任何东西。随后的实例很多药剂完全随机的重量,用于这一评价功能和使用遗传算法,以发挥他们对彼此。对结果进行比较,使用的测试框架,丢弃几个明显的失败者和变异几个获奖者。继续过程相同。(这是一个粗略的轮廓,解更多关于GA)

  2. 使用后的传播想法从一个神经网络来回传播错误的从游戏结束时更新的重您的网络。你可以读取更它是怎么做的 双陆棋 (我没有写任何类似的东西,因此对不起呼吸困难).

你可以工作,没有评价职能的! 这可能听起来疯了,一个人只听到关于minimax/alpha-β,但也有方法不需要一个评估。他们中的一个被称为 蒙特卡洛树搜索 并作为蒙特卡罗在一个名称表明它采用了很多随机的(它不应该是随机的,它可以使用你以前好剂)的游戏剧产生了一棵树上。这是一个巨大问题本身,所以我会给你我真的很高级别的解释。你开始用一根,创造你的前沿,你的尝试,以扩大。一旦展开的东西,你只是随意去的叶子。得到的结果从叶子,你backpropagate的结果。这样做很多很多次,并收集统计数字对每个儿童的目前边界。选择最好的一个。有明显的理论没有涉及如何做你的平衡之间的勘探和开采和一个很好的东西读取有UCT(置信上结算法)

我想看看有监督的机器学习算法,诸如强化学习。请查看加固下棋学习。我认为这会给你一些很好的方向考虑。

此外,检查出策略采集用于基于强化学习游戏奥赛罗,其中给出的游戏规则(PDF链接),良好的“支付功能”可以学会的。这是密切相关的 TD-金门 ...

  

在训练期间中,神经网络   本身是用来选择动作   双方...的相当惊人   发现是,大量   学习确实发生了,甚至   在零初始知识   利用原始板实验   编码

如果没有人理解比赛还没有,有没有办法,你可以得到一个体面的评价功能。不要告诉我,标准的α-β的材料数量是好的,甚至像样的国际象棋或其变体(也许失败者国际象棋是一个例外)。

您可以尝试使用反馈或类似的机器学习算法,神经网络,但他们通常吸,直到他们有一大堆的训练,在这种情况下可能无法使用。即使这样,如果自己不吸,你无法从中获得知识。

我觉得没有办法短的了解游戏中最好的,你可以和,对于初学者来说,留在评价函数未知的随机(或刚出来的画面,直到未知数更加广为人知)。

当然,如果你愿意分享游戏中,你可以得到来自社会的美好理念的更多信息。

据我了解,你想有一个良好的静态评估函数在您的最小 - 最大树的叶子使用。如果是这样的话,最好要记住,这个静态评测功能的目的是提供一个等级作为该板有多好是针对电脑玩家。所以是

F(委员会1)> F(board2)

那么它必须是真实的,委员会1是计算机更好(更可能最终胜出)比board2。当然,没有静电功能是以往任何时候所有板完全正确的。

所以,你说,“本场比赛的目标是让你的作品在电路板上某些特殊平方不够”,所以在f(板)第一刺,简直是数个计算机的数量对这些特殊的正方形。然后可以巧妙更多。

如果不知道游戏其不可能的细节,以提供更好的猜测。如果你给我们的游戏规则,我肯定计算器的用户将能够配备吨的独到的见解对于这样的功能。

虽然你可以使用各种机器学习方法拿出的评价函数(TD-学习,在这样的项目,如gnubackgammon使用的,就是这样一个例子),其结果肯定是取决于游戏本身。对于步步高,它的作品真的很好,因为游戏(掷骰子)的随机性迫使学生去探索领土可能不希望这样做。如果没有这样一个重要组成部分,你可能会结束与评价功能,是违反本身是好的,但不反对别人。

由于材料的差异可能并不适用,流动性是重要的概念 - 即你有多少可能的行动有可用?被控制的董事会通常比没有更好的某个区域?谈论谁的人玩游戏,找出一些线索的人。

虽然这是最好有良好的评价功能,你可以,你也需要调整搜索算法,因此您可以搜索的深受的越好。有时候,这其实是更值得关注的,因为有medicore评价功能的深检索者打爆浅搜索具有良好的评价功能。这一切都依赖于域。 (gnubackgammon起着专家游戏用1层搜索,例如)

有你可以用它来提高搜索质量的其它技术,最重要的是有一个换位表缓存搜索结果有声音向前修剪。

我强烈建议找过这些幻灯片

您还需要小心你的选择。如果你的算法没有已知的关系的实际值,标准AI功能将无法正常工作。为了有效,你的评价函数,或启发式必须是相同的,或低于实际值一致,否则将指导你决定在一种奇怪的方式(有人会说国际象棋,尽管我认为标准的点都很好)。

我通常做的是找出能够和需要什么。对于一些游戏,如推箱子,我已经使用来获得一个箱(隔离)所需的框移动的最低数量从当前位置到任何目标位置。这不是所需的移动次数一个准确的答案,但我认为这是一个很好的启发,因为它永远不能高估,它可以预先计算出全板。当求和电路板得分它仅仅是为每个当前框的位置的值的总和。

在一个人工生命的模拟,我写进化包狩猎和包的防守,我以前只是引导进化,并没有执行任何修剪的评分系统。我给每个生物一分出生。对于他们在生活中所消耗的能量的每一个点,我给了他们一个额外的点。然后我用他们那一代的点的总和来确定如何可能是每个重现。就我而言,我只是用,他们已经获得了他们这一代的总点数的比例。如果我想发展这是在避让巨大的生物,我会打进下来让吃掉他们的点。

您也应该小心你的函数不是太难的目标命中。如果你想发展的东西,你要确保解空间有一个体面的斜率。要引导发展的方向,而不是仅仅宣布胜利,如果它发生在随机打击。

不知道更多关于你的比赛,我会很难告诉你如何建立一个功能。是表示一个双赢或损失的东西有清晰的价值观?你有没有估算成本最小缩小差距的一种方式?

如果你提供更多的信息,我会很乐意去尝试,并提供更深入的了解。有很多优秀的书籍在主题为好。

雅各

记住拿,这不是nescessarily真的,一个体面的评价函数甚至存在。对于这一说法我假设,评价函数必须是低复杂性(P)的。

scroll top