Трапеза: Распоряжение агента

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

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
...

person Jack    schedule 10.02.2020    source источник


Ответы (1)


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

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

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

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

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

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

person Nick Collier    schedule 10.02.2020