Jump to content
Simio Forum

Welcome to the Simio Forum

Welcome to the Simio Forum! Experience the full experience of the forum by becoming a Simio Insider! You must be an Insider to post on any forum!


New Software Release

Our latest release, Simio 11, is here!


Conditional Worker Assignment / Seizing

Recommended Posts


We are trying to simulate a warehouse unit repair process in which a unit arrives, goes through a Disassembly phase of a few steps, goes to an inventory step to get the sub-parts needed for the repair, and then goes though an Assembly phase of a few steps.

The unit should be assigned a technician (we have set up about 30 Resources, one to represent each technician) that will work on the unit through the collection of work stations for Disassembly. However, only a technician trained to work on that unit can work on it. We have a list in Excel of all work units and the technicians that are trained on the unit. After the Inventory work station, another technician (ideally the same one, but in general just any technician trained on the unit) will be assigned to the unit for the workstations in the Assembly phase.

We are trying to use Add-on processes to properly assign the technicians to work units by Seizing and Releasing the technician at the appropriate points in the flow. The idea is to model the delays that occur when a unit comes in and has to wait until a trained-on-that-unit technician is available to work on it. We are not sure how to import the list of Units and their Trained Technicians and how to model the Seizing appropriately. There are too many work units to just make a separate list of trained technicians for each unit.



Share this post

Link to post
Share on other sites

The easiest way to handle Resources is to use Lists. However, if you do not want to a list, you can use a table and process logic.

One way is to have 2 columns in the table, 1 foreign key related to the Part Name and 1 Object Property. This is one list that pairs the Products and Resources.

In the process logic, use a Search step to search the tablerows for a resource that has capacity available (Match Condition Table1.ResourceName.Resource.Capacity.Remaining>0). Only the rows associated with the part name will be searched. On the Found branch, Seize the Resource in that table row. On the Original Branch, use a Decide step to determine if the Search found anything or not. If the Search does not find anything, then use a Wait step to wait for a certain Event. After the event, loop back to the Search step.

After the Release step, add a Fire step to fire an Event. This is the Event the Wait step is waiting for. Release the Model Entity's Seized Resource.

For the second process logic, if you want to use the same Resource, create a state variable on the Model Entity to record which Resource you used. Then check if that resource is available to Seize. If it's not available, use the Search and Wait step.

Share this post

Link to post
Share on other sites

  • Create New...