один параметр агента sendig для воздействия на других агентов в Anylogic - PullRequest
0 голосов
/ 16 января 2019

У нас есть 500 агентов. У каждого есть параметр int и переменная int.

Если я хочу отправить параметр каждого агента по сообщению, чтобы изменить переменную другого агента, каково ваше решение?

Например, у нас есть «accept» в качестве параметра и «Opi» в качестве переменной для всех агентов. Мы отправляем "accept" всем агентам. Когда агент 1 отправляет свое «принять» агенту 2, я хочу установить «Opi.2= Opi.2 + accept.1», но Anylogic устанавливает его как «Opi.2= Opi.2 + accept.2».

Я определил переменную-посредник:

mediator

Отправка сообщения:

message

Действие:

Action

Ответы [ 2 ]

0 голосов
/ 16 января 2019

Надеюсь, я понимаю ваш вопрос:

Во-первых, чтобы отправить сообщение от одного агента другому, вы можете использовать функцию отправки. Если ваше сообщение отправляется от агента1 к агенту2, для отправки X вы будете использовать: send (X, agent2)

Во-вторых, в соединениях с агентом вы будете определять сообщения как int, а для полученных сообщений вы можете сделать Y=Y+msg; connections Обратите внимание, что msg - это X, полученный от agent1.

EDIT: Отправленное сообщение можно прочитать только в элементе соединений, как я уже говорил ... в вашем случае, когда вы используете переменную-посредник при переходе, вы используете переменную-посредник агента, а не ту, которая была отправлена. Единственный способ сделать это так, как я только что показал вам.

0 голосов
/ 16 января 2019

Что ж, вам нужно получить доступ к параметру agent1 X1. Было бы полезно, если бы вы поделились некоторыми скриншотами и реальными именами объектов, но в вашей нотации вам понадобится что-то вроде этого, при условии, что у вас есть популяция агентов, встроенная в main, где живут все агенты (и предположим, что агенты 1 и 2 - это один и тот же агент тип), и при условии, что мы сделаем обновление агента 2, это X

X = X + main.myAgentPopulation.get(0).Y

Также предполагается, что «агент 1» - самый первый агент в вашей группе.

Лучше всего, если вы поделитесь некоторыми подробностями или лучше узнаете ООП на основе Java (вы не находитесь в мире наук о массивах, тензорах и матрицах :-)).

ура

...