现在,我想复活这场比赛,寻找最好的战舰AI。
这是现在托管在 Bitbucket 上的框架。
获胜者将获得 +450 声望! 比赛将于 2009年11月17日 开始。17 日零时后不接受任何条目或编辑。(中部标准时间)尽早提交您的参赛作品,以免错过机会!
为了保持这个 目标 ,请遵循比赛的精神。
游戏规则:
比赛规则:
评分:
祝你好运!玩得开心!
编辑 1: 感谢Freed,他在Ship.IsValid函数中发现了一个错误。它已被修复。请下载框架的更新版本。
Ship.IsValid
编辑 2: 由于人们对将统计信息持久保存到磁盘等方面产生了浓厚的兴趣,因此我添加了一些应该提供所需功能的非定时设置和拆卸事件。这是一个 半突破性的变化 。也就是:修改了界面,增加了功能,但是不需要body。请下载框架的更新版本。
编辑 3: 错误修复 1:GameWon并且GameLost只在超时的情况下被调用。 错误修复 2:如果引擎在每场比赛中都超时,那么比赛将永远不会结束。 请下载框架的更新版本。
GameWon
GameLost
编辑 4: 比赛结果:
我支持每场比赛进行更多比赛的动议。玩 50 场比赛只是抛硬币。我需要做 1000 场比赛才能在测试算法之间做出合理的区分。
下载无畏 1.2。
策略:
跟踪命中 > 0 的船舶的所有可能位置。该列表永远不会超过〜30K,因此可以准确地保留它,这与所有船只的所有可能位置的列表(非常大)不同。
GetShot 算法有两个部分,一个生成随机射击,另一个尝试完成击沉已经击中的船只。如果有可能的位置(从上面的列表中)所有被击中的船只都被击沉,我们会随机射击。否则,我们会尝试通过选择一个位置进行射击,消除最可能的位置(加权)来完成沉船。
对于随机拍摄,根据其中一艘未沉船与该位置重叠的可能性来计算最佳拍摄位置。
自适应算法,将船只放置在对手在统计上不太可能射击的位置。
自适应算法,它更喜欢在对手统计上更有可能放置他的船只的位置射击。
放置的船只大多不相互接触。