Использование функции timeInState в Anylogic - PullRequest
1 голос
/ 03 февраля 2020

Итак, для моего проекта в области промышленного проектирования я создаю имитацию и оптимизацию модели склада в программном обеспечении Anylogi c. Я хочу знать, сколько времени мой сборщик тратит на то, чтобы быть занятым (что движется), и поэтому я наткнулся на эту встроенную функцию timeInState. Это помогает мне определить общее время, проведенное сборщиком в «занятости».

Проблема, с которой я сталкиваюсь, заключается в том, что при вызове этой функции я не получаю значения (0), но мои сборщики явно движутся в модели. Возможно, параметры, которые я даю, не являются правильным способом сделать это. Я думал, может ли кто-нибудь, знакомый с этим, помочь мне? , Чтобы прояснить функцию, ее значение и инициализация параметров приведены ниже:

double timeInState (состояние ResourceUsageState) - возвращает время, проведенное модулем в данном «состоянии использования». Параметр: state - состояние (ResourceUsageState.USAGE_IDLE или ResourceUsageState.USAGE_BUSY)

Спасибо за помощь!

Ответы [ 2 ]

0 голосов
/ 06 февраля 2020

Функция timeInState работает для захвата занятого времени, поэтому у вас должна быть другая проблема. Вы должны называть его так же, как <resource reference>.timeInState(ResourceUsageState.USAGE_BUSY) или (указав единицы времени) <resource reference>.timeInState(ResourceUsageState.USAGE_BUSY, TimeUnits.MINUTE).

Вам нужно будет дать больше контекста, чтобы понять, почему он не работает для вас.

Вы также захватывает и освобождает этих агентов как ресурсы в праве ResourcePool?

0 голосов
/ 03 февраля 2020

Функция timeInState не имеет ничего общего с диаграммами состояний, но записывает продолжительность ресурсов. Он назван довольно к сожалению ...

Не существует встроенного способа измерения длительности состояний (по уважительным причинам ;-)).

Самое простое решение:

  1. создать двойную переменную timer и еще одну timeInStateX
  2. при входе в ваше состояние X, установить timer=time()
  3. при выходе из вашего состояния X, добавить продолжительность как timeInStateX += (time()-timer

Убедитесь, что случайно не перезаписали таймер из другого места, хотя

...