Netlogo 如何让海龟在特定的蜱虫优先依恋模式下死亡
我有下面的代码用于修改优先附件模型。在500次滴答声之后,我希望一些“适合度”小于10的特工死亡。但有一个错误: “刻度计数器尚未启动。请使用重置刻度。 运行0时出错 由过程MAKE-NODE调用 由过程设置调用 由“设置”按钮调用 请让我知道如何修复此错误。我感谢你的帮助Netlogo 如何让海龟在特定的蜱虫优先依恋模式下死亡,netlogo,Netlogo,我有下面的代码用于修改优先附件模型。在500次滴答声之后,我希望一些“适合度”小于10的特工死亡。但有一个错误: “刻度计数器尚未启动。请使用重置刻度。 运行0时出错 由过程MAKE-NODE调用 由过程设置调用 由“设置”按钮调用 请让我知道如何修复此错误。我感谢你的帮助 ;;;;;;;;;;;;;;;;;;;;;;;; ;;; Setup Procedures ;;; ;;;;;;;;;;;;;;;;;;;;;;;; turtles-own [fitness years characteri
;;;;;;;;;;;;;;;;;;;;;;;;
;;; Setup Procedures ;;;
;;;;;;;;;;;;;;;;;;;;;;;;
turtles-own [fitness years characteristic birth-tick]
to setup
clear-all
set-default-shape turtles "circle"
;; make the initial network of two turtles and an edge
make-node nobody ;; first node, unattached
make-node turtle 0 ;; second node, attached to first node
reset-ticks
end
;;;;;;;;;;;;;;;;;;;;;;;
;;; Main Procedures ;;;
;;;;;;;;;;;;;;;;;;;;;;;
to-report random-binomial [n p]
report sum n-values n [ifelse-value (p > random-float 1) [1] [0]]
end
to go
;; new edge is green, old edges are gray
if ticks >= 5000 [ stop ]
ask links [ set color gray ]
make-node find-partner ;; find partner & use it as attachment
;; point for new node
ask turtles [ if ticks - birth-tick > 500 [ if fitness <= 10 [die]]]
tick
if layout? [ layout ]
end
;; used for creating a new node
to make-node [old-node]
crt 1
[
set birth-tick ticks
set color red
set characteristic random-binomial 10 0.2
set years random-float 10
set fitness characteristic * years
if old-node != nobody
[ create-link-with old-node [ set color green ]
;; position the new node near its partner
move-to old-node
fd 8
]
]
end
to-report find-partner
let total random-float sum [(count link-neighbors) * fitness] of turtles
let partner nobody
ask turtles
[
let nc (count link-neighbors) * fitness
;; if there's no winner yet...
if partner = nobody
[
ifelse nc > total
[ set partner self ]
[ set total total - nc ]
]
]
report partner
end
;;;;;;;;;;;;;;;;;;;;;;;;
;;; 设置程序;;;
;;;;;;;;;;;;;;;;;;;;;;;;
海龟自己[健康年特征出生蜱]
设置
清除所有
将默认形状海龟设置为“圆形”
;; 使最初的网络由两个海龟和一个边缘组成
使节点无人;;第一个节点,未连接
使节点为0;;第二个节点,连接到第一个节点
重置滴答声
结束
;;;;;;;;;;;;;;;;;;;;;;;
;;; 主要程序;;;
;;;;;;;;;;;;;;;;;;;;;;;
报告随机二项[NP]
报告和n值n[ifelse值(p>random float 1)[1][0]]
结束
外带
;; 新边为绿色,旧边为灰色
如果滴答声>=5000[停止]
询问链接[设置灰色]
使节点找到合作伙伴;;找到合作伙伴并将其用作附件
;; 新节点的点
询问海龟[如果蜱-出生蜱>500[如果适合只需在调用make node
之前调用reset ticks
to setup
clear-all
reset-ticks
set-default-shape turtles "circle"
;; make the initial network of two turtles and an edge
make-node nobody ;; first node, unattached
make-node turtle 0 ;; second node, attached to first node
end
就是这样。在设置
过程结束时调用重置勾号
是一种很好的做法。
此过程还绘制初始状态(定义任何绘图时)。
我认为最好修改您的make node
过程,并将set birth tick ticks
行更改为:
carefully [ set birth-tick ticks ][ set birth-tick 0 ]
现在它可以在调用reset ticks
之前或之后工作。我的问题与这个问题相关,我按照这个问题的建议做了,但它不起作用……我建议使用bergant的答案。reset ticks
应该只在模型完全设置后调用。我可以看到您是从哪里来的,特别是如果您是y您使用的是使用除法的绘图。我认为,由于Netlogo模型往往很短,而且写得很清楚,因此这种规则就不那么必要了。Seth,除了绘图之外,您能否提供另一个实际示例,说明在安装开始时调用重置记号可能会导致一些问题?因此,我同意King Ink的观点。@mattsap据我所知,这是对标准库中的优先附件模型的修改。调用prematurereset ticks
时,您应该预计度分布(log log)图将无法计算max[count link neights]海龟的数量
和错误停止:无法找到没有数字的列表的最大值。请注意“绘图问题”不一定是会爆炸的绘图代码-可能是比这糟糕一百倍的代码,即默默地绘制错误数据的绘图代码。不幸的是,仔细地在这里是必要的,因为没有更方便的方法来测试勾号计数器是否已经重置。我称之为语言中的漏洞。@SethTisue Yes,在勾号计数器最初设置为0之前。