ЛЮБОЙ? ожидаемый ввод будет набором агентов, но вместо этого получил номер 0 - PullRequest
1 голос
/ 09 мая 2020

Я пытаюсь выбрать ближайший к резаку свободный носитель и отправить их, чтобы забрать металлический лист из поставки, чтобы резак разрезал. Это соответствующий код:

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

Я получаю следующее сообщение об ошибке:

«ЛЮБОЙ? Ожидаемый ввод будет набором агентов, но вместо этого получил номер 0»

Как мне сделать эту функцию по назначению?

1 Ответ

1 голос
/ 09 мая 2020

Я предполагаю, что ошибка заключается в следующем:

if any? cutter-closest-free-carrier[

В качестве глобальной переменной cutter-closest-free-carrier инициализируется NetLo go равным нулю. Если в

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-carrier будет отдельным агентом в результате min-one-of, а не набором агентов.

Итак, сначала инициализировать cutter-closest-free-carrier как nobody либо в настройках, либо в начале to cut. Затем измените тест на наличие cutter-closest-free-carrier на

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

Я думаю, это должно сработать.

Надеюсь, это поможет, Чарльз

...