任何?预期输入为代理集,但改为使用数字0

问题描述 投票:1回答:1

我正在尝试选择最接近切割机的空载架,然后将其送出以从交货时取回金属片,以便切割机进行切割。这是相关代码:

globals[
  metal-sheets
  cutter-closest-free-carrier]
breed[carriers carrier]`
to cut  
  let free-carriers carriers with [laden = false]  
  let cutter patches with [machine-type = "cutter"] 
  let delivery patches with [area = "delivery"]  

  ask cutter [
  if status = "import" [
      set cutter-closest-free-carrier min-one-of free-carriers[distance myself]]   ]

  if any? cutter-closest-free-carrier[
      ask cutter-closest-free-carrier [
      face delivery 
      fd 0.01
      set metal-sheets cars-here
      if any? metal-sheets [
        create-link-to one-of metal-sheets [tie]
        face cutter
        fd 0.01
        ask cutter[set status "pending"]] 
    ]    
  ]
end

我收到的错误消息是:

“ ANY?预期输入为代理集,但改为使用数字0。”

我如何以预期的方式实现此功能?

netlogo
1个回答
1
投票

我假设错误是由于此:

if any? cutter-closest-free-carrier[

作为全局变量,NetLogo将cutter-closest-free-carrier初始化为零。如果在

ask cutter [
  if status = "import" [
      set cutter-closest-free-carrier min-one-of free-carriers[distance myself]]   ]

status不等于“ import”,那么当您将cutter-closest-free-carrier应用于any?时,其仍为零。因此错误。还有另一个问题-any?应该应用于代理集,即使status = "import",由于cutter-closest-free-carriermin-one-of将是单个代理,而不是代理集。

因此,首先在您的设置中或在cutter-closest-free-carrier的开头将nobody初始化为to cut。然后将cutter-closest-free-carrier的测试更改为

if cutter-closest-free-carrier != nobody [

我认为应该这样做。

希望这会有所帮助,查尔斯

© www.soinside.com 2019 - 2024. All rights reserved.