This shared asset represents an asset with a limited supply that can be acquired and released. For example, three manufacturing stations might all share one tool. The tool is modeled here as a resource. When a station uses the tool, it would be acquiring the resource. Once the resource has been acquired, nothing else can acquire it until the acquiring token has released it. resources are useful for modeling timing constraints, where multiple tokens need to use a limited pool of assets.
A resource is acquired by an Acquire resource activity and released by a Release resource activity.
resource Operation Modes
The resource can operate in three modes, as follows:
- Numeric Mode When the resource operates in numeric mode, it simply keeps track of a number in determining its availability. This number starts at zero. When activities acquire the resource, it increments the number, and when activities release the resource, it decrements the number. If an Acquire activity is requesting a quantity that is greater than the resource has available as defined by the Count property, then the token will be unable to acquire the resource.
To put the resource into numeric mode, define its Reference property as Numeric.
When in numeric mode, the Count property can dynamically change during the simulation. It will be reevaluated every time a token attempts to acquire a resource and whenever a resource is released. This can be useful if you want to simulate a resource that changes based upon the time of day or other model parameters. Even if the total resource's count drops below the number of resources that have been acquired, tokens will keep their acquired value until they release their resource in a Release activity.
Numeric mode can also be used to simulate non-discrete resource quantities. For example, you can give the resource a Count of 5.5, and acquire quantities like 1.5, etc.
- Object Mode When the resource operates in object mode, it links to a discrete set of objects in the model. In this case, the Count property defines how many objects can be used. See Duplicating Objects. When activities acquire the resource, the resource gives them back a reference to specific acquired object(s), instead of just managing an availability number. In this mode, the Count is established at the start of the simulation and cannot change after that.
The resource will operate in object mode if the Reference property is linked to a TaskExecuter, Fixedresource or some other 3D object.
Duplicating Objects
If the resource is in object mode and its Reference property references an object in the model, the Count property will be used to duplicate the object by count - 1
, where the referenced object is the first resource available. Once duplicated, the TaskExecuter or Fixedresource objects may be moved in the 3D view and their properties may be individually modified. Properties set on the linked resource will NOT be pushed down to the duplicated objects once they have been created. To propegate changes from the referenced object to the duplicated objects (ie labels), set the Count to 1, reset the model, then set the Count back to the original value. Alternatively, you can select all of the objects and modify values in Quick Properties or use the Edit Selected Objects window.
It may be useful to tie the Count property to a Process Flow Variable so that the count may be changed through the Experimenter over multiple replications. The resource will add new objects to the model and remove unused objects as needed.
Adding and Removing resourcesIf the Count is greater than the previous Count, the referenced object will be duplicated and the new object will be at the same location as the referenced object. If the Count is less than the previous Count, the last duplicated objects will be deleted. This means if you duplicated objects and then placed them throughout the model, the Experimenter should only remove resources not add them as doing so may cause your objects to be in incorrect locations.
When operating in fixed object mode, objects will not be duplicated except when connected to a Dispatcher and the resource Type is set to local. In this case the Dispatcher and all of it's connected TaskExecuters will be duplicated for each instance of the process flow.
Using A List
By default, acquire requests are processed in FIFO (first in first out) order, and in object mode the resource objects themselves are distributed in FIFO order. If a Queue Strategy is used on the resource or if any Acquire resource activity that references this resource uses a Query, the resource will switch over to using a List. This List will be internally owned by the resource. This allows the resource to utilize the built in SQL functionality of the List to determine which tokens to allocate resources to first and which resources should be allocated. Through the Advanced button, you can set up additional fields for the List that can be used in the Query and Queue Strategy properties.
Properties
The following image shows properties for the resource shared asset:
Each of these properties will be explained in the following sections.
- Name You can change the name of the activity using the Name box. See Name for more information about this property.
- Font The Font button opens a window to edit the activity's background color and font properties. See Font for more information about this property.
- Statistics The Statistics button opens the activity's statistics window. See Statistics for more information about this property.
- Reference This box will only be evaluated on reset. It may be either Numeric, a reference to an object in the 3D model, a Group, an array of objects, integers, doubles or strings or any other object or node.
- Count The number of resources that are available to acquire. If the Reference property is set to a Group, a Dispatcher or array of objects, the count should be less than or equal to the number of objects in the Group/Team/array. If a Group/Team/array has 10 objects in it and the count is set to 5, only the first 5 objects in the Group will be used. Reorder the objects to specify which 5 objects will be used. This can be a very useful features when implemented with the Experimenter. The Count can be set to a Process Flow Variable which is then set as an Experimenter variable which changes for each scenario. If Reference is not Numeric, this property will only be evaluated on reset. If Reference is a direct reference (ie to a TaskExecuter or Fixedresource), the object will be duplicated. See Duplicating Objects for more information.
- Type resources can be defined globally or locally. If the resource is in a General Process Flow or connected to a Group or an array, the resource will be globally available and this property will be grayed out. Otherwise, it can be set to Local so only tokens in the same Process Flow instance will be competing for the same resources. If Type is set to Local and Reference is linked to a Dispatcher, Task Executer or Fixed resource object, the object will be duplicated for each instance of the Process Flow. For more information see Global and Local Types.
- Queue StrategyIf a number of activities are trying to acquire resources and no resources are available, their acquire requests will stack up in a queue. By default this is FIFO (first in first out or first come first serve). Defining a Queue Strategy gives you control of who is given resources first. The queue then becomes back orders on a List and a SQL command is used to determine the order of the queue.
- View EntriesOnly valid if the resource is using a list (see Using a List) this will display all of the available resources.
- View Back OrdersOnly valid if the resource is using a list (see Using a List) this will display all of the tokens attempting to acquire resources.
- AdvancedOnly valid if the resource is using a list (see Using a List). Opens the List properties page.