【问题标题】:how to implement an AI python solution for the plumbing puzzle [closed]如何为管道难题实施 AI python 解决方案 [关闭]
【发布时间】:2019-04-17 16:47:53
【问题描述】:

我目前正在开发一个 AI 代理,它能够识别这里发现的著名的旧管道游戏的开始状态和目标状态

https://i.imgur.com/o1kFcT3.png

http://html5.gamedistribution.com/a73b1e79af45414a88ce3fa091307084/

这个想法是让水从起点流到出口点,人工智能只旋转瓷砖,而不是所有瓷砖都被填充,问题是这将是一个无引导的搜索。 我真的很迷茫,我们将不胜感激。

我的想法是我应该为每个图块和旋转分配一个数字并制作一系列允许的序列?但我不确定这是否是最好的方法,因为它们的序列将是 10!这是巨大的。 另一种方法可以将每个管道的孔分配为北、西、南、东并检查瓷砖是否链接?

解决方案应该是灵活的,并且磁贴可能会随机/更改,因此手动分配目标状态将不起作用。

任何想法将不胜感激。

【问题讨论】:

    标签: python artificial-intelligence


    【解决方案1】:

    在最初的管道游戏中,玩家可以点击一个瓷砖并顺时针改变它的方向。这允许生成从起点到目标的水流路径。可能动作的数量确实是指数级的,无法在普通计算机上计算。为了克服这个问题,宏观行动是完美的选择。宏动作是原始游戏中不可用的虚拟动作。这是在原始游戏之上自行发明的抽象游戏。一个可能的宏动作将构建一条到中间路点的路径,而第二个宏动作生成一条从中间到末端的路径。新创建的宏动作可以由分层规划器独立解决,并且生成的低级动作在原始游戏中执行。

    实现宏动作的一种可能的编程语言是游戏描述语言、PDDL 或形式语法。如果理解了这个概念,即使是普通的 Python 代码也可以用来实现抽象游戏。一个可能的宏观动作会导致一种状态,类似于深度学习社区中所谓的奖励。这允许将问题细分为更小的块。

    对于管道游戏,文献中没有描述可立即运行的求解器,但之前讨论过推箱子游戏:Zhou、Neng-Fa 和 Agostino Dovier。 “用于解决推箱子问题的 Prolog 程序。”基础信息学 124.4 (2013): 561-575。

    【讨论】:

    • 非常感谢,确实很有帮助,头疼了好几个小时终于找到了解决办法
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-03
    • 2015-04-01
    • 2020-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多