【问题标题】:avoiding illegal states in openai gym避免openai健身房的非法状态
【发布时间】:2020-05-20 20:42:40
【问题描述】:

我正在尝试为模拟问题创建一个健身房环境。在我的健身房环境中,我有一组非法状态,我不希望我的代理进入它们。将此类逻辑添加到我的环境中的最简单方法是什么,我应该使用包装类吗?我不太明白,我尝试通过继承一个类来扩展MultiDiscrete 空间并覆盖MulriDiscrete.sample 函数以阻止环境进入非法状态,但是有没有更有效的方法来做吗?

【问题讨论】:

    标签: reinforcement-learning openai-gym


    【解决方案1】:

    我有一个类似的问题,我需要制作一个健身房环境,该环境在网格世界的中心有一个游泳池,我不想让代理去那里。

    因此,我将网格世界表示为矩阵,并且池具有不同的深度,代理可以落入其中,因此这些位置的值具有与水坑深度成正比的负值。

    在训练代理时,这种负奖励防止代理掉入水坑。

    上述环境的代码为here,其用法为here

    希望这会有所帮助。

    【讨论】:

    • 谢谢你的帮助,但我只是想从一开始就消除整个非法状态而不是学习它们。
    • 因此,为了让智能体不进入非法状态,要么智能体必须已经具备避免这种状态的智能,要么我们对空间进行硬编码以限制我们的观察空间。无论哪种方式,您都在使代理避免非法状态,也许您可​​以逐步解决您的问题,在第一步中您教它避开障碍,然后使其解决主要任务。如果您的目标是具有一些约束的环境,那么我想您必须以这种方式定义环境(按照原始环境是如何使用有界观察空间制作的)
    • 是的,你是对的,但我的问题是关于如何在健身房环境中实现硬代码选择。我确定我想硬编码而不是学习它。
    • 我实际上不知道您正在使用什么环境,但以前我遇到过代理必须在房间之间导航的问题。代理不应该撞墙,所以我所做的是使用墙的图案,我在这些网格单元上放置了一个特定的值,当我得到一个让我处于那种状态的动作时,我会重新选择这个动作,直到我避免撞到墙。 Here 在第 154 行见 option_policy 函数决定从当前位置向门移动的位置并避免与墙壁碰撞
    猜你喜欢
    • 1970-01-01
    • 2019-02-05
    • 2019-10-16
    • 2018-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多