-
Posts
1,654 -
Joined
-
Last visited
-
Days Won
52
Content Type
Profiles
Forums
Events
Gallery
Downloads
Everything posted by dsturrock
-
TransferNode does have statistics tracking, but you need to turn in on (General Category). The TransferNode itself doesn't really have any built-in place to wait (no station), so I sometimes recommend using a Server with a 0 processing time to provide a waiting area.
-
Unfortunately not. You can adopt a naming convention and meaningful names that make them easier to understand, like: int_FinishedPartsCounter real_ElapsedTime bool_CompletedPhase1 If you have just a single ModelEntity object that is fulfilling multiple purposes and thus requiring so many states, perhaps you might create multiple objects and have fewer states on each object. For example you might have a Parts object that has only the states necessary for parts and a Employee object that has only the states necessary for employees.
-
Consider the techniques described in the SimBit: EntityFollowsSequenceWithTable
-
Accessing the Batch Quantity of Combiner
dsturrock replied to poudenx's topic in SI General Discussions
I believe that when each parent arrives to a combiner, Simio evaluates the Batch Quantity expression in the context of that parent entity. So if your taxi entity has a state name Qty and your Batch Quantity expression was ModelEntity.Qty, then the first taxi might have a value of 3 and the second taxi might have a value of 1. You could assign the value of that state at any time and look at it from elsewhere as well. -
I would add a process something like this to determine which entities have waited too long and Tally them: Then execute that process at the point you want to record it, something like this: Then an expression like LongWaitEntities.NumberObservations would give you the number of observations in that Tally. You will also see a TallyStatistic that provides the average value of the observations: I was having problems uploading multiple pictures so here is a composite, but out of order:
-
Help requested with my first simulation
dsturrock replied to nico3337's topic in SI General Discussions
As I downloaded the model it had an error in the RankingRuleExpression of Cashier 1. This field requires a number and you were giving it an entity type. Instead: --Set priority of OTCustomer to be 1 and set priority of Prescription customers to 2. --Set this ranking rule as Smallest Value First with the expression "Entity.priority". Now, whenever both types of entities are waiting, the OTC will be selected first. To select from the set of cashiers, --Create a Node List named Cashiers (graphically or in Definitions tab) containing Input@Cashier7, 6, ...Input@Cashier1. The order matters. --For your WaitingArea node select: ----EntityDestination: SelectFromList ----NodeListName: Cashiers ----SelectionGoal: Preferred Order (or experiment with other rules) ----SelectionCondition: Candidate.Node.AssociatedObject.Name=="Cashier1" || Entity.Priority==2 The first 3 properties above force all entities to individually select a cashier, starting from bottom to top (selecting Cashier1 only if no others are available). The SelectionCondition says Any entity can select Cashier1 or priority 2 entities can select any cashier. The BlockedDestinationRule of Select Available Only forces entities to wait at that Waiting_Area node until a Cashier is available. Unfortunately node doesn't have a way of displaying entities that are waiting. If you want to display and control entities I recommend replacing that node with a Server with 0 process time. This is an easy way to provide an output node with a station where entities can wait. Without changing it to a server, entities will wait on the incoming path. Change the AllowPassing option to False on both those paths to see the entities waiting there. This doesn't solve all your problems but it should give you a good start while not taking away your opportunity to learn (why I gave you instructions instead of a model ) -
more equvalent serves bound with one table
dsturrock replied to angelo's topic in SI General Discussions
Ah, that makes sense. The Arrivals table is then a deterministic schedule of appointments. You can then use options on the Source to convert that to stochastic (early/late arrivals and no-shows). -
more equvalent serves bound with one table
dsturrock replied to angelo's topic in SI General Discussions
That sounds like you are doing a deterministic simulation. Depending on the form of your data you would need probably a single data file with columns something like: EntityType (you only need this if you have different types of entities) ArrivalTime - an exact time , either elapsed hours starting at 0 or an exact date-time MyServer (or Server Group) - Ideally this would be in the input node for the server (.e.g. Input@Server1) but if you have other forms you can make that work as well. ProcessingTime - a time (with units specified) --On the Source you would use Arrival Mode of Arrival Table, and specify Arrival Time Property as "MyTable.ArrivalTime". --If you have MyServer in the form of an input node, then in the output node of the source you would specify Specific Destination of "MyTable.MyServer". If you have it in another format, you might instead use selection weight on each path (e.g. if you just had an integer server number you might use "MyTable.MyServer==1" on the first path selection weight) --On the servers, set the Processing Time as "MyTable.ProcessingTime" That is the basics of how you might approach this problem. But I do have to question why you are doing a deterministic simulation. While deterministic analysis is useful for scheduling and validation, that approach is rarely appropriate in typical design models. You might reconsider if that approach is correct. -
more equvalent serves bound with one table
dsturrock replied to angelo's topic in SI General Discussions
I think we need some additional information. When you say you have "real data" do you mean that you have samples of processing time? If so, from that you would normally fit a distribution our use a table-based Input Parameter to draw from. You say that Servers 1-4 are identical and Servers 5-7 are identical. It might be easiest to model that as ServerA of capacity 4 and ServerB of capacity 3. Depending on what data you want to have in the table, it could be seven separate tables, or two tables (for the groups of servers) or most likely just one table with a row for each group of servers. You need to more clearly state your objectives and what you want to control, but it sounds like you will want to put some type of selection rule at the source output (to see where the entity goes next). Depending on your system and objectives you might want to have a custom routing group used at the output node of each server to determine which entity is selected next for server8. -
Choosing Alternate Sequence with more than One Entity Type
dsturrock replied to magranata's topic in SI General Discussions
Look at the series of 4 SimBits starting with EntityFollowsSequence... -
Random Entity Arrival from Data Table with Finite Entities
dsturrock replied to magranata's topic in SI General Discussions
Nothing in any simulation product is truly random - it is pseudo-random, or "predictively random". I know that's an oxymoron, but you want results to appear random, but still be predictable. And the RandomRow function behaves that same way. Every time you run replication #1 in Simio it will generate identical results, but replications 2, 3, ..., n will each be different. The interactive view always uses replication 1. That's part of the reason its important to run experiments with a suitable number of replications. -
Random Entity Arrival from Data Table with Finite Entities
dsturrock replied to magranata's topic in SI General Discussions
Your original problem stated: It seems the best and simplest approach is illustrated in SimBit SelectEntityTypeFromTable . Your table would have 10 rows, one for each entity type. You would add a 2nd column to hold the weight or frequency of selection for each entity type. Set your MaximumArrival on the source to 900 to avoid any overload. -
In the manufacturing example you can see that the vehicle sometimes carries 2 packages from the conveyor. Use the same technique.
-
Seize and release corresponding resource from list or table
dsturrock replied to clarkwym's topic in SI General Discussions
First of all, if every driver is locked to a specific car, and vice-versa, then it seems like too much detail to model both. What not model only the cars or only the drivers? But if you need to do this I might suggest having the car and required driver in a table, the have a custom car that each time before it starts a move, its driver (read from the table) is seized, and then released after the move. -
Introducing New Users to Simio - Comparing Simio to Excel
dsturrock replied to MarcoJHB's topic in SI General Discussions
Simio's two key advantages are the ability to handle complex situations and the ability to properly deal with variation. There are many slide sets and models available dealing with variability. You might consider looking at the Process Improvement Principles e-book included with the Simio software and its examples, included in the Examples folder, for some good illustrations. -
Avg Waiting Time Tally Values don't seem right
dsturrock replied to wwang7f's topic in SI General Discussions
Your user-defined Tallies were not generating accurate results because you did not specify units of time on the statistic definition. I did not do a thorough review, but what I checked seemed reasonable to me. The waiting time should be the sum of processing time + freespace travel time + waiting for server/resource time. The 2 experiments you had both illustrated constrained resources with lots of waiting time. When I added a 3rd scenario with high resource capacities (99 each) the TIS statistics were in the range I would expect. -
Seize and release corresponding resource from list or table
dsturrock replied to clarkwym's topic in SI General Discussions
Perhaps I am missing your question, but I think what you are asking for is pretty much built-in behavior. In the attached model I just added a label to the entity so you can see what is happening.SeizeAndReleaseFromList.spfx [attachment=0]Capture.PNG[/attachment] -
To get you started I changed the right side of your model to make it do what I think you wanted at the last 2 sets of servers. The RoutingGroups you needed were pretty simple. I didn't work back any further to the left because I didn't know what you were doing with the infinite capacities and 0 processing times.ExperimentoBucleV1.spfx
-
Most simulations are "push" -- as soon as a part is done, it pushes on to the next server where it waits for processing. It sounds like here you are looking for a "pull" system -- each part remains where it is at until it is pulled forward to the next server. There are several ways to implement a push system - detailed process logic is probably the most difficult. A better choice is generally to use a resource or event to control the timing. Exactly where parts wait can have a significant effect on the logic required. For example should the part be blocking its current server? wait in its output buffer? wait somewhere else? When you have parts waiting in multiple areas it gets a bit more complicated. --SimBit CONWIP is not exactly what you are looking to do, but it does illustrate how to use events to implement a pull system. --SimBit OverflowWIP illustrates using resources to pull appropriate parts from one of two locations to one of two locations, as needed. --Because you have parts waiting in multiple areas to go to multiple areas, you might want to use a slightly more advanced feature named CustomRoutingGroups. There is a SimBit of the same name. Esentially you will create a RoutingGroup (an element) to define what choices an entity can consider, ranking, and the conditions under which it moves forward. Then for each related node (like the two enfriados outputnodes, you specify EntityDestination to be that custom routing group. One key is to make sure you use the Blocked Destination Rule of Select Available Only -- this forces the entity to wait at the node until it is "pulled" forward to an available server or queue location. For any of these approaches I suggest you read up on it in help or a textbook, then review the SimBit. Happy modeling!
-
I just added a second model to that same project (see end of main post above) that illustrates use in manufacturing (e.g. a lift truck and driver).
-
Yes, I'd study these SimBits (in order, each builds on the previous): EntityFollowsSequence - Single entity type EntityFollowsSequenceMultiple - Multiple entity types EntityFollowsSequenceWithTable - Entity’s job table refers to its sequence data EntityFollowsSequenceWithRelationalTables - Sequences using relational data tables
-
Try SetRow step. It sets both the table and its associated row.
-
Using a resource intermittently during processing
dsturrock replied to KevUni's topic in SI General Discussions
Yes. You probably want to consider "Cutting" as a separate resource, not the server itself. There are several ways to model that. 1) Use Task Sequences and model the activity as a series of tasks: -Move to location -Cut (using resource) -Move to location -Cut (using resource) (repeat as necessary, possibly even specified in a data table 2) Do something similar within process logic: -Delay for move -Seize Cut -Delay for cut -Release cut (repeat as necessary)