Библиотека моделирования потоков – обзор инструмента имитации жидких и сыпучих грузов

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

Как вы знаете, мы продолжаем расширять функциональность нашей программы для отдельных отраслей использования моделирования. Библиотека моделирования потоков (Fluid Library) предназначена для имитации перемещения жидких и сыпучих грузов. Впервые она появилась прошлым летом в AnyLogic 7.2, и с этого времени наши пользователи уже успели применить её для решения реальных бизнес-задач: так, например, Stream Systems использовали её для моделирования добычи нефти в битуминозных песках (кстати, модель была представлена на конференции AnyLogic 2015). В AnyLogic 7.3, вышедшем в феврале, мы представили улучшенную версию библиотеки.

В этом посте я объясню, зачем и в каких случаях стоит использовать Библиотеку моделирования потоков вместо основной Библиотеки процессного моделирования и системной динамики, а также расскажу о блоках «жидкой» библиотеки.

Зачем нужна «жидкая» библиотека?

Стандартная Библиотека процессного моделирования служит классическим образцом дискретно-событийной имитации: динамика системы представляется как последовательность операций над заявками/агентами, представляющими дискретные объекты: клиентов, документы, звонки, пакеты данных, транспортные средства и т.п. Моделировать таким образом непрерывные сущности (например, жидкие и насыпные материалы при добыче полезных ископаемых и производстве) намного сложнее – нужно внедрять лишние логические конструкции, т.к. в основе принципов работы библиотеки лежит дискретность заявок. Библиотека моделирования потоков создана, чтобы преодолеть эти трудности.

Вы можете поспорить, сказав, что для непрерывных сущностей в AnyLogic уже есть возможности системной динамики, и это будет правдой. Однако применять инструменты системной динамики для имитации, например, производственных процессов, неудобно, т.к. она создана для моделирования на более высоком уровне абстракции. Представьте, как сложно будет сымитировать смешение разных материалов при помощи накопителей и потоков из СД. В системной динамике используются численные методы решения систем дифференциальных уравнений, которые могут учитывать нелинейное поведение, но они проигрывают алгоритмам линейного программирования в скорости и точности. Потоки жидкостей и сыпучих грузов ведут себя линейно, поэтому «жидкая» библиотека не только естественнее ложится на эти задачи, но и работает быстрее.

Таким образом, «жидкая» библиотека совмещает процессно-ориентированный подход и непрерывный характер грузов. Как и в основной процессной библиотеке, в ней есть функциональные блоки, связанная последовательность которых образует диаграмму процесса: блок Fluid Source создаёт партии материалов, Pipeline (труба) и Conveyor (конвейер) перевозят партии до баков (Tanks), которые хранят и обрабатывают материалы. Valve (клапан) управляет пропускной способностью, Fluid Select Output и Fluid Select Input определяют направление движения потока, Fluid Split и Merge разделяют и сливают потоки воедино. Fluid Convert способен усиливать и ослаблять поток, что позволяет моделировать упаковку и распаковку материалов.

Библиотека моделирования потоков – обзор инструмента имитации жидких и сыпучих грузов
У диаграммы процесса есть анимация. Как и в Библиотеке моделирования процессов, оранжевый цвет обозначает, что порт закрыт. Разные цвета потоков показывают, что они состоят из разных материалов.

Библиотека моделирования потоков – обзор инструмента имитации жидких и сыпучих грузов
Анимация трубы с разными партиями жидкости

Как и у любой другой библиотеки AnyLogic 7, у «жидкой» библиотеки есть свои элементы разметки пространства, которые используются для задания 2D- и 3D-анимации. Так, например, элемент Bulk Conveyor Belt анимирует блок Bulk Conveyor и по умолчанию не влияет на работу процессной диаграммы. Разработчик может связать длину конвейера (блок Bulk Conveyor) с длиной элемента на анимации, если нужно.

Особенности процессной диаграммы «жидкой» библиотеки

Процессная диаграмма в «жидкой» библиотеке использует не агентов, а числа, которые добавляются к значению количества части материала в потоке. В самом простом случае блок Source, который работает как кран, создает поток. Однородный поток материала называется партией. Такая партия отличается от партий в Библиотеке процессного моделирования – там партия является агентом-контейнером, содержащим другие агенты. «Жидкая» партия – не агент, а определенное количество материала, непрерывно распределённое по цепочке блоков процессной диаграммы.

Партии различаются согласно своей ссылке на объект любого непримитивного типа, который привязывается к партии. Это может быть любой объект, проще всего назвать партию просто именем (тип String). У каждой партии – свой цвет, что позволяет легко разделять их визуально, глядя как на саму процессную диаграмму, так и на анимацию модели.

Блоки «жидкой» библиотеки могут отслеживать изменение объёмной скорости потока, изменение партии и другие специфические изменения (например, объект Tank имеет действия по событиям On full, On empty и On certain amount). Разработчик может задать выполнение кода по исполнению определенного условия или события. Поля для ввода кода здесь – аналоги таких полей в основной процессной библиотеке.

Библиотека моделирования потоков – обзор инструмента имитации жидких и сыпучих грузов
Свойства блока Fluid Source из модели Chocolate Production

Диаграмма ведёт себя как сеть баков и трубопроводов с неочевидными особенностями. Например, в процессной библиотеке можно соединять выходные порты двух блоков Delay с одним входным портом блока Queue. В «жидкой» библиотеке один выходной порт можно соединить только с одним входным портом – иначе непонятно, как должны соединяться потоки из разных частей сети. Для этого используются блоки Fluid Merge, Fluid Select Input и Mix Tank, которые имеют несколько входных портов и позволяют смешивать потоки.

Библиотека моделирования потоков – обзор инструмента имитации жидких и сыпучих грузов
Диаграмма в «жидкой» библиотеке не позволяет соединять несколько портов с одним

Также, например, нельзя соединить простой блок Delay из процессной библиотеки напрямую с блоком Pipeline. Есть четыре блока, которые позволяют интегрировать «жидкую» библиотеку с процессной библиотекой: Fluid To Agent, Agent to Fluid, Fluid Pickup и Fluid Dropoff.

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

Библиотека моделирования потоков – обзор инструмента имитации жидких и сыпучих грузов
Комбинация блоков «жидкой» и процессной библиотек

Fluid Pick Up работает как обычный блок Pick Up, но берёт материалы из процессной диаграммы «жидкой» библиотеки. Блок Fluid Drop Off, напротив, создаёт определённое количество материала при входе агента. Объёмную скорость потока можно напрямую задать в блоке Fluid Drop Off, в то время как в блоке Fluid Pick Up она подсчитывается автоматически в соответствии с текущим расходом в диаграмме. Кстати, эти два блока были добавлены именно в последней версии программы – AnyLogic 7.3.

Демо-модели для обучения

Сейчас в AnyLogic есть четыре демо-модели, которые используют «жидкую» библиотеку: Chocolate Production, Crude Oil Pipeline Network, Gas Station и Grain Terminal. Их легко найти на приветственной странице программы с помощью поиска по моделям, который мы тоже ввели в последней версии. Чтобы увидеть список тегов, нужно нажать Ctrl + Space, находясь в поле поиска.

Также мы сделали 16 простых how-to моделей, которые иллюстрируют применение каждого блока библиотеки в отдельности.


В следующем посте мы разберём демо-модели Chocolate Production и Gas Station, а также поговорим о примерах использованиях и характеристиках блоков Библиотеки моделирования потоков. Вы узнаете, как создавать сложные модели с 2D- и 3D-анимацией. Чтобы не пропустить новые посты, подписывайтесь на наш блог!

Похожие материалы