Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
NetLogo:如何限制blob大小?_Netlogo - Fatal编程技术网

NetLogo:如何限制blob大小?

NetLogo:如何限制blob大小?,netlogo,Netlogo,我想在获取补丁的过程中创建一种反馈。在一个时间步中,我想: 选择修补程序获取修补程序 降低相邻补丁的成本 达到一定程度 在相邻单元格中继续收获(选择) 连接的修补程序的最大数量跨越某个级别,移动到其他地方 向blob附近的单元格添加“保护” 简单地说,补丁的收获总是会降低相邻补丁的成本,但是我的连接blob不能超过特定的大小(即补丁的数量) 以下是我到目前为止所做的工作-通过结合不同的收割技术(切掉第一个补丁,是否继续按blob收割…)。然而,我相信有一个最简单的方法来让它工作 global

我想在获取补丁的过程中创建一种反馈。在一个时间步中,我想:

  • 选择修补程序获取修补程序
  • 降低相邻补丁的成本 达到一定程度
  • 在相邻单元格中继续收获(选择)
  • 连接的修补程序的最大数量跨越某个级别,移动到其他地方
  • 向blob附近的单元格添加“保护”
简单地说,补丁的收获总是会降低相邻补丁的成本,但是我的连接blob不能超过特定的大小(即补丁的数量)

以下是我到目前为止所做的工作-通过结合不同的收割技术(切掉第一个补丁,是否继续按blob收割…)。然而,我相信有一个最简单的方法来让它工作

globals [
  limit_harvest ]

patches-own [
  forest?
  cost
]

to setup
  clear-all
  setup-patches
  setup-turtles
  reset-ticks
end

to setup-patches
  ask patches [
    set pcolor green
    set forest? TRUE
    set cost 20
  ]
end

to setup-turtles
  crt 1
end

to go
  if any? patches with [forest? = TRUE] [
    harvest ]
  if ticks mod 20 = 0 [
    set limit_harvest 0 ]

  tick
end

to harvest
  ask turtles [
    ifelse by_blob? = FALSE [
     ; let min_cost min-one-of patches []
      move-to one-of patches with [
         forest? = TRUE]
      set pcolor red
      set forest? FALSE
      decrease_cost
    ]
    [ print "continuous"
      ifelse limit_harvest <= 10 [   
         let min_cost min-one-of patches with [forest? = TRUE ] [cost]      
         move-to min_cost
         ;min-one-of patches with [forest? = TRUE] [distance myself]
         rt 360
         set pcolor red
         set forest? FALSE
         decrease_cost
         set limit_harvest limit_harvest + 1
     ]
      [ move-else ]
     ]
  ]
end

to move-else
  move-to one-of patches with [forest? = TRUE ]
  set pcolor yellow
  set forest? FALSE
  decrease_cost
  set limit_harvest limit_harvest + 1
  harvest2
end

to harvest2
  ifelse limit_harvest <= 10 [   
         let min_cost min-one-of patches with [forest? = TRUE ] [cost]      
         move-to min_cost
         ;min-one-of patches with [forest? = TRUE] [distance myself]
         rt 360
         set pcolor red
         set forest? FALSE
         decrease_cost
         set limit_harvest limit_harvest + 1
     ]
      [ move-else ]
end


to decrease_cost
  ask patches in-radius 1 [ 
    set cost (cost  * 0.95 )]
   ask patches in-radius 2 [ 
    set cost (cost  * 0.85 )]
   ask patches in-radius 3 [ 
    set cost (cost  * 0.75 )]
   ask patches in-radius 4 [ 
    set cost (cost  * 0.65 )]
end

to view_cost
  ask patches [
    set pcolor scale-color red cost 10 0
  ]
end 
globals[
限制[收获]
补丁自己[
森林?
成本
]
设置
清除所有
安装补丁
安置海龟
重置滴答声
结束
设置修补程序
询问补丁[
将颜色设置为绿色
设定森林?真的吗
固定成本20
]
结束
安置海龟
阴极射线管1
结束
外带
如果有的话?具有[forest?=TRUE]的修补程序[
收获]
如果刻度mod 20=0[
设置限制\u 0]
打上钩
结束
收获
问海龟[
ifelse by_blob?=错误[
;让min_花费min一个补丁[]
移动到具有的修补程序之一[
森林?=真的]
设置颜色为红色
设置森林?错误
降低成本
]
[打印“连续”
如果不是这样的话,就限制你的收获