我的netlogo代码似乎没有任何问题,但是我的代理商没有出现

时间:2020-09-16 20:32:45

标签: netlogo agent

我只是在学习使用netlogo,并且我正在尝试编写一个简单的模型,以使不同的代理(品种)执行不同的任务。通过选择器选择出现在界面/ Universe上的代理...

这是我在代码中写的:


breed [escarabajos escarabajo]; type of beetles that survive in forests
breed [beetles beetle]; type of beetles that survive in agricultural areas 

;For each breed there are three sub-types of beetles, depending on how far they can move (vagility) this is also selected with a chooser. 

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; SETUP ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

to setup

  ca

  setup-patches

  set-default-shape turtles "bug"

  ask turtles [create-bichos]

  reset-ticks 
  
end

to setup-patches

  ask n-of 100 patches [ set pcolor green ]

  ask n-of 500 patches [set pcolor yellow]

end

to create-bichos

  if breed = "escarabajo" [

    ask patches with [ pcolor = green ] [

      let k forest-carrying-capacity ; what I want is to create the maximum amount of beetles ;possible per patch, and this maximum is determined with a carrying capacity value, which is set ;with a slider.... 

      sprout-escarabajos k [set color 116 set size 6]
      ]
  ]
  
   if breed = "beetle" [

    ask patches with [ pcolor = yellow ] [

        let k agricultural-carrying-capacity

        sprout-beetles k [set color 76 set size 6] 
      ]
  ]

end

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; GO ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


to go

  if ticks = 72 [stop]

  ask turtles [rt random 360

    move
  ]
  

end

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;; PROCEDURES ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

to move

  if vagility = "High"

  [ask turtles [

    move-to one-of patches in-radius 2 

  ]
  ]
  
  if vagility = "medium"

  [ask turtles [

   move-to one-of neighbors

  ]
 ]
  
  if vagility = "low"

  [ask turtles [

   move-to one-of neighbors4

  ]
]

end 

就像我说的那样,代码似乎没有任何问题,但是当我按下设置按钮时,只会出现不同颜色的补丁...

2 个答案:

答案 0 :(得分:1)

您有ask turtles [create-bichos]行。这有三个问题。 (1)您还没有乌龟,所以没有乌龟要问,因此不会调用create-bichos过程。 (2)如果您确实已经有一些乌龟,那么这些乌龟中的每一个都会调用该过程,因此它们会要求补丁多次执行操作。 (3)breed是乌龟的装束,您不能将其用作选择器的名称。

作为一名学习者,您需要编写更小的代码,并确保每个代码都可以工作,然后再继续。因此,让我们想象一下,从创建海龟开始(因为这是您的问题),您的选择器被称为“繁殖选择”。解决方案是简单地删除ask turtles,但是作为第一步,您应该在引入更多代码之前简单地创建固定数量的海龟。

breed [escarabajos escarabajo]; type of beetles that survive in forests
breed [beetles beetle]; type of beetles that survive in agricultural areas 

to setup
  clear-all
  setup-patches
  set-default-shape turtles "bug"
  create-bichos
  reset-ticks 
end

to setup-patches
  ask n-of 100 patches [ set pcolor green ]
  ask n-of 500 patches [set pcolor yellow]
end

to create-bichos
  if breed-selector = "escarabajo"
  [ ask patches with [ pcolor = green ]
    [ sprout-escarabajos 5 [set color 116 set size 6]
    ]
  ]
  if breed-selector = "beetle"
  [ ask patches with [ pcolor = yellow ]
    [ sprout-beetles 5 
    ]
  ]
end

答案 1 :(得分:0)

使用create agent command private void MainForm_Activated(object sender, EventArgs e) { if (partner!= null) partner.WindowState = FormWindowState.Normal; } create-escarabajos <number>创建自定义品种的新代理