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

Fluid To Agent

Преобразует партии жидкости или объемного вещества в агентов (дискретные элементы).

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

Так же, как и FluidDispose, данный блок может принимать поток жидкости любой скорости. Когда агент создается, то его жидкость удаляется и начинает набираться новая партия.

Заданное положительное значение скорости потока не должно быть ниже значения RATE_TOLERANCE, т.е. меньше 1.0e-9. Если при перерасчете скорость потока опускается ниже значения RATE_TOLERANCE, она приводится к нулю.

FluidToAgent имеет внутри блок Source из Библиотеки Моделирования Процессов, и показывает все его параметры, включая действие При выходе, через которое можно получить доступ к объему жидкости в агенте и к партии.

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

Параметры

Создавать агента
Здесь вы можете выбрать, будет ли новый агент создаваться как только заданный объем жидкости накапливается (опция Для объема жидкости) в блоке или же новый агент будет создаваться для каждой партии (опция Для каждой партии), а именно, когда новая партия зайдет в блок после текущей партии.
Синтаксис: boolean agentPerAmount
Объем жидкости в агенте
[Параметр виден и применяется, если Создавать агента: Для объема жидкости]
Определяет объем жидкости, необходимый для того, чтобы создать агента. Это динамический параметр, который пересчитывается каждый раз после создания нового агента. Заданное значение не может быть меньше значения Utils.TOLERANCE.
Тип значения: double
Новый агент
Тип агентов, создаваемых объектом. Для того, чтобы блок создавал агенты другого типа, выберите данный тип из списка. Если вы еще не создали необходимый вам тип агента, то вы можете создать его, нажав на ссылку ниже: Создавать другой тип.
Значение по умолчанию: Agent
Локальные переменные:
double amount — объем жидкости, использованный для создания агента
Object batch  — текущая партия
Место агента
Определяет место, куда будут помещены созданные агенты. Имеется шесть альтернативных опций:
  • Не задано — вы не задаете место, куда будут прибывать агенты
  • Узел сети / ГИС — Агенты появляются в заданном узле сети, ГИС точке или ГИС регионе
  • Аттрактор — Агенты появляются в заданном аттракторе
  • (x, y, z) — Агенты появляются в точке с заданными координатами X, Y, Z
  • (Широта, Долгота) — Агенты появляются в заданной точке на ГИС карте с указанными параметрами Широта и Долгота
  • Географическое место — Агенты появляются в определенной локации на ГИС карте. Вы определяете это место, используя параметр Имя места (см.ниже)
Получить значение: locationType
Установить новое значение во время выполнения: set_locationType(новое значение)
Допустимые значения:
Source.LOCATION_NOT_SPECIFIED  — Не задано
Source.LOCATION_NODE  — Узел сети / ГИС
Source.LOCATION_ATTRACTOR  — Аттрактор
Source.LOCATION_XYZ  — (x, y, z)
Source.LOCATION_LATLON  — (Широта, Долгота)
Source.LOCATION_GEO_PLACE  — Географическое место
Скорость
[Параметр виден, если задана опция Место прибытия]
Скорость созданных агентов.
Тип значения: double
Значение по умолчанию: 10 м/с
Локальная переменная: agent — агент
X, Y, Z
[Параметр виден, если Место прибытия: (x, y, z)]
Координаты X,Y,Z той точки, куда будут помещены агенты.
Тип значения: double
Локальная переменная: agent — агент
... в сети
[Параметр виден, если Место прибытия: (x, y, z)]
Если данная опция выбрана (true), то агенты добавляются в сеть, выбранную в параметре Сеть(см.ниже).
Синтаксис: boolean locationXYZInNetwork
Сеть
[Параметр виден, если выбрана опция ...в сети]
Сеть, куда помещаются агенты, созданные данным блоком.
Тип значения: Network
Локальная переменная: agent — агент
Узел
[Параметр виден, если Место прибытия: Узел сети / ГИС]
Узел сети, ГИС точка или ГИС регион, куда помещаются агенты, созданные данным блоком.
Тип значения: Node
Локальная переменная: agent — агент
Аттрактор
[Параметр виден, если Место прибытия: Аттрактор]
Аттрактор, в направлении которого будут двигаться агенты.
Тип значения: Attractor
Локальная переменная: agent  — агент
Широта, Долгота
[Параметр виден, если Место прибытия: (Широта, Долгота)]
Широта и долгота точки на ГИС карте, куда будут помещены агенты.
Тип значения: double
Локальная переменная: agent — агент
Имя места
[Параметр виден, если Место прибытия: Географическое место]
Имя определенной локации на ГИС карте, куда будут попадать агенты при создании. Вы задаете имя в виде текста в кавычках, например "Лондон". ГИС-карта будет искать локацию с таким именем. Будет использоваться первая локация из списка результатов поиска ГИС.
Тип значения: String
Локальная переменная: agent — агент

Анимация

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

Специфические

Добавить агентов в
Здесь вы задаете то место, где будут храниться агенты, созданные данным блоком: в популяции по умолчанию или в другой популяции (указывается в свойстве Популяция(см.ниже)).
Синтаксис: boolean addToCustomPopulation
Популяция
[Параметр виден, если Добавить агентов в: другая популяция]
Имя популяции агентов, где будут храниться агенты, созданные данным блоком.
Имя: AgentList
Локальная переменная: agent — агент

Действия

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

Функции

Агент
Функция Описание
double flush() По вызову этой функции блок принудительно создает нового агента из накопленного на данный момент объема жидкости вне зависимости от настроек блока. Завершив это действие, блок возвращается в прежний режим работы. Если в блоке нет жидкости, генерируется ошибка.
double fluidInAgent() Возвращает объем жидкости в текущем агенте, который покидает блок. Если объем меньше значения Utils.TOLERANCE, то функция возвращает 0.
double fluidInAgent(AmountUnits _units) Возвращает объем жидкости в текущем агенте, который покидает блок, в заданных единицах измерения объема. Если объем меньше значения Utils.TOLERANCE, то функция возвращает 0.
Партия
Функция Описание
Object getBatch() Возвращает партию, втекающую в данный момент в блок или прибывшую на его вход.
Количество вещества
Функция Описание
double amount() Возвращает объем жидкости, накопившийся в данный момент в блоке. Данный объем меньше, чем общий объем жидкости, который понадобился для создания агента. Если объем меньше значения Utils.TOLERANCE, то функция возвращает 0.
double amount(AmountUnits units) Возвращает объем вещества (в указанных единицах измерения объема), который находится в данный момент в блоке и готов к выходу. Этот объем меньше, чем общий объем жидкости, необходимый для создания агента. Если объем меньше значения Utils.TOLERANCE, то функция возвращает 0.
double amountPassed() Возвращает общий объем вещества, прошедший через входной порт блока, начиная с запуска процесса моделирования.
double amountPassed(AmountUnits units) Возвращает общий объем вещества (в указанных единицах измерения объема),прошедший через входной порт блока, начиная с запуска процесса моделирования.
Скорость потока
Функция Описание
double currentRate() Возвращает текущую скорость потока вещества на входе.
double currentRate(FlowRateUnits units) Возвращает текущую скорость потока вещества (в указанных единицах измерения скорости) на входе в блок.
Сброс статистики
Функция Описание
void resetStats() Сбрасывает собранную блоком статистику, включая статистику, собранную на его портах.

Порты

in
Входной порт.
out
Выходной порт.
Как мы можем улучшить эту статью?