大家好,
前几天,我儿子要我玩网格纸版的“战舰”。每个人有 5 艘“战舰”,长度分别为 5、4、3、3 和 2 个单位(宽度为 1 个单位)。这些“战舰”被放置在 XY 空间中一个 10 x 10 的网格上;每艘“战舰”都有一组唯一的 (x,y) 坐标。例如,3 个单位“战舰”中的一艘可以具有坐标 (3,4)、(4,4) 和 (5,4)。最多只能有一艘“战舰”占据相同的 (x,y) 坐标。“战舰”只能垂直或水平排列——不允许对角线布局。
然后我们轮流喊出坐标对 (x,y),看看谁直接击中了别人的“船”。我们每个人只有 16 个回合来尝试击中(或击沉)对方尽可能多的“船”。在我们进行这个过程时,我心想,一定有比随机喊出坐标更好的方法来最大限度地提高击中(和/或击沉)他人“船”的机会。当然,你不会喊出你已经使用过的坐标 (x,y),因为你会知道你是否击中了“船”。
起初,我认为定制设计平台可能是正确的选择,但如果您创建的设计中 Y 为“命中”(0/1 表示否/是),X1 = x 和 X2 = y 坐标(10 级离散数字),平台将生成一个仅使用每个 X 和 Y 的高低级别的设计。顺便说一句,模型项只是 x、y 和交叉项 x*y。因此,不幸的是,定制设计不起作用。
全因子 DOE 平台无法工作,因为它要进行 100 次运行(10x10 因子),而我们每次只有 16 次运行(尝试)。
RSM DOE 平台仅适用于高/低级别,输入 1 和 10 表示低/高级别。CCD 设计选项实际上并没有填满放置“船只”的 10 x 10 网格的空间——中心运行太多,无法覆盖网格空间。
唯一适用于此的其他平台是空间填充设计。使用相同的低/高、x 和 y 的 1/10 设置以及“命中”作为响应(这将是二进制的,0/1 表示否/是),我可以得到一个 DOE 表,其中 (x,y) 配对填充网格空间。我不确定空间填充设计方法的最佳选择是什么,FFF 或 Uniform,或拉丁超立方体等。
我认为更重要的是,DOE 是固定的,它不是“可适应的”,因为基于第一次运行的结果,DOE 将如何修改以考虑已知信息。使用上面的 3 单位船坐标,假设我的第一次运行是调出坐标 (3,4) 并得到结果。知道“船”的布局是水平的还是垂直的,我的下一个调用根本不是遵循 DOE,而是调出 (3,5)、(3,3)、(2,4) 或 (4,4)——我会将 x 或 y 增加一个单位,看看结果是什么。依此类推,直到船沉没或移动到下一个可能的起始坐标。
我想找到一种更科学的方法来生成自适应 DOE,以便优化生成“命中”的 16 次运行。使用静态 DOE 不会做到这一点,因为每次运行后,坐标都会“用完”,我会了解它是否命中。每次运行都会通知后续的第 n+1 次运行。据我所知,没有 DOE 可以处理这样的事情,但我也不是这个领域的专家。
随机选择一个起点是“战舰”中最好的选择吗?我不这么认为,但我很难弄清楚如何拥有一个自适应 DOE,它基本上包含“if/then”语句,以便它优化我 16 次尝试的使用,同时考虑到上一步的信息。如果有一个“自适应”DOE 可以优化你每次运行的选择,从而最大限度地提高你在 16 次尝试中获胜的机会,那就太酷了。
感谢讨论!
DS
PS,在搜索 JMP 和“Battleship”时,我确实找到了@Jordan_Hiller的这篇文章,其中展示了如何使用 JMP 玩不同的游戏,而@brady_brady编写了 JSL 代码来实际玩“Battleship”。非常酷!很快就会下载那个 JSL!
你好@Jordan_Hiller ,
感谢您提供博客链接,我喜欢这篇文章。
我大体上理解他们如何计算一艘船在某个广场的概率背后的概念——这对每种船来说都是不同的。 然而,由于棋盘的概率状态在每一轮游戏后都会发生变化,下一个方块的选择也会发生变化,对我来说这无非是重新优化的空间填充设计,考虑了命中/未命中/船的大小/和剩余的跑步次数。
博客发帖人能够生成一个算法,可以在 34 步内完成游戏,这恰好是小船占据的方格数的两倍。 据推测,有可能生成一条最佳决策路径,该路径可以获得接近 17 步获胜所需的步数。 也许不完全是 17,但非常接近。
当然,ML/AI 方法可以构建一种算法来赢得比赛,但我同意,这是矫枉过正,而不是我真正想要的。 我更感兴趣的可能是博客人所做的和使用 DOE 的混合。 显然,游戏板的概率密度函数对于做出决策选择至关重要。 但是,是否可以将其从纯粹的概率计算修改为基于优化空间填充的计算——几乎就像将电路板的概率函数作为 DOE 的“加权”函数,以便 DOE 产生最高可能的命中率。 在我看来,首先产生最高命中数然后专注于沉没会比博主的做法更快获胜,后者是先专注于沉没船只,然后再进入狩猎模式。
无论如何,我发现考虑和思考很有趣,显然其他人也有!
谢谢!,
DS
有趣的想法,迪德里希!
这是一篇关于这个主题的旧博客文章,有人想出了如何计算在任何给定游戏状态下一艘船在网格的每个方格上的概率。 https://www.datagenetics.com/blog/december32011/之后,你甚至不需要模型,你可以选择最可能的正方形。 那里也有一些机器学习项目,但这似乎有点矫枉过正!
约旦