在我的模型中,我使用直接链接来保持每只乌龟与其他乌龟的交互作用值,并且每个链接对链接的每一端都有不同的值,这正是我想要的,它确实是我想要的容易实现,但是,我有一个性能问题,我的模型工作速度不如我认为它应该工作。使用无向链接,而不是定向链接
现在我正在尝试不同的方法来减少计算需求。我想到的一件事是将所有定向链接集成到无向链接,并将end1和end2的交互值的值彼此作为链接属性,例如end1-end2-Relationship-Value和end2-end1 - 关系价值和频率1频率2。这个实现会让我的整个模型更难以调试,因为链接的顺序将难以跟踪,我使用这些值的计算很多,所以我想知道是否有人有更好的方法来增加性能:)
我认为这可能更好的原因是它会减少链接数量的一半,另一种方法是遗忘链接(杀死旧链接或关系不太重要的链接(无关紧要的价值和较低的频率关系更新2),但是这个人是不是与我的模型设置完全兼容
agents-own [Belongs_to My-home popularity ]
patches-own [label_ storage]
links-own[Value-Of-The-Relationship frequency]
to Update_link_Values [Self_Agent Other_Agent Value]
ask Self_Agent
[ ifelse any? links with [end1 = Self_Agent and End2 = Other_Agent]
[ask out-link-to Other_Agent [ set Value-Of-The-Relationship Value-Of-The-Relationship + Value set Frequency Frequency + 1 ] set hidden? true]
[create-link-to Other_Agent [set Value-Of-The-Relationship Value-Of-The-Relationship + Value set Frequency Frequency + 1 ] set hidden? true ]
]
end
to SeTPoPularity
set Popularity sum[Value-Of-The-Relationship] of links with [end2 = mySelf]
end
: 我想我已经找到了更好的方法(明显的一个!我应该首先完成这项工作)来设置流行度,而不是每调用一次我都会更新它,我甚至认为我可能不需要每次需要时都会调用“流行度”变量我只是叫我,在链接
* 更新3:*
to Update_link_Values [Self_Agent Other_Agent Value]
ask Self_Agent
[ ifelse out-link-neighbor? Other_Agent
[ask out-link-to Other_Agent [ set Value-Of-The-Relationship Value-Of-The-Relationship + Value set Frequency Frequency + 1 ] set hidden? true]
[create-link-to Other_Agent [set Value-Of-The-Relationship Value-Of-The-Relationship + Value set Frequency Frequency + 1 ] set hidden? true ]
]
end
感谢塞特对他的评论
感谢。 Marzy。
检查当前的表现我已经通知后更好d检查修补程序值是我模拟中的另一个主要性能问题,每个代理程序都有一个My-Home属性,用于存储修补程序地址,并且所有家庭成员具有相同的my-home值,每个修补程序存储属于全家的属性值成员,当人口增长并且一个补丁中的人数超过7人时,如果所有家庭成员都死亡,那么与他的伴侣(如果有的话)的大儿子将迁出并将他的份额转移到新的家庭补丁中,家庭将被转移到社区补丁。 – Marzy
您的更新中的所有新问题都感到困惑 - 可能会打开一个或多个新的单独问题? –
好吧,我只是做了,我完全新到了Stackoverflow!感谢您的输入:) – Marzy