小编Mar*_*rzy的帖子

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

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

我有两种类型的代理,我希望他们通过经验来学习,他们有一组行动,根据可能发生的具体情况,每种行动都有不同的奖励。我是强化学习方法的新手,因此欢迎任何关于我应该问自己什么样的问题的建议:)

以下是我将如何阐述我的问题:

  1. 代理有一个生命周期,他们会跟踪一些对他们来说重要的事情,这些指标对于不同的代理来说是不同的,例如,一个代理想要增加 A,另一个代理想要 B 多于 A。
  2. 状态是特工一生中的点,他们有不止一个选择(我对状态没有明确的定义,因为它们可能会发生几次或根本不会发生,因为特工四处走动,他们可能永远不会遇到一种情况)
  3. 奖励是智能体在特定状态下从某个动作中可以获得的指标的增加或减少,并且智能体不知道如果他选择另一个动作会获得什么收益。
  4. 增益不是恒定的,状态没有明确定义,并且没有从一种状态到另一种状态的正式转换,
  5. 例如,代理可以决定与同处一地的代理之一(操作 1)或同一位置的所有代理(操作 2)共享如果某些条件成立,则操作 A 将对该代理更有利,而在其他条件行动2将有更高的奖励;我的问题是我没有看到任何具有未知奖励的示例,因为在这种情况下共享还取决于其他代理的特征(这会影响奖励系统的条件)并且在不同的状态下它会有所不同。

在我的模型中,动作和后续状态之间没有关系,这让我想知道在这种情况下是否可以考虑强化学习。

我希望在这里优化的是我的代理能够以更好的方式推理当前情况,而不仅仅是响应由其内部状态触发的需求。他们有一些个性,可以定义他们的长期目标,并可以影响他们在不同情况下的决策,但我希望他们记住在某种情况下采取的行动有助于他们增加他们首选的长期目标。

reinforcement-learning agent-based-modeling netlogo q-learning

6
推荐指数
1
解决办法
2278
查看次数

NetLogo:如何确保变量保持在定义的范围内?

我有一些变量,可以通过+ 0.1和-0.1的变化或者没有任何变化继承给子代理,或者再次随机,我做的是这样的:(代码只是一个例子)

to reproduce
  ask turtle 1
  [
  let X-Of-Mother X

  hatch 1
  [

    set X one-of (list (X-Of-Mother) (X-Of-Mother + 0.1) (X-Of-Mother - 0.1) (random-float 1))

    ]

  ]

end
Run Code Online (Sandbox Code Playgroud)

目前我必须通过以下方式检查幼龟的X是否总是在范围内:

if X > 1 [set X X - 0.2]
if X < 0 [set X X + 0.2]
Run Code Online (Sandbox Code Playgroud)

什么是更好的方法呢?

如果我必须使用随机正常0.5 0.1,我怎么能将其限制在0和1之间的值,我已经多次重复生成这样的随机数我认为随机正常的质量是好的并且没有那么多我需要检查它是否超出范围.

例如 :

  to test 
    Let c 0
    let b 0 
    repeat 100000000
    [Set b random-normal 0.5 0.1
      if b > 1 [set C C + 1]
      If b …
Run Code Online (Sandbox Code Playgroud)

netlogo

5
推荐指数
2
解决办法
3187
查看次数