Repast: Порядок выполнения агента - PullRequest
2 голосов
/ 10 февраля 2020

У меня есть агент по имени грузовик, который будет выполнять некоторые действия (например, загрузка пакетов). Проблема здесь связана со случайной последовательностью агентов, выполняющих действия. Например, предположим, что у меня есть три грузовика, последовательность загрузки является случайной при каждом отдельном пробеге.

Run-1: truck-1, truck-3, truck-2
Run-2: truck-2, truck-1, truck-3
Run-3: truck-3, truck-1, truck-2
...

Как убедиться, что агент (грузовик) выполняет действия на основе последовательности, например, по их идентификатору, чтобы мы всегда можем получить постоянный результат моделирования.

Run-1: truck-1, truck-2, truck-3
Run-2: truck-1, truck-2, truck-3
Run-3: truck-1, truck-2, truck-3
...

1 Ответ

3 голосов
/ 10 февраля 2020

Есть как минимум 3 способа сделать это.

  1. Если вы установите случайное начальное число, порядок грузовиков должен быть одинаковым на всех трассах, при прочих равных условиях. Скорее всего, он не будет упорядочен по идентификатору, но он должен быть таким же.

  2. Добавьте все грузовики в ArrayList, когда они будут созданы. Сортируйте этот список по идентификатору, и каждый тик симуляции перебирает этот список, выполняя действие грузовика для каждого грузовика. Быстрый Google должен показать вам, как заказать список Java, используя Компаратор.

  3. Адаптируйте расписание для отображения идентификатора грузовика - например, грузовик 1 выполняется на 1.0 и каждый тик после этого грузовик 2 на 1,1 и каждый последующий тик, грузовик 3 на 1,2 и т. д.

  4. Разновидность варианта 3. Установите приоритет планирования по id - все грузовики могут выполнить в 1.0 и каждый тик после этого, но с грузовиком 1, имеющим наивысший приоритет, с грузовиком 2 следующим и т. д.

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

...