AnyLogic
Развернуть
Размер шрифта

Fluid Pickup

Агенты, проходя через блок, забирают жидкость или сыпучее вещество. Блок выступает связующим звеном между Библиотекой Моделирования Процессов (или любой другой библиотекой на основе этой) и Библиотекой Моделирования Потоков. Предполагается, что каждый агент должен забрать определенный объем вещества, поэтому, по прибытии агента в блок, блок начинает накапливать вещество. Объем может быть указан как точно, так и зависеть от агента (режим Забирать: заданный объем), или обрабатываться партиями. В последнем случае, агент отпускается, как только блок собрал отличный от нуля объем вещества одной партии и появляется другая партия. Блок никак не влияет на агента, но вы можете указать, как именно на агента влияет объем вещества, который он забрал.

Также, как FluidDispose и FluidToAgent, этот блок может принимать поток на любой скорости. Когда в блоке нет агента, он не содержит вещества и в него не попадает вещество. FluidPickup может принимать только одного клиента за раз, второй агент не сможет попасть в блок, пока текущий агент его не покинул.

Демо-модель: FluidPickup Открыть страницу модели в AnyLogic Cloud. Там можно запустить модель или скачать ее по ссылке Исходные файлы модели.

Свойства

Забирать
Определяет режим забора:
Заданный объем — агент забирает указанный объем жидкости
Отдельную партию — агент забирает любую не пустую партию (агент отпускается, когда в этом блоке появляется новая партия)
Синтаксис: boolean pickupByAmount
Установить новое значение во время выполнения: set_pickupByAmount(новое значение)
Допустимые значения:
true — Объем жидкости
false — Партия
Забрать объем
[Параметр виден и применяется только в том случае, если установлена опция Заданный объем]
Определяет объем вещества, который должен забрать агент. Это динамический параметр, который пересчитывается при заходе каждого агента.
Тип значения: double
Локальная переменная: agent — агент
Место агента
Фигура разметки пространства, в которой будет отображаться анимация агента, находящегося во внутреннем блоке Delay.
Синтаксис: agentLocation
Установить новое значение во время выполнения: set_agentLocation(новое значение)

Анимация

Резервуар
Здесь можно указать имя элемента разметки пространства Резервуар, используемого в качестве фигуры анимации блока FluidPickup (как в 2D, так и в 3D). Резервуар отображает вещество, которое в данный момент находится в блоке.
Синтаксис: StorageTank storageTank
Отображать партии в блоке
Если установлен флажок, иконка блока будет отображать текущий цвет партии.
Синтаксис: boolean showBatchesInFlowchart
Установить новое значение во время выполнения: set_showBatchesInFlowchart(новое значение)

Действия

При входе
Действия выполняются при входе агента в блок, прежде чем объем вещества, заданный параметром Забрать объем, будет оценен и блок начнет принимать вещество.
Локальная переменная: agent — агент
При выходе
Действие выполняется, когда агент забрал вещество и покидает блок. У вас есть доступ к агенту, объему вещества, которое он забрал, и партии.
Локальные переменные:
agent — агент
double amount — объем
Object batch — партия
При изменении скорости
Действие выполняется, когда изменяется скорость потока. Обратите внимание на то, что определенные изменения, произошедшие в результате выполнения данного действия, могут вызвать другое мгновенное изменение скорости, за которым сразу последует повторное выполнение действия При изменении скорости, что в итоге может привести к взаимной блокировке.
Локальная переменная: double inrate — текущая скорость потока во входном порте

Функции

Количество вещества
Функция Описание
double amountPassed() Возвращает общий объем вещества, который прошел через порт блока inFluid с начала запуска модели.
double amountPassed(AmountUnits units) Возвращает общий объем вещества (в заданных единицах измерения объема), который прошел через порт блока inFluid с начала запуска модели.
double amount() Возвращает объем вещества, который в данный момент находится в блоке. Этот объем меньше общего объема вещества, необходимого, чтобы отпустить агента.
double amount(AmountUnits units) Возвращает объем вещества (в заданных единицах измерения объема), который в данный момент находится в блоке. Этот объем меньше общего объема вещества, необходимого, чтобы отпустить агента.
Скорость потока
Функция Описание
double currentRate() Возвращает текущую скорость потока вещества на входе.
double currentRate(FlowRateUnits units) Возвращает текущую скорость потока вещества (в заданных единицах измерения скорости) на входе.
Партия
Функция Описание
Object getBatch() Возвращает партию, которая в данный момент наполняет блок.
Сброс статистики
Функция Описание
void resetStats() Сбрасывает собранную блоком статистику, включая статистику, собранную на его портах.

Порты

inFluid
Порт поступления вещества.
in
Порт, в который попадает агент.
out
Порт, из которого выходит агент.
Как мы можем улучшить эту статью?