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!



  • Content Count

  • Joined

  • Last visited

  • Days Won


asneath last won the day on April 24

asneath had the most liked content!

Community Reputation

3 Neutral

About asneath

  • Rank
    Adam Sneath


Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. 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!
  2. One approach would be to use an Output Table. There is a nice example provided in the UsingAddRowAndOutputTable SimBit. Keep in mind that each individual processing task has its own State Assignments and Add-On Process Triggers for 'Task Ready', 'Starting Task' and 'Finished Task' - these may be helpful in the endeavor. Happy modeling! Adam
  3. Hello, I would recommend looking into the notion of AssociatedObject, and ContextObject, for the Tokens moving through your processes. You can read more about this in the "Tokens" help topic. In some cases, the associated or context object is a ModelEntity so you can access it along with its data in your process steps. In some cases, though, ModelEntity is not associated with (or contextual to) the token executing the process! In this case there is an error if you try to use 'ModelEntity...' in your process. One way to check the AssociatedObject and ContextObject is using a Notify step at the beginning of your process with Notification Type 'Warning', MessageHeading 'Token.AssociatedObject.Name' and MessageContent 'Token.ContextObject.Name'. Happy modeling! Adam
  4. Hello, I don't think you attached a file to your post. I would recommend looking at the Output Tables help topic. Instead of using the Server's built-in State Assignments, you may need to use an Add-On process with an Add Row step followed by an Assign step to update the Output Table. Happy modeling! Adam
  5. I noticed that the Source is not making just two entities, as you stated, it is actually making several as governed by your Interarrival Time. But since you have Output@Source1 (TransferNode) Blocked Destination Rule set to 'Select Available Only', all entities created after the first two are waiting until one of the Servers has finished processing. You will notice that once Server1 has finished processing, an entity is released from the Source (since its destination has been assigned). I would recommend exploring this further by enabling 'Model Trace', from the Run Ribbon, to see what is happening behind the scenes. Happy modeling!
  6. Double check that each Resource is hooked to the correct Work Schedule, and that you have the intended Day Pattern inputs for Mon - Sun in your Work Schedule(s). It sounds like you might need a separate (two total) Work Schedule for each group of 5 Resources. I would also recommend visually verifying that the Resources go OffShift (turn white) at the intended times. Other than that just make sure that the Off Shift Rule, in the Server's Secondary Resources, is also set to 'Suspend Processing'. Another way to check that the Server has suspended processing is to put some Dynamic Label Text on the Entity like 'ModelEntity.ID' so you can see exactly which Entity is in the Processing.Contents queue of the Server before and after the shift change. It should be the same one! Happy modeling!
  7. Yes! You will need to use a "Table Based Work Schedule" instead of a "Pattern Based Work Schedule". You can create a Table Based Work Schedule in the Data tab, Work Schedules view, Schedule ribbon (near the top left). The data table, which may be bound to an outside source like any Simio data table, should have two DateTime columns called something like 'StartTime' and 'EndTime' along with an Integer column called something like 'CapacityValue'. You may read more about the implementation in the Simio Reference Guide (Help via the Support ribbon) "Work Schedules" topic. Happy modeling!
  8. The Server Initial Capacity property sets the capacity of the processing station within the Server. Regardless of the Initial Capacity value, each Server Object is regarded as a single Resource in terms of the Results provided by the simulation. This is a long way of saying that, if you want to analyze each firm separately, you will need a separate Server for each one or a pool of Secondary Resources like you had mentioned. Happy modeling!
  9. Hello, in general it sounds like your approach is good. You could use either an Object Reference State Variable or String State Variable (called something like 'WhichServer'), defined on ModelEntity, depending on the expression you use to make the assignment. For instance, with an Object Reference State Variable you could use 'ModelEntity.Location.Parent.Server'. With a String State Variable you would use 'ModelEntity.Location.Parent.Server.Name'. In terms of timing, you could make the assignment really anytime the ModelEntity is in the Server. You might use the Servers' On Entering State Assignments for example. Then somewhere downstream, perhaps the Entered Add-On Process at a Sink, you could use Add Row and Assign steps to populate the Output Table. Again, just be mindful to make the column types (Object Reference State Variable or String State Variable) match up with the assignments you are making. For instance you might have a String State Variable column named 'Entity' and, in the Add-On Process at the Sink, you assign 'OutputTable1.Entity' the New Value of 'ModelEntity.Name'. Then you could have an Object Reference State Variable column named 'Server' and in the same process assign 'OutputTable1.Server' the New Value 'ModelEntity.WhichServer' (since it is also an Object Reference State Variable). The result will be a list of each ModelEntity (Name) and the Server that processed it. Hope this helps! Adam
  10. Michael, VehicleX is a Custom Object (Subclass of Vehicle) with several Definitions, Processes, etc. created by (I'm assuming) Dave. This is why you aren't seeing some of those Properties in your Vehicle Properties window. You may download the "VehicleWithDriver.spfx" file provided above and explore it further. Happy modeling, Adam
  11. Hi David, From your description and Error message, I expect that your Table column might need an adjustment. Since you are trying to assign a number (Integer?), you need to make sure that the Table column where you are trying to make the assignment is set up as an Integer Property, and not an Element Reference Property as the Error message indicates. The easiest way to do this is just make a new column from Schema (ribbon menu) -> Property drop-down -> select Integer. Delete the old column and give the new one its name so you don't have to rewrite your Logic. Maybe you know this already and the issue is more complex. If so, I would be glad to help troubleshoot if you can attach your Model. Happy modeling! Adam
  12. Simio offers user-defined work schedules in the Data tab. The SimBit ServerFollowsCapacitySchedule or others related to work schedules could be helpful. You can define a Pattern Based Work Schedule, to account for the shifts you described, and modify Server Properties like OffShiftRule (under Secondary Resources) to 'Finish Work Already Started' or 'Suspend Processing' depending on what makes sense for your Model. Adam 
  13. Hi Jason, If you just want to see the emissions for each Entity traveling through your Model, you could attach a Status Label to each Entity type displaying the TotalDistanceTraveled, or some calculation including it like TotalDistanceTraveled*0.323. To attach it just click on the Entity instance in Interactive mode and then draw the Status Label near it. Or you could define State Variables like Ship_Dist, Truck_Dist, Train_Dist to keep track of total distance traveled for all Entities of each type. You would then define State Assignments at their final destination (Sink), or some Node along their path, to increment with NewValue of "Ship_Dist + ModelEntity.TotalDistanceTraveled" then compute the total emissions for each type at the end of the run. Note that you would need an Assign If 'Custom Condition' like 'ModelEntity.Is.ShipEntity' for this to work. Happy modeling, Adam
  • Create New...