Как получить агента, когда его имя? - PullRequest
0 голосов
/ 24 января 2020

В моей модели определено большое количество агентов. Они представляют области, которые были определены как объекты карты GISRegion и связаны с объектами карты с помощью селектора «запуск в узле». В функции Java моего главного агента AnyLogi c я читаю список имен агентов и их параметров из текстового файла CSV. В предыдущих моделях я использовал этот тип файла конфигурации для генерации групп агентов. Но в этом случае агенты предварительно определены, а имена в файле конфигурации используются для связи параметров с агентом. Я нашел несколько функций агента, которые будут получать агентов в зависимости от их местоположения или других агентов. Но я не нашел способа получить агента по имени. Есть ли функция, которая возвращает агента по имени, чтобы я мог установить значения его начальных параметров? Я надеялся на что-то вроде этого:

String agentName = “AnAgentName”;
Agent theAgent = get_Main().getAgent(agentName);

, где «AnAgentName» - это имя одного из существующих агентов.

Ответы [ 2 ]

1 голос
/ 27 января 2020

Это просто, если вы добавите агентов в коллекцию (LinkedHashMap) одновременно с их созданием. Например, если ваши агенты имеют тип Person, создайте коллекцию (агент палитры) со следующими параметрами:

Name: myCollection
Collection class: LinkedHashMap
Key elements class: String
Value elements class: Person

Теперь, когда вы создаете нового агента для населения, добавьте соответствующий агент в коллекцию. Например:

Person p;

p = add_people();

p.set_name("Ant-Man");
p.set_size(1.8);

if (!myCollection.containsKey(p.name))
    myCollection.put(p.name, p);

traceln("Ant-Man is " + myCollection.get("AntMan").size + " tall");
0 голосов
/ 26 января 2020

Агенты, входящие в группу, не имеют имен, доступ к ним можно получить только по индексу в группе (main.myPopuluation.get(x)).

Однако, если ваши агенты имеют параметр p_Name, Вы можете l oop по всему населению найти имя с указанным c name: findFirst(main.myPopulation, p->p.p_Name.equals"SomeName"), предполагая, что имя уникально для каждого агента.

Надеюсь, это то, что вам нужно (не полностью ясно еще ;-)).

...