Измерение времени нахождения пакетов в системе в AnyLogic - PullRequest
0 голосов
/ 09 июля 2020

Как вы можете измерить время, затраченное этой партией на определенной блок-схеме, в процессе, когда партия сначала раздается, а затем снова группируется несколько раз с сохранением размера партии. Использование "timeMeasureStart / End" не работает, учитывая, что когда агент не используется в пакетах и ​​пакетах, это похоже на создание нового агента с нуля. Также попытка добавить переменные времени начала и окончания для типа пакетного агента не работает, потому что после отмены пакетной обработки и повторной пакетной обработки переменные повторно инициализируются. Чтобы продемонстрировать это, я добавил четыре изображения ниже.

Блок-схема

Свойства партии

Свойства партии1

Результат

Вот ссылка для скачивания модели https://wetransfer.com/downloads/a7550e58151c3ee38b16ceb27281c48220200713170914/2e6da6

Ответы [ 2 ]

0 голосов
/ 19 июля 2020

Наконец-то я нашел способ решить проблему. Поскольку каждый раз, когда пакет не распартирован, переменные повторно инициализируются на 0, решение состоит в том, чтобы наследовать время запуска рассоединенным агентам. Таким образом, на изображении ниже и пакетный, и элементный агент будут иметь переменную с именем "start". Тип пакета дополнительно будет иметь переменную с именем "end".

Образ процесса

Соответственно, необходим следующий код:

  • Блокировать «пакетирование» при выходе: batch.start = time ();
  • Блокировать «unbatch» при выходе: agent.start = batch.start; (элементы наследуют начало от пакета)
  • Блок "batch1" При добавлении: batch.start = agent.start; (в отличие от предыдущего блока, пакет наследует время начала от элементов)
  • Блок "batch1" При выходе: batch.end = time ();

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

0 голосов
/ 09 июля 2020

Просто используйте блоки кода внутри используемых вами элементов Batch и Unbatch.

Создайте переменную в вашем агенте, для которого выполняется пакетирование / отключение, например totalTime. Также переменная, измеряющая индивидуальное время, которое он проводит в работе, например currentTimeBatching.

Затем добавьте их по отдельности по мере необходимости, например: введите описание изображения здесь

(особенности зависят от настройки вашей модели, это общий способ сделать это)

...