如何在特定蜱虫 - 特殊附着模型后使海龟死亡

时间:2015-11-22 19:40:26

标签: netlogo

我有以下代码来修改优先附件模型。在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

2 个答案:

答案 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之前或之后工作。