Расстояние между двумя разными породами агентов от контекста конкретного агента - PullRequest
1 голос
/ 19 сентября 2019

В моей модели есть три вида агентов;люди, автобусные остановки и рабочие места.Каждому человеку назначается рабочее место (job) и он выбирает автобусную остановку (chosen-bus-stop), с которой можно поехать на работу.Я выяснил, как найти расстояние между конкретным человеком и его job и их chosen-bus-stop, используя эту ветку для руководства: Как я могу вычислить расстояние между двумя патчами? .Но сейчас я изо всех сил пытаюсь найти расстояние между chosen-bus-stop человека и его job.Любые идеи будут высоко оценены!

Вот мой код установки:

breed [people person]
breed [workplaces workplace]
breed [transit-stops transit-stop]

people-own
[ ownHome
 job
 distance-to-job
 chosen-bus-stop
 distance-to-my-bus-stop
 distance-bus-stop-to-job ]

workplaces-own
[ location
 location-type ]

create-workplaces 1000
 [ set shape "triangle 2"
   set color 12
   set size 0.6 ]

create-people population
 [ set shape "circle"
   set color 4
   set size 0.4
   set job one-of workplaces
   set job-location [location] of job ]

create-transit-stops 800
 [ set shape "flag"
   set color blue 
   move-to one-of patches ]

;; I can work out the distance from a particular agent to their ```chosen-bus-stop``` and their ```job```:*

ask people
 [ set distance-to-job [ distance myself] of job
   set chosen-bus-stop one-of transit-stops with [color = blue] in-radius 9
   set distance-to-my-bus-stop [distance myself] of chosen-bus-stop ]

;; But when I try something similar to find the distance from the bus stop to their job I get this error: TRANSIT-STOPS breed does not own variable JOB*

   set distance-bus-stop-to-job [ distance job ] of chosen-bus-stop  

 ]
end

1 Ответ

2 голосов
/ 19 сентября 2019

Попробуйте:

set distance-bus-stop-to-job [ distance [ job ] of myself ] of chosen-bus-stop

Или:

let my-job job
set distance-bus-stop-to-job [ distance my-job ] of chosen-bus-stop

Важно помнить, что (как и ask) примитив of вносит изменение контекста.В этом случае это означает, что блок репортера, предшествующий of, выполняется в контексте chosen-bus-stop и (как сообщает нам сообщение об ошибке) автобусная остановка не имеет прямого доступа к переменной job, котораяявляется people-own переменной.

...