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

SelectOutput

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

Может использоваться для сортировки агентов согласно заданному критерию, для случайного разделения потока агентов на части и т.д. Предположим, например, что в вашей модели моделируются клиенты (с помощью агентов типа Customer, у которого есть параметр vip типа boolean). Тогда если вы захотите направлять VIP клиентов в верхний порт (True), а всех остальных — в нижний (False), то вы должны задать условие agent.vip и выбрать тип Customer в качестве типа агента блока SelectOutput. Более сложный случай: вы хотите перенаправить в верхний порт блока только 80% VIP клиентов, а оставшиеся 20% (и всех остальных) — в нижний порт. Тогда условие будет выглядеть как agent.vip && randomTrue( 0.8 ).

Иногда требуется иметь более двух выходов. Мы предоставляем вам два блока для направления агентов в разные отделы диаграммы процесса: блоки SelectOutput и SelectOutput5. Блок SelectOutput5 имеет пять выходных портов, соответственно, он может направлять агентов в пять выходов. Используя блоки SelectOutputIn и SelectOutputOut, вы можете создать один большой блок SelectOutput с требуемым количеством выходов.

Параметры

Выход true выбирается
Определяет, как будет производиться маршрутизация агентов: будут ли агенты направляться на выход true (верхний порт outT) случайно, c Заданной вероятностью, заданной в поле Вероятность [0..1] или же При выполнении условия, заданного в поле Условие.
Синтаксис: boolean conditionIsProbabilistic
Значение по умолчанию: true (С заданной вероятностью)
Вероятность
[Параметр виден, если Выход true выбирается: Заданной вероятностью]
Выражение, вычисляющее вероятность того, что текущий агент покинет блок через порт outT. Значение вероятности должно лежать в пределах [0..1].
Тип значения: double
Локальная переменная: T agent — агент
Значение по умолчанию: 0.5 — не зависит от поступающих агентов и просто разделяет поток агентов на две равные части
Условие
[Параметр виден, если Выход true выбирается: При выполнении условия]
Условие, вычисляемое для входящего агента. Если оно выполняется (равно true), то агент покидает блок через порт outT, если нет — через порт outF.
Тип значения: boolean
Локальная переменная: T agent — агент
Значение по умолчанию: randomTrue( 0.5 ) — не зависит от поступающих агентов и просто разделяет поток агентов на две равные части

Действия

Во всех этих действиях актуальный агент доступен как локальная переменная agent.

При входе
Код, выполняемый, когда агент поступает в блок.
При выходе (true)
Код, выполняемый, когда агент покидает блок через порт outT.
При выходе (false)
Код, выполняемый, когда агент покидает блок через порт outF.

Функции

Функция Описание
int count() Возвращает общее количество всех агентов, прошедших через этот блок.
int countT() Возвращает количество агентов, прошедших через выходной порт outT этого блока.
int countF() Возвращает количество агентов, прошедших через выходной порт outF этого блока.

Порты

in
Входной порт.
outT
Выходной порт для агентов, для которых выбирается выход true.
outF
Выходной порт для агентов, для которых выбирается выход false.
Как мы можем улучшить эту статью?