NetLogo中设置agent自有参数为links-own参数平均值的问题
NetLogo 代码修复方案
原有代码问题梳理
- 拼写错误:链路属性定义行的
frienships-own拼写错误,正确应为friendships-own - 取值对象错误:
[strength] of link-neighbors是取邻居agent的strength属性,而非链路自身的strength属性,和需求不符 - 链路范围错误:
my-links会同时包含当前household的入链和出链,你需要的是仅统计自己指向其他household的单向出链,应改用my-out-links - 过滤逻辑错误:
count my-links > 1会排除只有1条出链的场景,若没有特殊需求不需要该限制,就算要限制也应该改为判断出链数量而非所有链路数量
修复后完整代码
friendships-own [strength] household-own [ influence-factor] to create-influence if friendship = TRUE [ ask households ; 若你定义的家庭agentset名称为单数household,可保留原命名,此处是通用规范写法 [ let out-count count my-out-links if out-count > 0 ; 避免没有出链时出现除以0的运行报错 [ set influence-factor (sum [strength] of my-out-links) / out-count ] ] ] end
关键修改说明
- 用
my-out-links指定仅统计当前household发出的单向链路,符合你要的「指向其他household的单向链接」的需求 - 直接从
my-out-links中取每个链路自带的strength属性求和,再除以出链数量得到平均值 - 新增出链数量大于0的判断,避免无出链场景的运行报错
- 修正了链路属性定义的拼写错误,如果你自定义了单向链路品种,将第一行的
friendships-own替换为你自己的链路品种名即可
内容的提问来源于stack exchange,提问作者amik89
相关产品推荐
相关产品推荐

