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