-
Posts
1,654 -
Joined
-
Last visited
-
Days Won
52
Content Type
Profiles
Forums
Events
Gallery
Downloads
Everything posted by dsturrock
-
That depends on exactly what you want. If you want to combine *projects* together, then you can just create a new one, open the ones you want to copy objects out of as libraries, the go to the Project's Models view, and select either Copy From Library to Edit (if it is going to be a different object in just this project) or Clone From Library (if you really just want to "merge" the two, which is why this option exists). But if you want all components of both models to appear all together in a single model object, without using sub-objects, it is much more difficult. You can select all and copy everything in the facility view with one action. But for everything else you must copy and paste every individual component separately (e.g., each TallyStatistics Element, each Process, ...).
-
Custom solution for now. Maybe eventually it will become a SimBit.
-
Nadine, I took your initial request literally in that you are looking for Waiting Time (e.g. time spent in one or more queues) by entity type. If this is in fact what you are looking for, then follow my suggested solution. If what you are really looking for is TOTAL TIME in system by entity type, then what Mustafa and Glenn have suggested is a simpler approach.
-
Allowing for Partial Pallets in Combiner
dsturrock replied to mcmckay723's topic in SI General Discussions
I always fall back to looking at how the real system operates. Exactly who makes the decision on when to allow a small batch and on what information is the decision based. Once you determine that I expect that you can represent that behavior in Simio. For example: Does the last batch member have some sort of indicator on it? Is there only a fixed amount of time that a partial batch will wait to be completed? You could possibly hold the parent just outside the combiner until the last member of its batch is determined, then tell it (the parent) what batch size to use. -
Allowing for Partial Pallets in Combiner
dsturrock replied to mcmckay723's topic in SI General Discussions
The batch quantity is an expression evaluated in the context of the parent entity. So if the parent entity can recognize this situation, then the expression could cause that to happen. To take a simple example... I have 10 members coming down the line and I want (ideally) to batch them in groups of 4. If the 3 parents coming in had a state named MyBatchSize, that was set to 4, 4, and 2, respectively, then the BatchQuantity expression would simply be MyBatchSize. Although I recognize that most situations would be more complex, perhaps this can give you some ideas. -
In Enterprise you can update a table state using an Assign Step. In other Simio versions you can have a matrix array that is initialized from a table, then use an Assign Step to update the state values that would correspond to a particular cell.
-
Here is a model illustrating the above approach:RecordTotalWaitingTimeByEntity.spfx
-
It's not clear to me if you are looking for waiting time at a particular location, or overall waiting time, but either way, Simio does not calculate that automatically by entity type, so you need to add custom TallyStatistics by entity type to record these. The general procedure is: 1) Create an appropriately named TallyStatistic for each type (e.g. PartAWaitingTime, PartBWaitingTime, ...) 2) Add a state to the ModelEntity definition to hold the queue entry time (e.g. TimeEnteredQueue) 3) When it leaves the queue (when it starts processing) record its waiting time using an expression like (TimeNow-TimeEnteredQueue) to the appropriate tally. There are several ways to get "the appropriate tally". Brute Force: Use a cascading series of Decides each with a condition like "Is.PartA" followed by a Tally Step to PartAWaitingTime of "TimeNow-TimeEnteredQueue". Elegant: If you already have a part information table (like in SimBit EntityFollowsSequenceWithTable) then add a column of type Element Reference > Tally Statistic called WaitingTimeStatistic and then have a single Tally Step to JobTable.WaitingTimeStatistic of "TimeNow-TimeEnteredQueue". If you wanted total waiting time instead, then you would need an extra state on the entity to incrementally collect each waiting time, then use the above procedure to tally it once when each entity reaches the Sink.
-
UserExtension does not get picked up?
dsturrock replied to KPetkova's topic in SI General Discussions
I suggest that you carefully review the instructions in the API forum discussions. There you will find several suggestions that might help. -
Lets start with what you are doing wrong with your present approach. Let's assume that at some point both units of Server 1 are busy, the other Servers are idle, and a new patient arrives. The path weights will be evaluated as follows: Path 1 (to Server4 chair) is True = 1 Path 2 (to Server5 chair) is False = 0 Path 3 (to Server6 chair) is False = 0 Path 4 (to Server1) is False = 0 Path 5 (to Server2) is True = 1 Path 6 (to Server3) is True = 1 So you have a 1/3rd chance of selection each of Server 4, 2, or 3. I think a better choice is to put all 6 possible servers in a selection list (rooms first, chairs last), then select destination from that list using a Selection Goal of Smallest Value and default Selection Expression. Make sure you leave Blocked Destination Rule of Select Available Only. And set all your Input Buffer Capacities to 0. Perhaps you don't even need the servers for the chairs. Instead set the Output Buffer of the Checkin to size 3 and let that represent your 3 chairs. That also solves the next question you were about to ask "How do I get the people to move from the chairs at the right time and into the rooms?"
-
If you select the option to Park at a node, by default an automatic parking queue is provided. You can disable the automatic queue and add you own queue (both via the ribbon). The you can choose queue options to have them displayed at the exact location and orientation that you choose.
-
Help with prioritized workers: looking for ideas
dsturrock replied to kcolvin@calpoly.edu's topic in SI General Discussions
I would look at the SimBits WorkerUsedForMultipleTasks and MoveableOperator for some tips. -
If the vehicle Routing Type is On Demand, then it works by reservation only. Reservations are made based on the node's Reservation Method and Selection Goal. In general each vehicle can only accept a single reservation at a time, with the exception that it will accept up to (Vehicle Capacity) reservations all originating at the same node and with destinations at the same node. You can customize the above behavior customizing the Evaluating Transport Request Add-on Process as illustrated in the attached Librarian model.Workshop08c-Librarian.spfx Another choice which may better address your problem is to make your vehicle Routing Type be Fixed Path. With this, the vehicle will cycle through any nodes you want and pick up as many at each node as possible. You can see an example of this in the VehicleFixedRoute SimBit.
-
Destination (or SetNode step) tells the entity WHERE to go. Link Selection Weight tells the entity HOW (which link to take) to get there. It is possible to use both, but you have to be very careful because as you've seen it is pretty easy to give conflicting directions (e.g. go to Server1, but follow a link which ends at Server2). Without knowing specifics it's hard to give much advice. Sometimes an intermediate node is useful - either a second node just after departure (perhaps to clarify the "how"), or a node serving as the entry to a group of servers - it first travels to the entry node for a group of servers, then makes a last minute selection at that entry node of the specific server within the group. Or if you use add-on processes, you can do just about anything you want. The hard part might be figuring out exactly what you want. Good luck.
-
The numeric or logical expression in Selection Weight should work for any path regardless of what is is connecting or what the actual expression is. I would look carefully at your expressions, maybe even put some status displays on the entities or model to help you debug exactly what is happening. And make sure that you are actually using the Selection Weight (this is the default UNLESS you have a destination specified for the entity).
-
You might try the selection weight technique demonstrated in the OverflowWIP SimBit.
-
Every server-type object has an Input Buffer. Look at the statistics there for waiting time at each server.
-
Transportation Library - Trains, Robots, Tanker
dsturrock replied to dsturrock's topic in SI Shared Items
I will remind everyone that libraries posted in the shared folder are not supported Simio products. These are example utility libraries that someone felt might be useful to others. While we welcome suggestions and even enhancements, these objects are all open and the intent is that you can modify the behavior to meet your own needs. -
I will refer you to the Simio help topics on List States and ResourceState. The short answer is that Simio automatically maintains the resource state for you and you cannot directly change these autostates (see topics above for elaboration). For example you can not just make a Busy resource become Idle by assigning it's state. But you can take actions to cause a state change. For example if you set a resource capacity to 0 you are forcing it to an Off-Shift state. Or if you execute an Allocate step this could have the result of changing it to a Busy state.
-
Seize vehicles by entitis with different priorities
dsturrock replied to marcosimonetticnr's topic in SI General Discussions
In general each seizing object would have a priority, be ranked by that priority in the seized object's allocation queue, and be automatically allocated when the seized object becomes available (a release or capacity change). This is typically done automatically by the Seize and the resource allocation logic. If multiple units of a resource are needed, just specify that in the Advanced Options of the Seize step. If multiple different resources are required, either use a list of resources and specify capacity required, or use multiple Seize Lines in the repeat group. If the automatic logic described above doesn't work for you, then you could have a Decide (do I have enough) with the True connecting to a Seize step, and the False connecting to a Delay or Wait Step. The Delay or Wait might then loop back to the Decide. -
Transportation Library - Trains, Robots, Tanker
dsturrock replied to dsturrock's topic in SI Shared Items
Not quite as easily as that, but you can set a monitor on state VarB so that when it changes you can then "automatically" update VarA. -
IAhmad, There are many approaches to solving this problem. I suggest you explore the series of four SimBits named "EntityFollowsSequence..." for a complete discussion of the alternatives. You chose to use separate, but non-relational tables. You told it to get a value from somewhere in a table, neglected to tell it which row (e.g. Table1[1].processingtime) or establish any relationship between the entity and a particular row in the table. One way to do the latter is:
-
Candidate SimBits are always appreciated. Share your knowledge.
-
Here is another example. The two models illustrate two different approaches to modeling the transmission of infectious disease.InfectionPropagation_Levels.spfxInfectionPropagation_Flow.spfx
-
Part of the purpose of the Level States and Monitor Element, and the Flow and Extended Flow libraries is to be able to easily model most common "continuous" systems without any code or equations. The attached model shows an example of how equations can be added, in this case added to both the model and the ModelEntity. Boids_V2_Agents_By Solosi.spfx To go beyond that might require adding a custom Step and Element depending on exactly what you want to do. I suggest that rather than asking for features that instead you state a specific problem and ask how it might be modeled. There may be an easy solution.