2017-02-04 12 views
0

Мой источник имеет следующий код в поле «Вкл. При выходе»: TRUCK.ID_number = параметр; параметр = параметр + 1;Anylogic присваивает значение всем объектам, а не только одному

Затем каждый грузовик получит ID: 1, 2, 3, ...

Проблема заключается в том, что все грузовики циркулируют в то же время, и это выглядит как каждый раз, когда генерируется новый грузовик и код запускает его сбрасывает ID для всех грузовиков.

Например: Когда у источника 4 (ID = 4) создается источник, все другие грузовики получают ID 4, поэтому я не могу знать правильный идентификатор каждого грузовика.

Что я делаю неправильно?

+0

Где вы держите ваш 'parameter' поле и какого типа? Если это «Integer», а не 'int', вы получите упомянутые вами симптомы, потому что« ID_number »- это ссылка на объект. Если что-то вроде этого, я могу объяснить больше в ответе ... –

+0

параметр находится в главном окне, введите «int». Я действительно потерялся здесь. Это должно быть что-то очень просто ... Идентификаторы записей и другие характеристики каждого объекта во время процесса затем собирают информацию в конце (раковина) – Leo

ответ

1

несколько вещей. Во-первых, вам нужно использовать ключевое слово agent в поле кода onExit. Так что в вашем случае, agent.ID_number=parameter. Прочитайте эти ключевые слова, которые появляются везде в кодах AnyLogic. Я называю это «волшебной лампочкой», также видеть мой блог на эту тему:

The magic lightbulb

Во-вторых, вновь созданные агенты автоматически получают уникальный индекс (если они принадлежат к одной и той же популяции). Вы можете получить доступ к этому методу, используя метод getIndex() внутри вашего агента грузовика.

+0

Спасибо! Но я все еще думаю, что я делаю что-то неправильно здесь. Когда я добавляю код, который вы сказали, я получаю сообщения об ошибках. agent.ID_number = параметр ===> агент не может быть разрешен к переменному Agent.ID_number = параметру ===> ID_NUMBER не может быть распознавателя или не является поле Entity.ID_number = параметр ===> Сущность не может быть разрешено переменной entity.ID_number = параметр ===> ID_number не может быть преобразователем или не является полем – Leo

+0

, вам нужно использовать нижний регистр «агент», а не «Агент». Вам действительно нужно прочитать эти ключевые слова и на Java-программирование в целом. Это очень чувствительный к регистру. Кроме того, убедитесь, что вы ввели его в поле кода, которое фактически поддерживает ключевое слово «агент» (прочитайте мой блог о том, как это сделать). надеюсь, что помогает – Benjamin

-1

Ответ: Использование entity.ID_number = параметр

+0

Лев, это «сущность» в AnyLogic 6 (и устаревшая корпоративная библиотека в AnyLogic 7). Тем не менее, это «агент» в AnyLogic 7. Укажите, какую версию вы используете, если используете более старые версии программного обеспечения. ура – Benjamin