Jump to content


  • Posts

  • Joined

  • Last visited

  • Days Won


Everything posted by asneath

  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. 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
  3. 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
  4. 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!
  5. 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!
  6. 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!
  7. 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
  8. 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
  9. 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
  10. 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 
  11. 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...