Поскольку в системной динамике для циклов с обратными связями характерным является наличие временных задержек: сначала задержка между решением и следствием от него, а затем, задержка между следствием и тем моментом времени, когда информация об этом следствии повлияет на новое решение, то AnyLogic предлагает специальную функцию для задания таких задержек — delay.
Например, в классической модели диффузии по Бассу с помощью функции задержки моделируется поток отказа от приобретенного ранее товара вследствие истечения срока его службы. В этой модели люди перемещаются из накопителя клиентов обратно в накопитель потенциальных клиентов с интенсивностью, равной по сути интенсивности приобретения продукта, задержанной на время срока службы этого продукта.
Функция delay может вызываться в формулах, вычисляющих значения потоков. Пожалуйста, не обращайте внимание на то, что эта функция не присутствует в списке функций мастера подстановки кода — просто вводите имя этой функции там, где вам это нужно.
У функции delay есть два различных синтаксиса:
delay(<поток>, <время задержки>, <начальное значение>)
Функция задерживает заданный поток на указанное время.
Здесь поток — либо имя переменной типа поток, либо выражение любой сложности, возвращающее численное значение.
Время задержки — либо константа, либо численное выражение (например, вызов функции, возвращающей численное значение, или численный параметр). Если значение времени задержки будет отрицательным или равно нулю, то функция задержки просто вернет текущее значение заданного потока.
До того момента, пока не пройдет заданное время задержки, функция задержки будет возвращать начальное значение.
delay(<поток>, <время задержки>)
Упрощенный вызов функции. Используется в тех случаях, когда начальное значение равно нулю.
Так, в описанном выше примере формула для потока ИнтенсивностьОтказаОтПродукта будет выглядеть так:
delay(ИнтенсивностьПродаж, СрокЖизниПродукта)
Приведенный ниже график иллюстрирует работу функции задержки:
-
Как мы можем улучшить эту статью?
-