NetLogo:改变一个品种';s变量取决于其他品种';以自我为中心的网络环境中的s变量

NetLogo:改变一个品种';s变量取决于其他品种';以自我为中心的网络环境中的s变量,netlogo,Netlogo,亲爱的Stackoverflow用户: 我是NetLogo和社区的新手,所以我希望我能充分表达自己。如果你需要更多的信息来理解我的问题,请告诉我。由于我不完全确定我的问题在哪里,我的标题甚至可能会产生误导 以下是我想做的:我想要一个以自我为中心的网络模型,在这个模型中,1个自我(美国的拉丁美洲移民)以一个给定的值(1到6)开始 与拉丁文化和文化的认同 认同美国/白人文化 自我(品种1)有8个改变(品种2)。Alter由拉丁裔和白人组成(比率由界面中的滑块决定:number Latinos)。al

亲爱的Stackoverflow用户:

我是NetLogo和社区的新手,所以我希望我能充分表达自己。如果你需要更多的信息来理解我的问题,请告诉我。由于我不完全确定我的问题在哪里,我的标题甚至可能会产生误导

以下是我想做的:我想要一个以自我为中心的网络模型,在这个模型中,1个自我(美国的拉丁美洲移民)以一个给定的值(1到6)开始

  • 与拉丁文化和文化的认同
  • 认同美国/白人文化
  • 自我(品种1)有8个改变(品种2)。Alter由拉丁裔和白人组成(比率由界面中的滑块决定:number Latinos)。alter在它们之间是随机连接的(无向链接的数量由界面中的另一个滑块确定:alter链接的数量)。每个alter都有一个d度值(即同一种族内的链接数)

    在每一次滴答声中,自我都会随机地与其中一个变化发生互动。如果圣坛是拉美裔,那么自我对拉美裔认同的初始值应该增加0.1+d*0.1。如果圣坛是白色的,自我对我们身份的初始值应该增加0.1+d*0.1。识别变量可达到的最大值为6

    下面是代码:

    培育[自我自我]
    繁殖[改变]
    自我认同[美国认同拉丁美洲人]
    改变自己的[学位]
    设置
    清除所有
    设置改变
    自大
    重置滴答声
    结束
    设置更改
    创建更改8
    [布局圆圈改变8
    如果谁<数字拉丁美洲人[设置橙色];拉丁美洲人是橙色的
    如果who>=number拉丁裔[设置黄色],则白色为黄色
    ]
    而[计数链接数<更改链接数][
    让节点1随机8
    让节点2随机8
    如果(节点1!=节点2)[
    询问alter node1[创建与alter node2的链接]
    ]
    ]
    要求改变[在同一种族中设置等级]
    ifelse颜色=黄色
    [设置度(使用[color=yellow]计数链接邻居]]
    [设置度(使用[color=orange]计算链接邻居]]
    ]
    结束
    自我陶醉
    创造自我1[
    设置识别我们初始识别自我
    集合识别拉丁美洲人初始拉丁美洲人识别自我]
    结束
    外带
    如果滴答声>=50[停止]
    互动
    变更标识
    打上钩
    结束
    互动
    询问egos[使用其中一个选项创建链接[设置绿色]]
    结束
    改变身份
    询问end1的[color=green][let d[度]链接
    自问[
    ifelse链接邻居=黄色
    [ifelse(识别US<6)
    [设置标识US标识US+0.1+d*0.1]
    [设置标识6]
    ]
    [ifelse(拉丁美洲人<6岁)
    [设置标识拉丁美洲标识拉丁美洲+0.1+d*0.1]
    [拉丁美洲人6集]
    ]
    ]
    ]
    询问自我[询问我的链接[死亡]]
    结束
    
    这是我的问题:当我运行模拟时,只有拉丁美洲身份的值发生变化,而不是美国身份的值。当网络中没有拉丁美洲人时,这甚至是真的。我不知道问题出在哪里。是否在嵌套的ifelse命令中?我已经试着绕过嵌套的ifelse并发出了几个if命令,但问题仍然存在。这与我如何用颜色定义这两个民族有关吗?另外,当我在指挥中心询问某只海龟的情况时(例如海龟3),我得到了9次答案(海龟总数)。可能问题在于我如何向链接邻居询问其颜色


    谢谢你的关注!非常感谢任何想法、建议或可能的解决方案。

    这永远是错误的:
    链接邻居=黄色


    顺便说一句,如果您发布这样一个完整的模型,您需要用基于代码的声明和变量初始化替换接口全局变量。

    这将始终是错误的:
    link neights=yellow


    顺便说一句,如果你发布这样一个完整的模型,你需要用基于代码的声明和变量初始化替换接口全局变量。

    谢谢你,Alan,为我指明了正确的方向,并提供了关于基于代码的声明和变量初始化的建议!我终于找到了解决问题的办法。我添加了一个名为“种族”的新变量,用于存储另一端的颜色值
    让end1的种族[color],并将ifelse命令转换为两个if命令
    if种族=黄色…
    if种族=橙色…
    谢谢你,艾伦,为我指明了正确的方向,并就基于代码的变量声明和初始化提供了建议!我终于找到了解决问题的办法。我添加了一个名为“种族”的新变量,用于存储另一端的颜色值
    让end1的种族[color],并将ifelse命令转换为两个if命令
    if种族=黄色…
    if种族=橙色…
    breed [egos ego]
    breed [alters alter]                                                     
    
    egos-own[identification-US identification-Latino]
    alters-own[degree]
    
     to setup
      clear-all
      setup-alters    
      setup-egos  
      reset-ticks
     end
    
    to setup-alters
       create-alters 8 
       [layout-circle alters 8
         if who < number-Latinos [set color orange]        ; Latinos are orange
         if who >= number-Latinos [set color yellow]       ; Whites are yellow
         ]
       while [count links < number-of-alter-links][
         let node1 random 8
         let node2 random 8
         if (node1 != node2)[
           ask alter node1 [create-link-with alter node2]
         ]
         ]
       ask alters [                      ; set degree within same ethnicity
        ifelse color = yellow
        [set degree (count link-neighbors with [color = yellow])]
        [set degree (count link-neighbors with [color = orange])]
      ]
    end
    
    to setup-egos
       create-egos 1 [ 
        set identification-US initial-US-identification-ego
        set identification-Latino initial-Latino-identification-ego]
    end
    
    to go
      if ticks >= 50 [stop]
      interact
      change-identification
      tick
    end
    
    to interact
      ask egos [create-link-with one-of alters [set color green]]
    end
    
    to change-identification
      ask links with [color = green] [let d [degree] of end1
      ask egos [
      ifelse link-neighbors = yellow
        [ifelse (identification-US < 6)
          [set identification-US identification-US + 0.1 + d * 0.1]
          [set identification-US 6]
          ]
       [ifelse (identification-Latino < 6)
          [set identification-Latino identification-Latino + 0.1 + d * 0.1]
          [set identification-Latino 6]
          ]
       ]
      ]
      ask egos [ask my-links [die]] 
    end