Перемещение агента на основе значения вероятности / атрибута точки и расстояния до точки, NetLogo - PullRequest
0 голосов
/ 04 мая 2019

У меня есть набор точек, реализованных в netlogo, и агенты перемещаются из одной точки в другую. Каждая точка имеет вес (число приблизительно между 0 и 9, это не вероятность). То, что я хочу сделать, это простое правило. Я хочу дать всем точкам вероятность посещения по значению веса. Таким образом, следующая точка, которую посетит агент, должна быть рассчитана по вероятности, основанной на весе точки и точке близости (более близкая точка - большая вероятность), но эта близость не такой большой фактор, как вес точки. Например, я хотел бы установить в формуле, что близость вдвое ниже, чем вес точки.

Я исследовал расширение rnd, но я не уверен, как добавить вероятности к точкам, которые у меня много (примерно около 250 баллов).

1 Ответ

3 голосов
/ 04 мая 2019

Вы на правильном пути с расширением rnd.Из этого расширения вам нужен примитив weighted-one-of, и вы просто помещаете формулу в блок репортера.

Я думаю, это что-то вроде того, что вы хотите.Это полная модель, поэтому вы можете запустить ее и посмотреть, что она делает.Блок репортера использует вес и расстояние в вероятности.Так как вы хотите, чтобы вероятность была больше, ближе я использовал обратное расстояние, но вы могли бы просто вычесть расстояние из чего-то вроде максимального расстояния в модели.Вам также понадобится соответствующий коэффициент масштабирования (вместо 10 в моем примере), чтобы вес был вдвое больше среднего значения близости.

extensions [rnd]

turtles-own [weight]

to testme
  clear-all
  create-turtles 10
  [ setxy random-xcor random-ycor
    set weight 1 + random 3
    set size weight
    set color blue
  ]
  ask one-of turtles
  [ set color red
    let target rnd:weighted-one-of other turtles [ 2 * weight + 10 / distance myself ]
    ask target [ set color yellow ]
  ]
end
...