When an entity enters a Switch block, a switch value will be determined (either through the InSwitchValue port or by an attribute value on the entity). Based on that switch value, an output port will be selected from the cases defined in the Switch block. If the switch value does not match any of the case values, then the entity will flow out of the OutDefault port of the Switch block. In summary, the Switch block is used to route entities down different paths, based on a switch value (where the switch value can be computed dynamically by using the InSwitchValue port on the Switch block or by using an entity attribute value). For example, you can use a Switch block to route an entity to the shortest of a series of queues (see docQueueRouting in the projects\examples folder where Simulation Studio is installed). The Switch block is widely used in Simulation Studio models.
The Selector block pulls entities from upstream from one of its defined input entity ports based on a case value that is pulled from the InCaseValue port. When the Selector block receives a message from downstream to output an entity, it checks its InCaseValue port to determine which input entity port to pull an entity from. Also, when an entity arriving to the Selector block attempts to enter the block, the current case value is checked to see if the incoming entity's input port matches the value. If it doesn't, it will not flow through the Selector. One example where the Selector block is useful is when you have multiple queues feeding into another queue with fixed capacity. You can use the Selector block to determine which queue should have priority when a space opens up in the fixed capacity queue. See the attached figure.
... View more