我正在开发国际象棋游戏,此刻我正试图实现一个极小极大算法。我之前没有这样做过,也很少了解如何以编程方式表示和实现以下评估功能特性(材料,机动性,片方形表,中心控制,被困件,国王安全,节奏和典当结构)我很清楚(如果有人能详细向我解释,我会很感激)。我已经能够为每件棋子分配值,分块动作值和一张方形桌子。目前我们遇到的问题是如何生成Piece攻击和防守值,这些值将会从得分中增加或减少。这里的想法是,我想奖励人工智能代理人保护它的作品并惩罚它受到攻击。感谢进步。需要关于国际象棋游戏评估功能的帮助
0
A
回答
0
我认为你不应该包括对攻击和防守棋子的计算。该功能已被minmax算法以更有效的方式考虑在内。
如果在随后的移动中对手可以拿下它,那么一件受到攻击。如果你尝试在静态评估函数中评估这种可能性,如果你想正确地做到这一点,你将会遇到麻烦。如果我的受保护的棋子被对手皇后拿走,那不是问题。你如何考虑这一点?如果我的女王被对面的棋子占据,但移动棋子让国王受到攻击?
这些考虑因素最好由minmax算法管理,而不是评估者。考虑要知道你可以吃多少块/可以吃掉,你应该考虑所有可能的动作,并且你可能会花费相同的时间,以便在minmax算法中使用更深的一层。此外,如果您后来决定在minmax中确实进一步进一步,那么时间就会被浪费掉。
3
您提到的每个评估功能都会占用计算时间。正如你可能已经知道,一个国际象棋引擎的棋力有两个来源:
- 搜索
- 评估
而且两者争夺同一宝贵的资源,计算时间。 评价往往是基于启发式的,因此有点模糊,而搜索倾向于产生更具体和相关的结果。如果你开始建立一个引擎,那么我会建议把重点放在搜索上,同时保持基本的评估(但不要弱!)。这样你就可以确切地知道哪里出了问题,从而避免可能的早期失望。而且,像鳕鱼这样的流行引擎也首先建立了一个强大的搜索算法。
如果你已经足够的耐心远远阅读,让我指出你两个有用的资源进行评估:
- Chess Programming Wiki's evaluation page:这个网站可能是在一般国际象棋引擎发展的最好在线资源。
- Link to a basic but not weak evaluation function:这是C#代码。不幸的是,我无法找到基于此评估的原始文章。
希望它能帮助:)
相关问题
- 1. 国际象棋游戏人工智能
- 2. 帮助设计一个国际象棋游戏
- 3. “跟随国际象棋”直播国际象棋游戏如何?
- 4. 为局域网制作国际象棋游戏所需的帮助
- 5. JavaScript中的国际象棋游戏
- 6. prolog的国际象棋游戏
- 7. 需要国际象棋游戏GUI指南 - ASP.NET
- 8. 国际象棋游戏无效移动
- 9. Java在线国际象棋游戏
- 10. 国际象棋游戏忠告
- 11. 国际象棋,游戏板翻转?
- 12. 国际象棋Java游戏错误
- 13. C#3D国际象棋游戏
- 14. 国际象棋negamax功能
- 15. 需要帮助评估
- 16. 需要帮助arraylist游戏
- 17. ROR4国际象棋游戏模型关联
- 18. 需要关于iPhone应用程序国际化的帮助
- 19. (国际象棋游戏)返回可能棋子移动的函数
- 20. 面向对象的国际象棋游戏设计
- 21. 国际象棋游戏,改变正在迭代的对象。
- 22. 需要关于突破游戏球速度的帮助
- 23. 需要关于Android汽车游戏的帮助
- 24. 需要关于突围游戏碰撞问题的帮助
- 25. Min-Max游戏评估功能
- 26. 基于Android卡的游戏,需要帮助才能启动
- 27. 如何编程一个国际象棋游戏的AI
- 28. 国际象棋游戏的设计和Singleton模式
- 29. 国际象棋游戏中的女王运动(Javascript)
- 30. iphone有很好的开源国际象棋游戏吗?
非常感谢您的回答,它可以帮助 – user3816650