Netlogo - 每个补丁不止一只乌龟

时间:2016-08-08 07:06:18

标签: netlogo

我想在Netlogo中对细胞分裂进行编程。我设法以细胞以概率分割的方式对其进行编程。这产生了一个特定的随机函数,我不会打扰你。

然而,为了使其尽可能真实,我不希望多个单元格位于同一个补丁上。我设法通过让一些细胞死亡来编程,如果他们没有找到附近的空白补丁。但是这会影响随机函数,因为更多的细胞会死亡,而不是死亡。

非常感谢一些帮助。

我的澄清代码:

to mitosis 

ask stemcells [
if random-float (2 * r * lambda) < 2 * r * lambda [
ifelse random-float 1. < probability
[ hatch 1 [

let free-neighbor one-of neighbors with [not any? turtles-here]
ifelse free-neighbor != nobody [
move-to free-neighbor]
[ die] ]
set breed stemcells
] [ die ] ] ]

2 个答案:

答案 0 :(得分:1)

看起来你的问题刚刚开始:

if random-float (2 * r * lambda) < 2 * r * lambda

由于任意数字x的随机浮点数始终会报告0-x的数字。

这将使random-float (x) < x始终成为真实的陈述。

答案 1 :(得分:1)

我遵循代码逻辑的方式,你是根据“概率”询问每个干细胞是否要分裂。

舱口代码看起来很好,我把它拉出来并且测试正确:要么找到邻居补丁,要么死掉。

但是如果你的干细胞决定不分裂,它看起来就像它到达第二个[死]。这是你的问题:“因为更多的细胞死亡而不是死亡”来自?

此外,不需要“设置品种”,因为询问中的孵化将始终创建品种干细胞。

从您最近的评论中添加了此内容:

“如果可能的话,我希望它们移动并为孵化的细胞让路”......除了你的代码正在孵化之外,所以真的,新孵出的干细胞正在进行移动,而不是原始的。如果那很重要。

我测试了整行代码,而不仅仅是拉出过度拥挤的部分,看看这是否有帮助。您需要按钮来设置,有丝分裂和输出窗口以查看消息。我在代码中的评论包括原始回答者对if语句的原始发现。

 XmlDocument Doc = new XmlDocument();
 Doc.LoadXml(dataGridView1.SelectedCells[0].Value.ToString())