在NetLogo中实现强化学习(在多代理模型中学习)

在NetLogo中实现强化学习(在多代理模型中学习),netlogo,reinforcement-learning,agent-based-modeling,q-learning,Netlogo,Reinforcement Learning,Agent Based Modeling,Q Learning,我正在考虑在我的模型中为不同类型的代理实施一种学习策略。老实说,我仍然不知道我应该先问什么样的问题,或者从哪里开始 我有两种类型的代理人,我希望他们通过经验来学习,他们有一系列的行动,根据可能发生的具体情况,每种行动都有不同的回报。 我不熟悉强化学习方法,因此欢迎对我应该问自己的问题提出任何建议:) 下面是我如何进一步阐述我的问题: 代理有一个生命周期,他们跟踪一些对他们来说很重要的事情,这些指标对于不同的代理是不同的,例如,一个代理想要增加a,另一个代理想要B多于a 状态是代理生命周期中它们所

我正在考虑在我的模型中为不同类型的代理实施一种学习策略。老实说,我仍然不知道我应该先问什么样的问题,或者从哪里开始

我有两种类型的代理人,我希望他们通过经验来学习,他们有一系列的行动,根据可能发生的具体情况,每种行动都有不同的回报。 我不熟悉强化学习方法,因此欢迎对我应该问自己的问题提出任何建议:)

下面是我如何进一步阐述我的问题:

  • 代理有一个生命周期,他们跟踪一些对他们来说很重要的事情,这些指标对于不同的代理是不同的,例如,一个代理想要增加a,另一个代理想要B多于a
  • 状态是代理生命周期中它们所处的点 有多个选项(我没有一个明确的定义 国家,因为他们可能会发生几次或根本没有发生,因为 特工们四处走动,他们可能永远不会面对这样的情况)
  • 奖励是指代理人在特定状态下可以从一项行动中获得的指标的增加或减少,并且代理人不知道如果他选择另一项行动会获得什么收益
  • 增益不是恒定的,状态没有很好的定义,没有一个状态到另一个状态的正式转换
  • 例如,如果某些条件成立,代理可以决定与同一地点的一个代理共享(行动1)或与同一地点的所有代理共享(行动2),行动A对该代理的回报更高,而在其他条件下,行动2的回报更高;我的问题是,我没有看到任何未知奖励的例子,因为在这种情况下,共享还取决于其他代理的特征(这会影响奖励系统的条件),并且在不同的状态下会有所不同 在我的模型中,动作和以下状态之间没有关系,这让我想知道在这种情况下考虑RL是否合适

    我希望在此优化的是,我的代理能够以更好的方式对当前情况进行推理,而不仅仅是对其内部状态触发的需求做出响应。他们有一些个性可以定义他们的长期目标,可以影响他们在不同情况下的决策,但我想让他们记住,在一种情况下,什么样的行动帮助他们提高了他们首选的长期目标

    在我的模型中,动作和以下状态之间没有关系,这让我想知道在这种情况下考虑RL是否合适

    这似乎很奇怪。如果不改变状态,操作会做什么?注意,代理不一定要知道他们的操作将如何改变他们的状态。类似地,动作可能会不完美地改变状态(机器人可能会滑出地面,因此在尝试移动时实际上不会移动)。事实上,有些算法是专门为这种不确定性设计的

    在任何情况下,即使代理在没有任何控制的情况下在状态空间中移动,它仍然可以学习不同状态的奖励。事实上,许多RL算法涉及到在状态空间中半随机移动,以确定奖励是什么

    我对州没有一个明确的定义,因为州可能会发生几次,或者根本不会发生,因为特工们四处走动,他们可能永远都不会面对这种情况

    你可以考虑扩展进入你认为是“国家”的东西。例如,这个位置似乎肯定应该进入标识状态的变量中。并非所有的州都需要奖励(尽管好的RL算法通常可以推断出中性州的优点)

    我建议明确定义决定代理状态的变量。例如,状态空间可以是
    当前补丁X内部变量值X存在的其他代理
    。在最简单的情况下,代理可以观察构成其状态的所有变量。然而,有些算法并不需要这样做。代理应始终处于某个状态,即使该状态没有奖励值

    现在,关于未知奖励。事实上完全没关系。奖励可以是一种奖励。在这种情况下,应用标准RL算法的一个简单方法是在决策时使用变量的大小。如果分布未知,那么该算法可以只使用迄今为止观察到的奖励的平均值

    或者,您可以在状态定义中包含决定奖励的变量。这样,如果奖励发生变化,那么它实际上处于不同的状态。例如,假设一个机器人在建筑物的顶部。它需要到达它前面的楼顶。如果它只是向前移动,它就会掉到地上。因此,该州的回报非常低。然而,如果它首先放置一块木板,从一个建筑到另一个建筑,然后向前移动,奖励就会改变。为了表示这一点,我们可以将
    板放置到位
    作为变量,以便将板放置到位实际上会改变机器人的当前状态以及向前移动时的状态。因此,奖励本身没有改变;它只是处于一种不同的状态

    希望这有帮助


    2018年2月7日更新:最近的一次投票提醒我这个问题的存在。在被问到这一问题后的几年里,我实际上更深入地研究了NetLogo中的RL。特别是,我为NetLogo做了一个标记,主要是为了更容易地将机器学习算法集成到模型中。在模型运行时,扩展训练了一组使用深度Q-学习的代理。

    非常感谢,因为我说我对状态没有一个明确的定义,我的模拟与社会互惠交换有关,如shari