根据海龟数量(输入)和 link 特定品种一起调整世界网格的大小
Resize grid in the world based on number of turtles (input) and link specific breeds together
我需要在方形网格中可视化下面的海龟(来自三个不同品种),其中 links 仅在来自同一品种的海龟之间,除了品种 types2 和 types3,也可以link互相交流。
所以我想要的是一个二维网格,其中每种类型的海龟数量是
40% of type1
40% of type2
20% of type3
(共100只海龟)
set-default-shape types1 "circle"
set-default-shape types2 "circle"
set-default-shape types3 "triangle"
ask n-of 100 patches [ sprout-types1 1 ]
ask n-of (100 * 0.4) types1 [set breed types2]
ask n-of (100 * 0.2) types1 [set breed types3]
值没问题,但海龟 'free' 在世界中,没有显示在网格上。
如何根据上述条件将它们显示到网格中并link它们?
这个答案对此提供了一些帮助,但网格的大小调整和海龟数量不是预期的。
您应该在创建代理之前调整世界大小。
也就是说,从代码的工作流程来看:如果要有n
个agent,那么n
首先就是patch的个数。然后,一旦出现这种情况,所有补丁将 sprout
.
您需要 resize-world
command.
你提到你想要 100 只海龟,也就是 100 个补丁,也就是一个 10x10 的世界。
这意味着您可以:
to setup
clear-all
resize-world 0 9 0 9 ; This creates a 10x10 world.
set-patch-size 30
ask patches [
sprout 1 [
set shape "circle"
set size 0.5
]
]
end
只要你对你的世界正好是 100 个补丁的大小感到满意,上面的代码就可以工作,假设大小 = 100 是 hard-coded。
您可能想考虑一些方法来适应代理数量的变化。
例如,只要代理的数量是整数的完美平方,下面的方法就有效:
globals [
n-agents
]
to setup
clear-all
set n-agents 100
let side-length n-agents ^ (1 / 2) - 1
resize-world 0 side-length 0 side-length
set-patch-size 30
ask patches [
sprout 1 [
set shape "circle"
set size 0.5
]
]
end
归根结底,NetLogo中世界的形状只能是正方形或长方形;也就是说,你不能拥有一个由素数补丁组成的 NetLogo 世界(唯一的例外是 world-height
and/or world-width
等于 1 的世界)。
因此,为了让您的代码最适应 n
中的更改,您可以提出更详细的步骤,根据 n
调整世界大小,以便它为您提供n
即使 n
不是完美的正方形也会进行修补;但举例来说,除非你乐于拥有一个单维世界,否则你永远不可能拥有 53 个补丁。不过,既然你说的是网格,我认为这对你来说应该不是问题。
我需要在方形网格中可视化下面的海龟(来自三个不同品种),其中 links 仅在来自同一品种的海龟之间,除了品种 types2 和 types3,也可以link互相交流。 所以我想要的是一个二维网格,其中每种类型的海龟数量是
40% of type1
40% of type2
20% of type3
(共100只海龟)
set-default-shape types1 "circle"
set-default-shape types2 "circle"
set-default-shape types3 "triangle"
ask n-of 100 patches [ sprout-types1 1 ]
ask n-of (100 * 0.4) types1 [set breed types2]
ask n-of (100 * 0.2) types1 [set breed types3]
值没问题,但海龟 'free' 在世界中,没有显示在网格上。 如何根据上述条件将它们显示到网格中并link它们?
这个答案
您应该在创建代理之前调整世界大小。
也就是说,从代码的工作流程来看:如果要有n
个agent,那么n
首先就是patch的个数。然后,一旦出现这种情况,所有补丁将 sprout
.
您需要 resize-world
command.
你提到你想要 100 只海龟,也就是 100 个补丁,也就是一个 10x10 的世界。
这意味着您可以:
to setup
clear-all
resize-world 0 9 0 9 ; This creates a 10x10 world.
set-patch-size 30
ask patches [
sprout 1 [
set shape "circle"
set size 0.5
]
]
end
只要你对你的世界正好是 100 个补丁的大小感到满意,上面的代码就可以工作,假设大小 = 100 是 hard-coded。
您可能想考虑一些方法来适应代理数量的变化。 例如,只要代理的数量是整数的完美平方,下面的方法就有效:
globals [
n-agents
]
to setup
clear-all
set n-agents 100
let side-length n-agents ^ (1 / 2) - 1
resize-world 0 side-length 0 side-length
set-patch-size 30
ask patches [
sprout 1 [
set shape "circle"
set size 0.5
]
]
end
归根结底,NetLogo中世界的形状只能是正方形或长方形;也就是说,你不能拥有一个由素数补丁组成的 NetLogo 世界(唯一的例外是 world-height
and/or world-width
等于 1 的世界)。
因此,为了让您的代码最适应 n
中的更改,您可以提出更详细的步骤,根据 n
调整世界大小,以便它为您提供n
即使 n
不是完美的正方形也会进行修补;但举例来说,除非你乐于拥有一个单维世界,否则你永远不可能拥有 53 个补丁。不过,既然你说的是网格,我认为这对你来说应该不是问题。