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) случайно, Заданной вероятностью, заданной в поле Вероятность [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.

Порты

in
Входной порт.
outT
Выходной порт для агентов, для которых выбирается выход true.
outF
Выходной порт для агентов, для которых выбирается выход false.