Resources


Allocating Resource Entities

After locating the required resource entities in a Resource Pool block, the Seize block requests the resources. The Resource Pool block processes the request and allocates the resource entities to the Seize block. In Resource Pool blocks, only resource entities in the Functional state can be seized.

The Resource Pool block delivers resource entities to a Seize block to fulfill a resource demand. If the Resource Pool block has its merging/splitting units option disabled, the requested resource entities are delivered without alteration, even when the delivered resources have more units than requested. If the merging/splitting option is enabled, the Resource Pool block delivers the new resource entities after the splitting process. The delivered resource entities contain the exact amount of units requested. For more information about the merging and splitting feature of the Resource Pool block, see the section Merging and Splitting Resource Entities.

To decrease the likelihood of a resource deadlock, the Seize block in Simulation Studio does not support partial allocation of resources. All specified resource requests must be satisfied before resource entities are allocated to a controlling entity. Otherwise, the Seize block does not accept the request to take the controlling entity, and the controlling entity must wait (usually in a queue) for all required resources to become available.

The Batch block can also be used to seize resources. For example, if all resource entities have the same ResourceUnits value and are of the same type, then the Batch block can be used to allocate resources to a carrier entity as the resource entities become available. In this approach, the Batch block can hold a carrier entity with a partially completed resource allocation when there is a resource shortage until the additional resource entities arrive at the Batch block. For this kind of usage, the batch carrier entity used by the Batch block performs the same role as the controlling entity does for a Seize block, and the entities batched with the carrier entity are resource entities. When a Batch block is used, required resources do not need to be available all at the same time. The resource entities can be allocated or batched as they become available, one after another. For more information about the Batch block, see Appendix A: Templates.

The modeling constraints and requirements of the particular system being simulated determine whether a Seize block or Batch block is appropriate for allocating resource entities. The Batch block offers a more simplistic approach, but it also provides fewer options than the Seize block provides.