2016-04-24 5 views
0

Я совершенно новый с Java & AnyLogic, поэтому, пожалуйста, зайдите на мой уровень для этого.AnyLogic Agent-based симуляторы передачи значений

Есть ли способ для агентов получить переменную ценность от другого агента? В этом случае агенты будут одного типа. Таким образом, все они имеют одинаковые переменные, но поскольку это переменные со случайными начальными значениями, а не с параметрами, значения не совпадают.

Агенты также первоначально подключены через соединения Small-World, и эти соединения не изменяются во время прогонов.

Как агенты, происходящие в событии, например, собирают значение переменной от другого агента (например, агент i получает переменное значение X агента j). Это значение будет помещено в небольшое уравнение, чтобы изменить значение переменной X агента i. Другими словами, агент i будет подвержен влиянию связанного с ним агента j, следовательно, изменив его значение X.

Я пробовал несколько комбинаций .getConnectedAgent() и .get без каких-либо успехов. Теперь я пытаюсь извлечь значения X для каждого агента в базу данных, а затем использовать эту базу данных для сбора значения X агента j агентом i, но я не делаю никакого прогресса там.

Значения, которые необходимо извлечь, - double s, но я мог бы изменить переменные на целые числа, если было бы проще.

+0

Для того, чтобы Вениамина (хорошо) ответить более четко, если вы хотите, чтобы получить значение в AnyLogic переменной х из первого агента вы подключаетесь, вы будете использовать 'getConnectedAgent (0). x'. (Нуль в скобках указывает AnyLogic *, который * подключен агент, который вы хотите использовать, где ноль является первым. Если вы использовали сетевую среду малого мира, AnyLogic установил для вас нуль или более соединений, где порядок в этом случае равен немного нерелевантно.) –

+0

Вам также нужно было бы проверить, что * было * действительно соединение для текущего Агента, которого может не быть, например, вы бы поместили код внутри 'if (connectedNumber()> 0) 'block. –

ответ

1

Нет необходимости извлекать это в базу данных. Вы должны немного научиться об объектно-ориентированном программировании, ваша проблема имеет меньше общего с AnyLogic и многое другое с использованием Java.

Если у вас есть совокупность агентов, называемых «MyAgents», где каждый агент имеет переменную var со случайным двойным значением, тогда агент 12 может получить двойное значение агента 14, вызвав var = get_Main().MyAgents.get(13).var.

Адрес: var Адрес электронной почты указана слева. get_Main() занимает один уровень в иерархии для доступа к своему собственному населению и другим агентам. Затем он обращается к 14-му агенту (Java является нулевым) и его значение var.

Если вы планируете использовать getConnectedAgent(), вам необходимо сначала связаться с агентами. Это делается в некоторой степени, если вы используете «Малый мир», но часто вы хотите определить соединения вручную. В статье обратитесь к статье «Ссылка на агент».

веселит