Jump to content

Search the Community

Showing results for 'event parameters'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Simio Public Forums
    • Welcome and How To Become a Simio Insider
    • Simio News and Announcements
    • Simio Product Details
    • Simio-Related Positions Desired or Positions Available
    • Help Getting Started with Simio
  • Forums for Simio Insiders Only (See Public Forums Welcome topic to sign up)
    • SI General Discussions
    • SI Sprint Releases
    • SI Shared Items
    • SI Ideas and Suggestions
    • SI Known Issues and Workarounds
    • SI Performance Tips
    • SI Non-US Cultures
    • SI Student Competition
    • SI Educational
    • SI Libraries and Objects
    • SI Animation and Visualization
    • SI Distributions, Functions, and Expressions
    • SI Simio Tabs
    • SI Experimentation and Optimization
    • SI Functional Approaches
    • SI Industries / Domains
    • SI Types of Simulation
    • SI Emulation
    • SI API

Categories

  • Files
    • Academic Information
    • Product Information
    • Case Studies

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


About Me


First Name


Last Name


Company/University Name


OCCUPATION


ICQ


WEBSITE


YAHOO


AOL


LOCATION


FACEBOOK


GOOGLEPLUS


SKYPE


TWITTER


YOUTUBE

  1. According to the error messages it seems simio can not handle your order volüme. I do not examine your mode logic but I tested the model with order volüme 10 (for each row for your table) and the model worked without any error messages. But, as agraunke said your model logic should be tracked carefully. For example, I noticed (and fixed) one of the decide step is defined as conditon based but there is no condition specified. and also, I agree with agraunke that there could be some parking problems. For example incoming entities are transferred to stacker outputbuffer and then parked there? is this required and right?... anyway, test your model with different parameters.
  2. Once again thank you for your replay. It's a very helpful input. However I dont understand couple of things. I am already using tables for my model. Please look at the example: So I want my system to do the following. OrderSource create an Order Entity(ArrivalTable.PO) based on ArrivalTable.StartDate, as soon as it gets to the sink it fires the RealseOrder event. Triggered by this event MaterialSource will create a coresponding material entity(MaterialTable.MatType), which will be transported to the Server(ArrivalTable.WorkStation). Server will create entities(add-on process with create step) in a quantity corresponding to ArrivalTable.Volume and ModelEntityType corresponding to ArrivalTable.ProductType(string). Each processed unit will arrive to a server which will batch units to specified quantity. Batched units will be waiting for an operator to pack them and place into container(server?). When container is full it's picked up by a vehicle and transported to inventory. I have most of it already modeled. However I am having problems with assigning correct rows. I've added RowNumber real state for ModelEntity and I've tried to assign it on MaterialSource on the StateAssignment Source property but something still doesnt work. What am I doing wrong? Edit: I have solved the problem with a RowNumber assignment. Thanks a lot for help, finally it creates a volume corresponding to correct row in a table. Now I am struggling with entity.type(i created new string state variable) problem. When I am trying to do as you have explained Im getting en error saying "Error assigning state variable ModelEntity.Type . Data type mismatch, state is string type but the new value to be assigned is of type NUMBER" I used assign step ModelEntity.Type to be changed to Model.Entity.Type == MyTable.ProductType and i get that error even though ProductType column is a string property...
  3. Mark, just an FYI that in Sprint 102, the following objects in the Flow Libary: Tank ItemToFlowConverter FlowToItemConverter Have all been enhanced to provide new 'Purge Contents Triggers' functionality. For the Tank object, the 'Purge Contents Triggers' feature will allow you to specify conditional event-driven triggers that will immediately remove and dispose of any contents held in the tank, putting the tank into an empty state. This will easily allow you for example to clear residual flow contents in a tank due to round-off errors, by having the tank perform a conditional check when some specified event occurs (e.g., each time a filled container exits a Filler that the Tank is supplying, then purge the tank if the remaining contents is smaller than some epsilon quantity). A 'Purge Contents' trigger might also be defined to purge/flush/clear the Tank for any other sort of reasons, to reset the flow line back to an empty state. For the ItemToFlowConverter object, the 'Purge Contents Triggers' feature will allow you to specify conditional event-driven triggers that will immediately remove and dispose of any generated flow waiting to exit the converter object, putting the converter's flow container into an empty state and cancelling any further outflow for the discrete item entity whose conversion was in-process. For the FlowToItemConverter object, the 'Purge Contents Triggers' feature will allow you to specify conditional event-driven triggers that will immediately remove and dispose of any inflow collected by the converter object for creating the next discrete item entity, putting the converter's flow container back into an empty state. In addition to the above features, based on some of the discussion that was going on in this Forum thread regarding the Filler (or Emptier) being more flexible dealing with possible round-off calculations, a new 'Stop Early Event Name' property may be found on those two objects in Sprint 102. The 'Stop Early Event' feature on the Filler & Emptier objects will allow you to define an optional event that will end the filling or emptying operation early (before reaching the desired fill or empty target) if the specified event occurs. If, for example, you have a Tank supplying a Filler, you might specify that the Filler should stop filling the current container entity if the container becomes full OR if the tank becomes empty, whichever event occurs first. This type of logic would ensure that the container entity is always going to finish the filling operation and exit the filler, even if say there is a scenario where the container entity's capacity was 0.2 but the contents in the tank was 0.199999, the tank would go empty and the filling operation would be considered completed. Thanks again for the feedback on this thread. The input on this forum is appreciated, and we often use information here as input into possible new enhancements and design evaluations.
  4. Dear Simio Forum Members, how would one define a robot/population of robots with a set of instructions: - pick up a part (from sink) - go to a "suitable" station ("suitable" is defined according to the minimum number of robots with parts in a queue waiting in front of the station, time of travel, waiting time and operation time.) - if there are already more robots in front of a station, choose an alternative one - wait in front of a station for the part to finish - pick up the finished part and continue to the next station/sink (according to list of stations) There are partial solutions within SimBits but I am still having difficulties to define these parameters. So, for now I would like to accomplish that one robot picks up the part and with that becomes the dedicated transporter around the system for that part - meaning it also waits in front of the station/server. And during this waiting, other robots are also picking up the parts and going to designated stations. If the station is occupied, goes in a queue holding the part. Any guidelines in finding a solution would be appreciated. Best Regards, Damir TU Vienna, Austria
  5. Mark: Specifically for the Flow Library Filler & Emptier objects, what I will probably do is add something like a 'Stop Early Event' option, where you can optionally specify to stop the filling or emptying operation early if some specified event occurs. Then in the Filler for example, you could specify to fill the container entity until full or until the source tank is empty (i..e, the tank's 'FlowContainer.Empty' event occurs). Whichever of those events happens first. In your sort of model, that kind of simple approach would guarantees the container is 'filled' and exits the Filler regardless of round-off error. If your fill target is 2.0 and there is only 1.99999999 in the source tank, then the tanks goes empty first and the filler stops. If there is 2.000000000000001 in the source tank, then the container entity full event happens first and the filler stops. Either way, the container entity is exiting the filler and away it goes. Now, in the above latter case where there was 2.00000000000001 in the source tank, of course then you might have some tiny residual left in the tank after the filler is done. In that case, what I have been considering is adding an 'Auto Destroy Contents Mode' to the Flow Library Tank, which allows you to auto-destroy the tank's contents if some specified event occurs and perhaps a condition is also true. Thus, for example, you might want to auto-destroy a tank's contents if the inflow entity type is changing and new product is entering the tank (to 'clean' the tank). In this filler case, when the container entity exits the Filler, you might want to have the Tank be notified of that event and then check if there is some tiny amount still in the tank and if so then just automatically destroy it. If I put in features like above, I think you'd be able to model your flow transfer situations using the Flow Library Tank and Flow Library Filler for example without having to worry about any EPSILON tricks to account for round-off error. And the above are generally the type of features that I lean towards. Getting into Simio's flow engine itself artificially adjusting flow quantities by small epsilon amounts to try to deal with possible round-off errors doesn't feel so good.
  6. Hi first of all sorry for my bad English, is the first time I write on this forum!! For my work, i have a problem in a SIMIO model and specifically in the use of vehicles; i will try to explain the problem.... In SIMIO model, i set a facility node wich is the park node of my vehicles. These vehicles must serve event / entity occurring in 3 nodes. Each event is handled by a combination of different vehicles (which I have set in a data table). My events have different priorities (high and low), those high-priority events interrupt those low priority events(as is the case in some of SIMIO simbits). At any given time my vehicles, are insufficient to handle an event.... I wish that before processing an event there was a check on the availability of vehicles; If the vehicles are sufficient in number to process the event they will be send to the node of the event, otherwise I will wait for other vehicles required... Logically, the entity will stand in a queue on the server until it can not be served by sufficient and necessary vehicles. At the moment I'm trying to use a Decide Step to check FreeVehicles; if the Decide Step Condition is True i use a Seize Step to seize necessary vehicles.....and if the condition is False??? How can I wait and check again until the condition is true? I hope that what I wrote is clear... ask me any questions Many thanks to those who want to help me! Marco
  7. Is it possible to implement a wait step that either waits for a specified time, or for an event to be fired (which ever comes first). I hacked together a model where I execute a process before the wait step, that delays for the time and fires an event. I then simply listen for either event at the wait step. I don't think this is very neat. Is there a better way? I can see there are timer elements, but I don't see how you would invoke one simply to act as a countdown.
  8. 1) Add a Timer element. Initially Disabled. Specify the Maximum Events = 1 and the Time Offset as a variable (or the constant time if that is the situation). 2) In the process with the Wait step, right before the Wait, assign the Enabled state of the Timer to True to start it up. 3) In the Wait step, wait for either your primary event, or the Timer event, whichever occurs first. No need for a second process. Just a combination of a Timer and a Wait step, with the Timer's event being one of the possible events that the Token may be waiting for.
  9. Hi all I have a model that involves entities arriving at a destination node on a transporter, accompanied by another vehicle which has been seized by the transported entity. At the node, the entity is destroyed but I have a wait step for the seized vehicle which waits for an event fired by the entity as it is destroyed (fired in the on destroying process in the entity). This all works well 99% of the time, when I was running an experiment for a specific time (7 days). I tried a longer run (14 days) in order to assess output of the model and in some replications (3 our of 15) there were some really extreme data. To cut a long story short, I eventually found out that the on destroying process (and the event that I attached to it) stopped executing about 2/3 of the way through these replications. This only happened in some (3) replications - the others were fine. The result was more and more vehicles stuck in infinite waits, hence the strange data. Does anyone have an idea why this would happen? I can find no cause in terms of process logic that I have implemented. -Chris
  10. I have seen this error before with transporter/entity transfers... You may have conflicting logic here.... i.e. an event occurs that triggers a token into a delay or wait step based on a condition before transfer can complete, yet during this duration another event occurs that wants the transfer to occur for a second time or the entity to be directed somewhere else...the original token is not released and destroyed first... simple solution... I used dummy nodes to shift the transporter\entities around based on a precedence constraint structure whilst clocking the time of the transporter\entity at each node. This worked like a bomb. Also, if you don't need the original token, destroy it or don't attach any processes on the line after it.
  11. I can catch you on skype to show you for I have various timers performing different things.... One example would be where I have priority based maintenance...i.e...Shutdown...Planned...Breakdown....each running off of their respective timers...As these activities timers can overlap as they form part of their own unique distributions, events are fired based on the priority constraint to allocate the transporter a different state...The logic involves correctly disposing of the tokens in a wait state of the previous constraint process as well as resetting and adjusting the timers....i.e....If I am on breakdown and scheduled maintenance hits, then the schedule maintenance process is executed and Breakdown processes stopped or delayed until a corresponding event is fired....this includes material handling assignments, crew, etc.... Another example would be dynamic generation of "demand" transporters based on a varying monthly rate dictated by variations in supply due to statistical randomly generated constraints... The timer is adjusted based on a change in arrival rate which is calculated and dynamically updated to ensure that there is always just enough demand for current available supply...This forms part of optimized planning for bulk carriers which cost a hell of a lot of money if they are just chilling in the ocean... But ultimately and perhaps the crown jewel is handling flow transfers from one transporter to another...since i had developed the logic before this super awesome new release of the transporter library, I needed events to check when the load or discharge level had been reached, or the full or empty state of the flowcontainer had been reached on either transporter, or objects fired events which needed to seize loading/discharging and stay, or seize loading/discharging and move away, as well as handle inherent timers on the transporter for breakdowns that will execute different processes depending on the type of breakdown....i.e. move the transporter or stay put... It all sounds really complex but its very simple.... Hit me up on skype...
  12. What about having a separate process that contains an execute step, which is triggered by a timer... The execute step would call the process which you want, which is triggered by a firing an event ?? Not pretty but effective, I am sitting in the same boat...
  13. Thank you, I attach a file, I create a process that is triggered with Timer "MantencionPV" and what it does is change the CurrentTravelerCpacity 0. In my model to the Source Selection Goal I defined as the shortest distance, withthe condition that the destination node is greater than its CurrentTravelCapacity 0. if you run the example command until time 2 works fine, the vehicle carries the elements of the soruce Sink gatillarse but when this event gets stuck at that point and what you should do is to continue functioning but not taking into account that CurrentTravelerCapacity Sink with 0. Regards Cristian ejemplo.spfx
  14. I tried creating a process model to simulate a failure , for this what you realizadoes create a Timer event and a process that does is change the Current Capacity of the Path that connects my Sink with the rest of the model. The problem is I have a Node List where this point, while there is no event of failure in the Sink model runs smoothly , the Vehicle Trasnportes items from Source to the Sink, almomento a fault occur Path 's ability to change 0 as was to do processing, but equally my vehicle gets stuck on waiting Path to go to that Sink , rather than reevaluate and go elsewhere Sink. I tried changing the InputSink CurrentTravelCapacity and CurrentCapacity but equally I feel the same hopes to enter the Vehicle . How can I do to make the Vehicle reevaluate where to go to leave the body ? . the list of nodes containing 5 Sink logic Vehicle is go to the nearest Sink. Please show your support
  15. The standard student version is limited to creating 5 object definitions. So I recommend using add-on processes to create custom object behavior. While it is possible to add a failure to any object, this requires some expertise to do so. Resources already have failures and states built-in. I would recommend seizing and releasing a resource using add-on processes and then applying the failures to that resource. Timer is just one way to create an event. Events can be triggered in many ways. For example, you could use the OnRunInitialized process in your model and have a series of Delay -> Fire steps (or more complex logic) to trigger a series of events.
  16. Additionally am creating a timer for time to time an event is generated in the SINK, but do not want to occur in all at once, how can I do that without having to create one timer per SINK?
  17. I suggest using Node Lists column in a table (see attached example) instead of using a sequence table, I setup a routing table with steps (representing sequences). The route table is a child of the entity table. The sources in the model are setup to reference row 1 of the entity table in Source1 and row2 of the entity table in Source2. Each step in the route table is associated to a node list....The node lists represent the "OR" condition. If the node list has Input@Server1 and Input@Server2, the transfer node will use the list to either sent it to Input@Server1 or Input@Server2 based on the selection goal. In the attached model, the selection goal "Smallest Value" and the selection expression is "Candidate.Node.AssociatedStationOverload"....This represents the sending the entity to the server least available input buffer capacity. I think this handles the scenario you explained. As for integrating with OPC, I would suggest looking at this example: http://www.simio.com/forums/viewtopic.php?f=12&t=1381 It shows how to build custom steps and firing events using .NET code. If you wanted to communicate with OPC, you would use a custom step to read the OPC server. If you want the OPC server to interact with Simio. you would call a custom event. It is possible to setup the same of integration with an ERP system; although it is not recommended. For ERP integration, I would recommend using a data table with data binding. Since the data in an ERP system is much more static, it can be loaded at the beginning on the model run. Then the data can be referenced in the data table during the simulation run. RouteByNodeListsModel.spfx
  18. I’ve got a follow up question of my own. What is the use-case of the table property? I can define a table property on an object, and then set that property value to a table in my “parent” model in my object instance. In my object’s processes definitions, I can search the table and find all the rows. However, I can’t seem to do anything with the rows found. For example, I’d like to get a field from each row and assign it to a state variable. I tried referencing the result using TableProp[1,1] , but I get an “incorrect number of parameters” error . I can’t set a state matrix to the table property either  So, what can I do with a table property? Thanks, Adam
  19. A repeat group is a way to pass data between objects. It consists of N fields of properties, which can be repeated (similar to a collection of rows, i.e. a table)—hence a repeating group of properties. The reason you can’t reference the table from the submodel is because of the object orientedness of Simio. When you create a submodel, you are actually creating an object definition. You may only ever plan on placing (or instantiating) your object in a “parent” model in your current Simio project (the .spfx file you are working with), but there is nothing stopping you (or anyone else with access to your project file) from instantiating that object in another, different, parent model or even in a completely different project file (by loading your project file as a library, fyi). So, your submodel can’t know about anything in a parent model, unless there are properties that can be set on the object instance that can then refer to data or parameters at the parent model level. That’s what this quote is referencing: You can “pull” data into an object by looking at Location.Parent.Model.ArrayName for example, but you can’t do too much with that, because there is no guarantee that that array even exists for an arbitrary parent model, let alone that the contents of the array are what they “should” be (in terms of data type). In your case, how would each submodel that you place know which table to reference? Even if you set a table property on the object definition, Simio cannot know what columns will be available, even though you will by virtue of building the model. Repeat groups allow you to create a kind of property on your object definition that you can, for each object instantiation, populate with a table. With a prepeat group, your object definition “knows” about what data will be available to it, because you’ve stated “this data is a property of this object, and it must be set each time I instantiate an object of this type.” Still doesn't resolve the difficulty of actually setting all those properties to get your data into the object instances, but maybe helps explain why things are the way they are... -Adam
  20. Hello Simio Community! In my current project I want to show how Failures affect a business process, when they occur at a certain time during the day. My problem is that I don't understand how to invoke these Failures let's say between 7.00 and 9.00am every day. When I try the Event based Failure item there is not possibility for changing the settings of an event. Plus I don't know how the calendar based Failure system works. Does anyone have experience with that kind of Failure-Setting? Thanks, Thomas
  21. "Must not work" - is this really a "failure" or just scheduled time when it cannot work. The latter is a bit easier. You just assign the capacity to 0 for a time period, then restore the capacity to 1. Use a Timer to create an event at time 7 hours, then every 24 hours. That event can trigger a process that delays for a random time of 0-2 hours, assigns capacity to 0, delays for another random time of about 10 minutes, then sets capacity back to 1.
  22. Please elaborate on what you want to do. Are you looking for deterministic failures on demand? If so: -- One approach is to do this totally within processes using the Fail and Repair Steps. -- Another approach is to specify an Event-based failure on Server, then use process logic or even entity arrivals to trigger those events (and the resulting failures) on demand.
  23. I almost always simulate this using fillers/extractors from the extended flow library rather than directly filling a container on a vehicle/entity. It sounds like you could do this with entities or vehicles as long as your decision making for entities is as simple as you describe. If you do it with entities, you will have to write a bit of decision logic to the entity. I would recommend doing this on the 'onVisitNode' process, which would basically be a decision of 'Should I park now?'... true being to park and then wait for some event (wake him up), false being to keep on towards the destination. If you do it with vehicles, you will need to make some sort of decision request for the vehicle to go to the relevant node for pick-up. Normally this is done by an entity at a transfer node using the 'ride' step. However, riding a vehicle is about transferring into the ride station, not filling a container.... I foresee many pitfalls with this methodology! I might have time to take a crack at this later -- no promises though.
  24. Time varying arrival rates are random. Excerpt from Simio Help: Rate Tables The Rate Tables panel in the Data window allows the user to model situations where an arrival/event rate varies discretely over time. The number of fixed rate periods and the length of each rate period can be specified in the Rate table. The rate pattern automatically repeats during the running of the simulation. A Rate table is used by the Source object / Timer element to generate entities / events with a time-varying rate. Internally, a non-stationary Exponential distribution is used to calculate the rates. The rate units for the Poisson arrival process is Arrivals per Hour, regardless of the time units specified for the intervals of the rate table. In order to use a Rate Table with the standard Source object, set the Arrival Mode property in the Source to 'Time Varying Arrival Rate' and then select the appropriate Rate Table for the Rate Table property. The Source also includes a Rate Scale Factor property that can be used to easily modify the values within the table by a given factor instead of changing the values separately. For example, to increase the Rate Table values by 50%, simply specify the Rate Scale Factor within the Source to '1.5'.
  25. If you happened to uninstall Simio without returning your roamed license, you need to in reinstall the same version in order to return the roamed license. If you just uninstalled Simio 4.79 or higher, you have another option. In the attached zip file (ReturnRoam.zip), there are 2 executables. Unzip these executable into the C:\ProgramData\Simio folder. Then, run the "ReturnROAM.exe". When prompted, select the license (simio-d = Design, simio-e = Team, simio=n = Enterprise) and the year.month that the sprint was released (e.g. Sprint 87 was released in 2013.04). Then press "Return ROAM". The executable will return the roam license. If successful, the following dialog will be displayed. If it is successful with returning the roam license, it will remove the roamed license parameters from the Simio.Settings file. ReturnROAM.zip
×
×
  • Create New...