Я создаю дискретную модель событий с AnyLogic. Я хотел бы присвоить уникальный идентификатор каждому агенту, участвующему в процессе. Я включил переменную, ID и другую переменную, clientID. Когда объект получает «this.clientID = ID ++;» на выходе. Я заметил, что есть несколько агентов, которые получают один и тот же идентификатор. Есть ли способы присвоить уникальный идентификатор каждому агенту при входе в систему?
Уникальный идентификатор дискретной модели событий AnyLogic
Ответы (2)
У каждого агента есть уникальный идентификатор, он генерируется внутри и может быть возвращен функцией getId()
.
Уникальный идентификатор может быть сгенерирован, как вы описываете. Затем у вас должен быть пользовательский тип агента с переменной clientID
на холсте. Source
блок должен создавать новых агентов этого типа. Main
должна иметь на холсте переменную с именем ID
. Код действия On At Exit блока Source
должен быть: agent.clientID = ID++;
Кстати, вызов getIndex()
небезопасен, поскольку он возвращает индекс агента в популяции. Если размер популяции изменится, индекс агента в популяции также может измениться. getIndex()
может возвращать один и тот же индекс для разных агентов, если они находятся в разной совокупности. Наконец, getIndex()
всегда возвращает -1
для автономных агентов.
Вам нужно понять, как работает агент:
если агент содержит переменную «ID», то каждый агент имеет собственное значение для «ID». Следовательно, все они получают одно и то же значение, когда каждый из них индивидуально выполняет код «ID ++».
Каждый агент уже имеет уникальный идентификатор, присвоенный AnyLogic при его создании. Вы можете получить его с помощью myAgent.getIndex ().
надеюсь это поможет