- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用 NetLogo 5.3.1,我尝试设置BehaviorSpace,以便其所有模型运行在完全相同的 500 个刻度预热期之后开始。然而,结果对我来说并不直观。
出于说明目的,我将使用模型库中的“Flocking.nlogo”模型。下面是模型代码,在设置末尾添加了 2 行代码,用于在 500 个周期后保存模型的状态。
turtles-own [
flockmates ;; agentset of nearby turtles
nearest-neighbor ;; closest one of our flockmates
]
to setup
clear-all
create-turtles population
[ set color yellow - 2 + random 7 ;; random shades look nice
set size 1.5 ;; easier to see
setxy random-xcor random-ycor
set flockmates no-turtles ]
reset-ticks
; Now execute a 500-tick warm-up period and save the model's state
repeat 500 [ go ]
export-world "Flocking-after-500ticks.csv"
end
to go
ask turtles [ flock ]
;; the following line is used to make the turtles
;; animate more smoothly.
repeat 5 [ ask turtles [ fd 0.2 ] display ]
;; for greater efficiency, at the expense of smooth
;; animation, substitute the following line instead:
;; ask turtles [ fd 1 ]
tick
end
to flock ;; turtle procedure
find-flockmates
if any? flockmates
[ find-nearest-neighbor
ifelse distance nearest-neighbor < minimum-separation
[ separate ]
[ align
cohere ] ]
end
to find-flockmates ;; turtle procedure
set flockmates other turtles in-radius vision
end
to find-nearest-neighbor ;; turtle procedure
set nearest-neighbor min-one-of flockmates [distance myself]
end
;;; SEPARATE
to separate ;; turtle procedure
turn-away ([heading] of nearest-neighbor) max-separate-turn
end
;;; ALIGN
to align ;; turtle procedure
turn-towards average-flockmate-heading max-align-turn
end
to-report average-flockmate-heading ;; turtle procedure
;; We can't just average the heading variables here.
;; For example, the average of 1 and 359 should be 0,
;; not 180. So we have to use trigonometry.
let x-component sum [dx] of flockmates
let y-component sum [dy] of flockmates
ifelse x-component = 0 and y-component = 0
[ report heading ]
[ report atan x-component y-component ]
end
;;; COHERE
to cohere ;; turtle procedure
turn-towards average-heading-towards-flockmates max-cohere-turn
end
to-report average-heading-towards-flockmates ;; turtle procedure
;; "towards myself" gives us the heading from the other turtle
;; to me, but we want the heading from me to the other turtle,
;; so we add 180
let x-component mean [sin (towards myself + 180)] of flockmates
let y-component mean [cos (towards myself + 180)] of flockmates
ifelse x-component = 0 and y-component = 0
[ report heading ]
[ report atan x-component y-component ]
end
;;; HELPER PROCEDURES
to turn-towards [new-heading max-turn] ;; turtle procedure
turn-at-most (subtract-headings new-heading heading) max-turn
end
to turn-away [new-heading max-turn] ;; turtle procedure
turn-at-most (subtract-headings heading new-heading) max-turn
end
;; turn right by "turn" degrees (or left if "turn" is negative),
;; but never turn more than "max-turn" degrees
to turn-at-most [turn max-turn] ;; turtle procedure
ifelse abs turn > max-turn
[ ifelse turn > 0
[ rt max-turn ]
[ lt max-turn ] ]
[ rt turn ]
end
; Copyright 1998 Uri Wilensky.
; See Info tab for full copyright and license.
BehaviorSpace 窗口如下所示:
添加的 2 行代码在 500 个刻度后保存模型的状态,来自 Railsback & Grimm 2012:基于代理和基于个体的建模(第一版)第 9 章中问题 6 的答案。答案继续说明下一步:“然后,在行为空间中,更改“设置命令”以仅导入已保存的世界并再运行 1000 个刻度”。
我这样做了,然后将文件导入到 R 中,通过计算刻度 100、200、300、400 和 500 处的同伴数量的平均值和 SD 来汇总数据。R 代码下方:
df <- read.csv("ibm_table_output-test.csv", skip = 6)
df1 <- df %>%
rename(run_number = X.run.number.,
time_step = X.step.,
mean_flockmates = mean..count.flockmates..of.turtles
) %>%
select(run_number,
time_step,
mean_flockmates,
vision) %>%
arrange(run_number,
time_step) %>%
filter(time_step == 100 |
time_step == 200 |
time_step == 300 |
time_step == 400 |
time_step == 500)
df1_long <- melt(df1, # Apply melt function
id.vars = c("run_number", "time_step","vision"))
# Calculate a summary table
df1.summ <- df1_long %>%
group_by(time_step, vision) %>%
summarise(avg = mean(value),
sd = sd(value))
输出如下:
# A tibble: 15 × 4
# Groups: time_step [5]
time_step vision avg sd
<int> <int> <dbl> <dbl>
1 100 1 8.34 0
2 100 2 8.34 0
3 100 3 8.34 0
4 200 1 7.83 0
5 200 2 7.83 0
6 200 3 7.83 0
7 300 1 7.95 0
8 300 2 7.95 0
9 300 3 7.95 0
10 400 1 7.45 0
11 400 2 7.45 0
12 400 3 7.45 0
13 500 1 7.92 0
14 500 2 7.92 0
15 500 3 7.92 0
对我来说这个输出没有意义。
我的问题是,为什么同一 time_step 组内不同视力水平的平均同伴数量相同?为什么SD全是0呢?换句话说,为什么模型运行会产生相同的输出?我认为启动老化期将为所有模拟启动相同的起始位置,但由于使用不同的随机数,为每次运行创建不同的平均值和 SD 值?还是我理解错了?
编辑:SD 为 0 的原因是平均值没有变化,但我不明白为什么没有变化。以下是 df1_long
数据框:
run_number time_step vision variable value
1 1 100 1 mean_flockmates 8.340000
2 1 200 1 mean_flockmates 7.833333
3 1 300 1 mean_flockmates 7.953333
4 1 400 1 mean_flockmates 7.446667
5 1 500 1 mean_flockmates 7.920000
6 2 100 1 mean_flockmates 8.340000
7 2 200 1 mean_flockmates 7.833333
8 2 300 1 mean_flockmates 7.953333
9 2 400 1 mean_flockmates 7.446667
10 2 500 1 mean_flockmates 7.920000
11 3 100 2 mean_flockmates 8.340000
12 3 200 2 mean_flockmates 7.833333
13 3 300 2 mean_flockmates 7.953333
14 3 400 2 mean_flockmates 7.446667
15 3 500 2 mean_flockmates 7.920000
16 4 100 2 mean_flockmates 8.340000
17 4 200 2 mean_flockmates 7.833333
18 4 300 2 mean_flockmates 7.953333
19 4 400 2 mean_flockmates 7.446667
20 4 500 2 mean_flockmates 7.920000
21 5 100 3 mean_flockmates 8.340000
22 5 200 3 mean_flockmates 7.833333
23 5 300 3 mean_flockmates 7.953333
24 5 400 3 mean_flockmates 7.446667
25 5 500 3 mean_flockmates 7.920000
26 6 100 3 mean_flockmates 8.340000
27 6 200 3 mean_flockmates 7.833333
28 6 300 3 mean_flockmates 7.953333
29 6 400 3 mean_flockmates 7.446667
30 6 500 3 mean_flockmates 7.920000
最佳答案
我的理解是,您手动运行一次setup
,然后运行您的BehaviorSpace 实验。您将遇到的问题是,随机数生成器种子包含在您通过运行setup
过程生成的export-world
数据中。然后,当您在每次实验运行的设置命令:中调用import-world
时,您也将获得导入的RNG种子。导出实际上包括 RNG 的完整状态,但将其视为相同的种子就足够接近了。
LeirsW 是正确的,Flocking(与大多数 NetLogo 模型一样,也可能是您遇到问题的原始模型)是完全确定性的。因此,每次使用相同的 RNG 种子,结果都会相同。
解决方法很简单,只需在运行 random-seed new-seed
的 import-world
之后向您的BehaviorSpace 实验中添加第二行设置命令: 。这将确保每个模型运行都有一个新的、独特的 RNG 种子可用于其运行的其余部分。
关于NetLogo 老化/预热问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74633755/
我正在将 NetLogo 列表从 NetLogo 传递到 Java(到扩展),然后再次将它发送回 NetLogo,我想将它用作另一个过程的参数。但是当我将它发送回 NetLogo 时,LogoList
我从 Railsback 第 16 章的基于代理和基于个体的建模一书中获得了这段代码,但它不起作用,我也不知道为什么。我是 NetLogo 的新手,软件在第 22 行显示“Expected keywo
对于一个项目,我们需要在 NetLogo 和 RepastS 之间做出决定。 我们将模拟一个机构网络,人们在它们之间移动。人们进出这些被实现为黑匣子的机构。我们认为使用 NetLogo 没有问题。该项
我是 NetLogo 的新手,我对以下代码有一些疑问: people-own [ walker-type ;; can be "cautious", "adaptive" or "reckle
我想知道如何计算网络中节点之间的分离度。 我创建了一个网络,其中包含两个可以随时间传播病毒的品种。 to setup create-people_inf 5 [set label "Infected"
例如,在我创建的一个项目中,有 1000 个人。现在,如果满足概率,那么我会创建一只狗,并将他与人类联系起来。我们开始吧: to setup-agents set-default-shape hum
NetLogo中是否可以有枚举数据类型? 假设我有一个婚姻状况变化的模型。 代理人可以有 3 种婚姻状况:单例、已婚、离婚。 我想将这些状态映射为数字,以便在执行时占用更少的内存。 单个 = 1 已婚
我对 netlogo 和整个建模还很陌生,但我真的很喜欢它。现在我陷入困境......在我的模型中,我有品种,每个品种都有“x”只海龟,每只海龟都有一个“x”变量,直到此时我才设法获得每只海龟的值(v
从NetLogo代码中是否可以获得所有程序的可视化流程图?观察者程序..代理程序..以及它们之间的链接。 最佳答案 如果我理解正确的话,您要求的是 call graphs 。我说得对吗? 我相当确定
5秒有5000毫秒。因此,如果我在那段时间在 Netlogo 中运行此代码: every 0.001 [ some-calls-in-the-middle tick ] 我预计会获得 5000
我是 netlogo 的新手,希望有人能帮助我如何根据用户输入创建海龟。 在界面选项卡中,我有一个 slider ,其值介于 2 和 10 之间。根据用户使用此 slider 定义的值,应该创建那么多
我想使用 Netlogo Web 打开我的 Netlogo(桌面版)模型,但它似乎不起作用。当我尝试上传我的模型时,我收到一个“TO 或 TO-REPORT 预期”错误。不知道我做错了什么。我在下面插
尝试从社区运行两个 netlogo 模型时,我收到“无法使用当前格式打开模型”的提示。模型是: http://ccl.northwestern.edu/netlogo/models/community
我想在 power law 之后的环境 ABM 中添加自然灾害的可能性。 (通常是很少的伤害,较少的是一般的伤害,很少是强烈的伤害,很少是完全的伤害)。 到目前为止,我编写了以下代码: to envi
breed [ As A ] breed [ Bs B ] bs-owns [ stock0 stock1 .... stock5] 我创建了 A 的 5 个和 B 的 100 个,B 拥有 stoc
我正在使用这些变量解决以下问题: set variablex .5 set threshhold-list [0 .3 .6] set variable-list [0 0 1] 我有三个agentt
我是 netlogo 的新手,我有一个类(class)作业我完成了大部分,但是我无法设置笔来使用开关我应该写什么代码来做到这一点这是我的代码 turtles-own [pen ] to setup
我对 NetLogo 很陌生,这就是我被困在这里数周的原因。 我想做的是让代理人以 4 人一组的方式组成 2 个团队。 我的计划是让一个函数保存 4 个海龟 ID, to assign-groupma
我正在尝试在线共享我的 NetLogo 模型,以便其他人可以在没有安装 NetLogo 桌面的情况下在他们的笔记本电脑或智能手机上运行它。 我发现可以使用 NetLogo web (http://ww
我在 NetLogo 中有两个“选择器”。即( 类别 和 子类别 )。类别选择器具有值(“动物”和“鸟类”),子类别选择器包含所有动物和鸟类。我想在运行时填充子类别选择器,以便 1) 如果在类别中选择
我是一名优秀的程序员,十分优秀!