Блок направляет входящих агентов в один из двух выходных портов в зависимости от выполнения заданного (детерминистического или заданного с помощью вероятностей) условия. Условие может зависеть как от агента, так и от каких-то внешних факторов. Поступивший агент покидает блок 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 ) — не зависит от поступающих агентов и просто разделяет поток агентов на две равные части
- При входе
- Код, выполняемый, когда агент поступает в блок.
- При выходе (true)
- Код, выполняемый, когда агент покидает блок через порт outT.
- При выходе (false)
- Код, выполняемый, когда агент покидает блок через порт outF.
Во всех этих действиях актуальный агент доступен как локальная переменная agent.
Функция | Описание |
---|---|
int count() | Возвращает общее количество всех агентов, прошедших через этот блок. |
int countT() | Возвращает количество агентов, прошедших через выходной порт outT этого блока. |
int countF() | Возвращает количество агентов, прошедших через выходной порт outF этого блока. |
- in
- Входной порт.
- outT
- Выходной порт для агентов, для которых выбирается выход true.
- outF
- Выходной порт для агентов, для которых выбирается выход false.
-
Как мы можем улучшить эту статью?
-