寻找最近的代理商

Finding the closest agent

我想找到最近的代理,例如,如果我有两个品种狐狸和兔子。如何为每只狐狸找到最近的兔子。我想出了以下代码,它在列表中存储了从每只狐狸到特定半径内的兔子子集的距离。

我想知道是否有更好的and/or更简单的方法来制作这个 netlogo?

breed [rabbits rabbit]
breed [foxes fox]

foxes-own [closest-rabbit]

to setup
  clear-all

  create-rabbits 10
  create-foxes 2

   ask rabbits[
      setxy random-xcor random-ycor
      set color white
   ]

   ask foxes[
    setxy random-xcor random-ycor
    set color orange
  ]

 end

to go

  ask foxes[
    let rabbits-in-range rabbits in-radius 10
    let dist-list []
    let rabbit-list []

    ask rabbits-in-range[
      set dist-list lput distance myself dist-list
      set rabbit-list lput self rabbit-list

      let min-dist-idx position (min dist-list) dist-list
      set closest-rabbit item min-dist-idx rabbit-list
    ]
      ]  
end

你试过这样的东西吗?

ask turtles [ show min-one-of other turtles [distance myself] ]

更一般的形式

ask <agent_set> [ <function> min-one-of <agent_set> [distance myself] ]

你的情况是 ask foxes [ set closest-rabbit min-one-of rabbits [distance myself] ]

breed [rabbits rabbit]
breed [foxes fox]

foxes-own [closest-rabbit]

to setup
  clear-all

  create-rabbits 10
  create-foxes 2

   ask rabbits[
      setxy random-xcor random-ycor
      set color white
   ]

   ask foxes[
    setxy random-xcor random-ycor
    set color orange
  ]

 end

to go

  ask foxes[
    show min-one-of rabbits [distance myself]
    set closest-rabbit min-one-of rabbits [distance myself]
    face closest-rabbit
      ]  
end

您还可以查看其他相关问题

Minimum distance between turtles