TLDR:对于否定的实现,我有一个不对称的评估函数--这可以接受吗?还是我需要让它对称?
更长的:我正在编写一个游戏AI (用于棋类棋类游戏“蜂巢”),它使用的是极小极大的α-β剪枝和一个不对称的评估功能。
但是,我在正确地添加转储表时遇到了问题,并且对我的minimax实现失去了信心,所以我决定使用下面的伪代码:表格切换到否定。
我已经让一切都“工作”了,AFAIK准确地遵循了伪代码,但是我的人工智能现在正在做一些与以前大不相同的动作,通常在10-15回合之后结束的游戏现在使用30+,而且我不相信AI实际上比以前玩得更好。我担心有一个不对称的评估函数意味着我对节点的评分与以前不同(因为消极翻转)。
我不想改变为一个对称的函数,除非我真的必须-我一直试图产生一个最优的函数实验(AI与AI的战斗),并投入数百,如果不是数千个计算小时,以产生一个强大的评估功能。
发布于 2017-06-07 21:22:30
Negamax支持不对称的评估功能,但它不会导致最佳发挥(假设您不了解您的对手)。
我对蜂巢还不太了解,但是在电脑国际象棋中,一般来说,有一个不对称的评估函数是一个错误。对象棋和蜂巢来说,背后的原因应该是一样的。
例如,采取起始位置(在国际象棋中)。接下来要移动的是White,让我们假设您的评估函数给了这个位置+0.08的分数。
现在改变位置,所以黑色是第一个移动。一切都是一样的,只是白人和黑人的角色已经改变了。假设+0.08是白色位置的最佳得分,为什么黑色的位置也不被评估为+0.08?
同样的论点也适用于任何立场。如果你把一切都颠倒过来,就没有充分的理由去改变这个位置。
这条规则只有一个例外。如果一个对手明显比另一个对手强,就会有不对称评估的理由。举个例子,采取这样一个完全吸引人的立场:

FEN:4k3/8/8/p1p1p1p1/PpPpPpPp/1P1P1P1P/8/4K3 b - - 0 1
这个位置可以被安全地评估为0。现在成像开始的位置,但白色开始没有一个骑士。这对黑人来说应该是一个强大的优势。
让我们假设你是马格努斯卡尔森,你在和不知道国际象棋规则的对手比赛。你更喜欢哪个职位?在这里,我认为不对称的评估可能是有意义的(例如,评估一个可能的抽奖,类似于损失)。卡尔森应该避免拉出的位置,而初学者应该更喜欢它。
初学者与世界冠军抗衡的机会几乎为零,即使只有一个骑士胜算。另一方面,在平局中,技术优势并不重要,因为任何动作顺序都不会导致输赢。
在电脑象棋中,Rebel在对抗人类时有一种更倾向于战术位置的功能(参见反大师游戏)。还有一个共同的概念,“藐视”,这是一个引擎给予的分数。
但请注意,在我的两个例子,这不是最佳的发挥。马格努斯卡尔森将不会选择没有骑士时,一个强大的(或未知的)对手。另外,Rebel也不会使用反人类的策略来对付其他的机器,这些机器在战术战斗中也很出色。(尽管如此,视情况而定,Rebel 10 是不是用反大师游戏来对付电脑.)
https://stackoverflow.com/questions/43813955
复制相似问题