Дополнительные возможности Библиотеки моделирования потоков и подсказки пользователю

Привет всем пользователям AnyLogic!

Как вы уже убедились из наших предыдущих постов, библиотека моделирования потоков является удобным инструментом для построения моделей с участием жидкостей и сыпучих материалов. Сегодня мы расскажем о продвинутых «фишках» библиотеки. Надеемся, они помогут вам в дальнейшей работе. Итак, начнем!

В прошлой статье в описании модели АЗС вы, возможно, заметили два похожих пользовательских блока: Split4 и Dispenser. Они позволяют упростить модель и сделать ее более интуитивно понятной. Например, вы можете создать и сохранить блоки Split6, Split8, SelectOutput4 и другие аналогичные элементы для повторного использования в своих моделях.


Вид блоков Split4 и Dispenser

Еще одна интересная особенность библиотеки моделирования потоков – учёт времени, в течение которого партии находятся в определенном состоянии. Если скорость потока равна 1, а он, в свою очередь, перемещается в резервуар с бесконечной вместимостью, то фактический объем жидкости в резервуаре равен модельному времени (убедитесь, что единицы измерения времени совпадают). Действия на входе и на выходе из состояния открывают и закрывают клапан, регулирующий поток, поэтому резервуар Tank точно отражает время агента в соответствующем состоянии.

Альтернативным методом учета времени являются отдельные счетчики и системно-динамическая диаграмма Flow->Stock. С точки зрения производительности, отдельные счетчики являются эффективными, но тогда нужно создать логическую структуру, которая будет вычислять разницу времени входа и выхода для каждого состояния и увеличивать значение соответствующего счетчика. Решение, представленное в системной динамике, проще, но значительно снижает производительность, что делает такой способ неприменимым к моделям с сотнями агентов. Библиотека моделирования потоков не использует решатель дифференциальных уравнений, поэтому расчеты в ней осуществляются очень быстро, а производительность близка к таковой в дискретных вычислениях. На всякий случай напомню, что встроенный в базу данных лог собирает информацию по времени нахождения агентов в определенных состояниях, но эти данные становятся доступны только после окончания эксперимента.

Теперь поговорим о численных ограничениях библиотеки. Скорость потока в модели ограничена блоком с наименьшей пропускной способностью. Максимально возможная скорость – 10 миллиардов кубических метров в секунду. Это естественное ограничение всех блоков с режимом неограниченной пропускной способности. Еще одна особенность состоит в том, что блок не может мгновенно создать и «вытолкнуть» определенное количество жидкости. Единственный блок, который может мгновенно изменить объем содержимого – это блок Fluid source.

Дадим последний совет относительно всех библиотек AnyLogic: обращайте внимание на динамические свойства блоков. Так, блоки «жидкой» библиотеки могут иметь разные свойства в зависимости от заданного режима работы. Например, блок Fluid Source имеет два режима: Объем не ограничен и Ограниченный объем, inject() для пополнения. Второй режим имеет два дополнительных действия: При опустошении и При новой партии на выходе. Также не забывайте проверять доступные локальные переменные. Очевидно, что действие При новой партии относится к новой партии с локальной переменной batch, аналогично локальной переменной agent в действиях блоков Библиотеки моделирования процессов. Кстати, наш пользователь Бенджамин Шуман написал полезную статью (на англ. языке) об использовании локальных переменных. Рекомендуем к прочтению! :)


Динамические свойства блока Fluid Source. Лампочка-подсказка с локальными переменными появляется, когда вы начинаете печатать в строке.

В конце я хотел бы упомянуть другие модели, которые демонстрируют возможности Библиотеки моделирования потоков: Crude Oil Pipeline Network (нефтепроводная сеть) и Grain Terminal (зерновой терминал). Их вы сможете найти в примерах на главной странице программы AnyLogic. Это довольно сложные модели, они демонстрируют работу библиотеки в интеграции с ГИС-пространством и встроенной базой данных, используя расширенные возможности AnyLogic, такие, например, как иерархический подход к разработке моделей.

Это был последний пост о том, как и для чего использовать библиотеку моделирования потоков. Надеюсь, вам понравилось! Если у вас появились вопросы, задавайте, мы с удовольствием ответим.

ДО НОВЫХ ВСТРЕЧ!