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