Уникальный идентификатор дискретной модели событий AnyLogic

Я создаю дискретную модель событий с AnyLogic. Я хотел бы присвоить уникальный идентификатор каждому агенту, участвующему в процессе. Я включил переменную, ID и другую переменную, clientID. Когда объект получает «this.clientID = ID ++;» на выходе. Я заметил, что есть несколько агентов, которые получают один и тот же идентификатор. Есть ли способы присвоить уникальный идентификатор каждому агенту при входе в систему?


person JFI    schedule 02.08.2017    source источник


Ответы (2)


У каждого агента есть уникальный идентификатор, он генерируется внутри и может быть возвращен функцией getId().

Уникальный идентификатор может быть сгенерирован, как вы описываете. Затем у вас должен быть пользовательский тип агента с переменной clientID на холсте. Source блок должен создавать новых агентов этого типа. Main должна иметь на холсте переменную с именем ID. Код действия On At Exit блока Source должен быть: agent.clientID = ID++;

Кстати, вызов getIndex() небезопасен, поскольку он возвращает индекс агента в популяции. Если размер популяции изменится, индекс агента в популяции также может измениться. getIndex() может возвращать один и тот же индекс для разных агентов, если они находятся в разной совокупности. Наконец, getIndex() всегда возвращает -1 для автономных агентов.

person Gregory Monahov    schedule 09.08.2017

Вам нужно понять, как работает агент:

если агент содержит переменную «ID», то каждый агент имеет собственное значение для «ID». Следовательно, все они получают одно и то же значение, когда каждый из них индивидуально выполняет код «ID ++».

Каждый агент уже имеет уникальный идентификатор, присвоенный AnyLogic при его создании. Вы можете получить его с помощью myAgent.getIndex ().

надеюсь это поможет

person Benjamin    schedule 06.08.2017