我有以下代码来修改优先附件模型。在500个滴答之后,我想要一些“健康”小于10的代理人死亡。但是有一个错误: “滴答计数器还没有开始。使用RESET-TICKS。 龟0运行TICKS时出错 由程序MAKE-NODE调用 由程序SETUP调用 按钮'设置'“
调用请告诉我如何解决此错误。感谢您的帮助。
;;;;;;;;;;;;;;;;;;;;;;;;
;;; 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 :(得分:1)
在致电reset-ticks
make-node
即可
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
就是这样。
答案 1 :(得分:1)
最好在reset-ticks
程序结束时调用setup
。
此过程还绘制初始状态(定义任何图时)。
我认为最好修改您的make-node
程序并将您的set birth-tick ticks
行更改为:
carefully [ set birth-tick ticks ][ set birth-tick 0 ]
现在它可以在调用reset-ticks
之前或之后工作。