Есть ли способ изменить агент в буферной зоне Repast HPC Grid и распространить эти изменения обратно на исходный агент?

Мой вопрос касается модификации агентов в другом процессе. Я использую сетку, где у меня есть статические агенты, по одному агенту на ячейку сетки. Каждый агент может получить своих непосредственных соседей с помощью Moore2DGridQuery. Затем, в зависимости от состояний соседних агентов, они могут выбрать одного из своих соседей и изменить свое состояние. Примерно так же и с людьми и зомби, где зомби может заразить человека. Однако, поскольку агент может модифицировать непосредственного соседа, это означает, что сосед может быть агентом в буферной зоне. Итак, если я хочу «заразить» агента в буферной зоне и передать это обратно исходному агенту, каков наилучший возможный подход к этому?

1 ответ

Там действительно нет встроенного способа сделать это. Синхронизация идет от оригинала к фантомному/буферизованному агенту. Намерение состоит в том, чтобы не-призрачные (небуферизованные) агенты были активны и могли бы, например, оглядываться на своих соседей, а затем каким-то образом изменяться. Можно ли реорганизовать поведение вашего агента с учетом этого?

Вы можете запрограммировать свой собственный механизм для этой обратной синхронизации, но вам придется использовать MPI напрямую, отправляя идентификаторы агентов и обновленное состояние, а не любой из механизмов синхронизации Repast HPC. Если вы делаете это, вероятно, самый простой способ - отправить все изменения в ранг 0, а затем получить ранг каждого запроса ранга 0 для любых применимых изменений. Опять же, хотя это программирование MPI и не имеет строгого отношения к Repast HPC.

Другие вопросы по тегам