Как записать данные из журнала базы данных на выход в anylogic? - PullRequest
0 голосов
/ 26 апреля 2019

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

https://imgur.com/R5DG51a

Однако я хотел бы записать данные из блока 5 (распыление) на выход, чтобы сохранить данные при запуске нескольких симуляций.

https://imgur.com/MwPBvO8

Я предполагаю, что значение reffence должно выглядеть примерно как выражение ниже. Однако он не работает, поэтому я бы очень признателен, если кто-нибудь сможет мне помочь или предложить альтернативное решение для получения данных.

flowchart_stats_time_in_state_log.total_seconds.spraying;

Btw. Доза измерения времени не работает для этой ситуации, так как мне нужно знать общее количество времени, проведенного в блоке после 12-часовой смены. со временем я не получаю данные от операторов, которые все еще находятся в блоке, когда симуляция заканчивается.

Ответы [ 2 ]

0 голосов
/ 27 апреля 2019

Другой альтернативой может быть переменная для отслеживания времени в блоке, увеличивающаяся при выходе агентов.В конце выполнения вам нужно будет вызвать функцию для перебора операторов, которые все еще находятся в блоке, чтобы добавить их время.AnyLogic позволяет вам довольно легко зацикливаться на очередях, задержках или чем-либо, что содержит агентов:

for( MyAgent agent : delayBlockName ){
   variable += time() - agent.enterBlockTime;
}

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

0 голосов
/ 27 апреля 2019

Исходя из цели суммирования всех времен обработки, вы можете решить ее математически.Установите выходное значение равное block.statsUtilization.mean () * вместимость * время (), рассчитанное в конце моделирования.

Например, если у вас есть емкость 1 и продолжительность пробега 100 минут, то если выимел коэффициент использования 50%;это означает, что у вас был агент в блоке в течение 50 минут.Использование = занятость / общее время.Из-за этого отношения мы можем вычислить, как долго агенты фактически находились в блоке.

...