Jump to content

Process Logic Design for Data-Generated Models


oalotaik
 Share

Recommended Posts

I am building a model where I need to use relational data tables to create objects and elements due to the large size of the model. I found helpful resources to guide me when it comes to auto-creating objects and elements (Simio Help Guide, SimBits, and Examples).

But for some reasons I couldn't find resources that address directly the topic of process logic design in data-driven models. There is one particular example that's very relevant to my case. This example is MultiEchelonSupplyChain that comes with Simio (in Simio: Support > Examples > MultiEchelonSupplyChain). This example is solved using two approaches. The second one (the data-driven approach) is the one I'm interested in. In the accompanying PDF file that explains the technical details of the example, it does not explain the differences in process logic design. For example, how do I define triggering events? Some of the processes in this example have no triggering events. 

If you know of a resource that explains designing processes for data-driven models, please share.

Thanks.

Link to comment
Share on other sites

  • 3 weeks later...

Process logic is typically added to a model on an as needed basis. For instance you will notice that some of our Scheduling examples, like SchedulingDiscretePartProduction (via Support ribbon -> Examples) does not use any process logic. There are several ways to initiate process logic which you could read more about in the "Processes" help topic. For instance, all objects in the Standard Library have an Add-On Process Triggers property category that allows you to specify specific points in the simulation that you would like to execute a process (like on Entered for a Server). A quick tip: you may double click an Add-On Process Trigger property (like Entered for a Server) to create a new process corresponding to that trigger.

There are also other ways to initiate processes: using Elements like Timer or Monitor, user-defined Events, or the Execute step. I would recommend investigating these further in the help documentation if you are interested in learning more. One of our newest example models (provided in the software) called InfectiousDiseaseSampleModel demonstrates using fairly comprehensive process logic along with a data-driven approach.

Happy modeling!

Link to comment
Share on other sites

To answer your question specifically with regards to the MultiEchelonSupplyChain example, the OnReplenishOrder process that you see in the process logic of the data table driven example is automatically executed by the Inventory elements when the inventory detects the need to replenish. Go to Definitions -> Elements and click on the Inventory elements and you will see where that process is being referenced.

The ShippingReceivingLogic process is being executed when an entity enters any of the BasicNodes placed in the Facility View. For example, click on the DistributionCenter node and in the Add-On Processes -> Entered property you will see the name of that process befiling referenced. The TryFulfillOrder process is executed by the OnCustomerOrder process using an Execute step, which is in term triggered by a customer order arrival.

Note that If you are trying to figure out where the name of a process is being referenced, you might go to Project Home in the ribbon UI and go to the Search window. And then search for the name of the process in the model, and it will show you the locations where it is being referenced.

 

  • Like 1
Link to comment
Share on other sites

  • 3 weeks later...
On 4/24/2020 at 3:55 PM, asneath said:

Process logic is typically added to a model on an as needed basis. For instance you will notice that some of our Scheduling examples, like SchedulingDiscretePartProduction (via Support ribbon -> Examples) does not use any process logic. There are several ways to initiate process logic which you could read more about in the "Processes" help topic. For instance, all objects in the Standard Library have an Add-On Process Triggers property category that allows you to specify specific points in the simulation that you would like to execute a process (like on Entered for a Server). A quick tip: you may double click an Add-On Process Trigger property (like Entered for a Server) to create a new process corresponding to that trigger.

There are also other ways to initiate processes: using Elements like Timer or Monitor, user-defined Events, or the Execute step. I would recommend investigating these further in the help documentation if you are interested in learning more. One of our newest example models (provided in the software) called InfectiousDiseaseSampleModel demonstrates using fairly comprehensive process logic along with a data-driven approach.

Happy modeling!

Thanks Adam for the reply. I know a fair amount about Processes; I just needed a clarification about some aspects related to large models created using tables. The example I mentioned in the original post may be simple but it could easily scale to include 100's of locations. I will give some examples of these aspects that get tricky in such large models below.

 

On 4/28/2020 at 8:03 PM, gdrake said:

To answer your question specifically with regards to the MultiEchelonSupplyChain example, the OnReplenishOrder process that you see in the process logic of the data table driven example is automatically executed by the Inventory elements when the inventory detects the need to replenish. Go to Definitions -> Elements and click on the Inventory elements and you will see where that process is being referenced.

The ShippingReceivingLogic process is being executed when an entity enters any of the BasicNodes placed in the Facility View. For example, click on the DistributionCenter node and in the Add-On Processes -> Entered property you will see the name of that process befiling referenced. The TryFulfillOrder process is executed by the OnCustomerOrder process using an Execute step, which is in term triggered by a customer order arrival.

Note that If you are trying to figure out where the name of a process is being referenced, you might go to Project Home in the ribbon UI and go to the Search window. And then search for the name of the process in the model, and it will show you the locations where it is being referenced.

 

Thanks Glenn for the clarification. The tip about finding where processes are being referenced in a model is great!

The MultiEchelonSupplyChain example may look simple, but it has the potential to be complex. When I asked the question what I had in mind is a similar model but with 100s of locations like DistributionCenter and Retailer (Basic Nodes).

Imagine you want 300+ basic nodes (like in my case) to have the same add-on process. Imagine having 300+ inventory elements that you want to write statistics for using a Write step. It's tedious to do things manually. 

As for referencing the same add-on process for 100s of objects (basic nodes in my case), I found a trick, which is to add the add-on process to one of the objects and then sub-class it so that the process becomes a default for the newly sub-classed object. Then change all the other objects to the new sub-classed object. 

As for writing statistics for 300+ inventory elements, I couldn't find a way to automate the process. To be clear, I want (for each inventory element) to write statistics at various points throughout the simulation run. The standard reported stats for inventory elements are only "Totals" or "Averages" or a function of the two. What I want is to see how a statistic changes over time, so I need to write to a CSV file using a Write step.

When working with large models, there's a need for automating some modeling aspects. Creating objects and elements can be easily automated using tables. It's dealing with these created objects and elements that sometimes needs tricks and workarounds to automate.

Link to comment
Share on other sites

×
×
  • Create New...