Dynamic 如何在Netlogo中创建动态链接?-全局变量更改代理的值,代理进行交互,然后相应地更改其类型

Dynamic 如何在Netlogo中创建动态链接?-全局变量更改代理的值,代理进行交互,然后相应地更改其类型,dynamic,hyperlink,netlogo,interaction,Dynamic,Hyperlink,Netlogo,Interaction,我有一个系统,其中两个全球/系统变量经济产出x和环境损害y取决于模型中代理人的四种世界观(效用假设)的分布。这两个状态变量作为内部值分布在所有代理之间,即收入和风险敞口。这两个边缘或个人分布值决定说服力(P2P)和说服易感性(S4P)。因此,每个代理具有P2P-x和P2P-y以及S4P-x和S4P-y 当两个代理相遇(比较)时,他们交换他们的P2P和S4P的内部价值观,这可以被概念化为辩论、讨论或意见冲突。如果这些值的减法导致数值高于特定阈值,即两个值之间的范围很高,“损失”代理将其世界观更改为

我有一个系统,其中两个全球/系统变量经济产出x和环境损害y取决于模型中代理人的四种世界观(效用假设)的分布。这两个状态变量作为内部值分布在所有代理之间,即收入和风险敞口。这两个边缘或个人分布值决定说服力(P2P)和说服易感性(S4P)。因此,每个代理具有P2P-x和P2P-y以及S4P-x和S4P-y

当两个代理相遇(比较)时,他们交换他们的P2P和S4P的内部价值观,这可以被概念化为辩论、讨论或意见冲突。如果这些值的减法导致数值高于特定阈值,即两个值之间的范围很高,“损失”代理将其世界观更改为另一个代理的世界观(转换),这反过来会对全局变量产生影响

因此,我们有一个相互关系和反馈回路的嵌套网络。我在实践中遇到了问题。我也看过很多观点影响模型,但没有一个像我这样理解它

我的第一次尝试是这样的:

     ask turtles [        ; Agents are doing their thing
  [if occupied = "yes" [
    ifelse count-down > 0 
      [set count-down (count-down - 1)]
     [; get the hell out of here
       rt 180
       fd 2
       set occupied "no"
       set count-down 3] 
       ]

      if occupied = "no" [       ; Wandering around, ignoring occupied agents
     set neighbourhood other turtles in-radius 2]

     ; If someone interesting and unoccupied is near, communicate!
     set nearest-neighbour one-of neighbourhood with-min [distance myself]
     ifelse nearest-neighbour != nobody [    ; In case someone has been set as nearest-neighbour, encounter is set in motion
         if ([ occupied ] of nearest-neighbour = "no") [
            face nearest-neighbour            
            set occupied "yes" 
如果([S4P-x]的自我<[P2P-x]的自我)[设置世界观[ [我的世界观]

但这并没有真正起作用。另外,我不确定这是否是最优雅的方式。我对此表示怀疑。 是否有关于Stackoverflow这个主题的条目我忽略了,这更容易理解?或者NETLOGO中的其他功能,哪个更适合我的需要


提前谢谢。

我想你的意思可能只是
P2P-x
,而不是
[P2P-x]我自己的
,我想你的意思是
设置我自己的世界观[世界观]
。这能解决问题吗

您可能不需要使用链接,除非您想表示海龟之间的关系,这种关系会随着时间的推移而持续。如果海龟之间的邂逅只是昙花一现,那么链接并不能给你带来任何好处


我建议您查看模型库代码示例部分中的通信T-T示例,以及其他海龟成对相遇并进行交互的模型,例如PD N-Person Iterated。

如果我为第一种情况保留括号,那么P2P-x我会得到需要报告者的错误。对于第二种情况,他不知道自己应该是谁,因为
face
-命令出现在代码的后面…Re:错误,代码到底是什么样的,它给了你这个错误,以及
P2P-x
到底是什么,海龟变量,还是什么?至于脸,我真的不知道你的意思。您对
使用了错误的语法,我的建议使用了正确的语法;所以你至少需要接受我的建议。我不知道该给你什么进一步的建议,因为我甚至不理解你提供的代码背后的确切意图。我不知道在你使用过它的两个地方,你想要
我自己
指的是什么代理。你到底想做什么?看起来你有点紧张,这可能意味着你需要放慢速度,采取更小的步骤。我又试着把它清理干净了。请让我知道这是否有帮助。因此,当前的代码实际上是不可能读取的,因为缩进非常不一致。不过,我可以看到你做了一些修正。请注意,您可以将self的
[S4P-x]替换为
S4P-x
;添加self的
[]总是多余的。关于最新的代码,您还有什么问题?
 [if ([ S4P-x ]  of self < [ P2P-x ] of nearest-neighbour) [
            ask nearest-neighbour [ 
              face myself              
              set occupied "yes"
           ]