Jump to content

Search the Community

Showing results for 'change resource'.

  • 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

Calendars

  • Simio Calendar

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. Perhaps its a little late, but attached is a possible solution to your problem. This started out pretty simple. The problem was how to specify which server is serviced by which resource. One way to do that is a table. But since its changing over time I chose to use a time-indexed table, that is a table that knows about time and returns different data at different times. In this case, each row corresponds to 12 hours and each column specifies the resource needed by the respective server. As they say, "the devil is in the detail" and in this case the "devil" is that the specified resource may change between seize and release (e.g., seize at 11:59, release at 12:05). Simio doesn't like that and all the easy options re-evaluate the resource expression on release and so may try to release the wrong resource. One option would have been to create a custom server, but that seems to be overkill. Here is a somewhat simpler approach: 1) Add an entity state named MyResource and assign it at the last possible moment before use. This value will be used only for release. The assigned value is drawn from the table using an expression like Table1.S1Resource.TimeIndexedValue.Object. Note that the .timeindexedvalue indicates to get the value associated with the current time. And the .object at the end is used to tell Simio to return that value as an object not a number. 2) Use Secondary Resources - Other Resource Seizes to seize the name specified in the table using the same expression above Table1.S1Resource.TimeIndexedValue.Object. 3) Use Secondary Resources - Other Resource Releases to release the resource saved in MyResource. TimeBasedWorkerSelection.spfx
  2. there are several easy ways to do this. 1) Subclass the Resource or Worker object with the only change is to add a property or state (ex PTime) to hold the processing time specific to that resource. 2) Put your process times in a table and reference the correct table row for the doctor that is working. The SimBit WorkerPoolWithEfficiency does something somewhat similar.
  3. Hi Nicolas, I would investigate the Server property called Initial Capacity. This sets how many units of capacity are going to be available for the Server. You could also change this during the run by Assigning the Server's CurrentCapacity State Variable. I suggest checking out the SimBit titled "Worker Uses Work Schedule". You can access the SimBits in the Support ribbon in Simio. In this SimBit, I recommend changing the Initial Capacity for the Servers. You could set them to '6' or any value. When you run, you will see that the entities only move into the Process Station when they have successfully Seized the Secondary Resource. So even though there is 6 units available only 1 will be use when the Worker is able to process the entity. You can also experiment with giving the Worker a different Initial Number In System value so there can be more Workers. You will still see the same behavior; the number of entities that move into the Server for processing will be the number of Workers that were available to be seized. Happy Modeling! Liz
  4. Dear all, I have searched for quite a while in the public part of this forum, but I could not find the solution of my problem even though there were some similar issues. I have four servers and a worker who is required as secondary resource for each of them. The worker switches and is doing fine so far. However, for my optimization problem, I need to simulate the amount of workers that are necessary to ensure smooth operations. Therefore, I would like to change the capacity of each server to 2 for 2 workers or to 3 to simulate 3 workers, etc. Sadly, the capacity of the server is not changing in the simulation even though the data are entered. Is there a solution to increase the capacity of servers with a worker as secondary resource so that always several entities are processed when the simulated worker arrives? Thank you very much for your support. Greetings from Hamburg, Armin
  5. You are correct that it will keep the resource seized until after the delay. A work around would be to subclass the server and change the PerformProcessingTask. All you would need to do is move the execute task to after the release, then it should release the resource and then do the execute (Your Add-on process).
  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. Hi Benjamin, The first thing I recommend is to select Server2 and change the Ranking Rule to 'Smallest Value First' and the Ranking Expression to 'ModelEntity.Priority'. Doing that will allow the entities that are currently arriving to Server2 to jump ahead of higher valued entities in the input queue. In order for Server 2 to process, when free, an entity with a priority value of 1 even if has not entered Server 2's input buffer at that point, you will need to use a process. This process only looks at values that have entered the paths to Server2. Create an AddOnProcessTrigger for Entered for the two paths going to Server2. -Insert a Decide Step and have the Decide Type be 'ConditionBased' and the Condition Or Probability be 'ModelEntity.Priority== 1'. -Insert a Reserve Step after the True arrow of the process. Change the Resource Name to 'Server2'. This reserves Server2 for a ModelEntity with a Priority value of 1 if such a ModelEntity has entered either of the two paths leading to Server2. This is a general idea how to begin to solve your problem. If you want to do further reading, check out the "Reserve" page in the Simio Reference Guide. All the best, Caleb
  8. I've followed your suggestion, but still cannot change the timer offset .. I attached model below.. Thank you. Resource (1).spfx
  9. I have taken a glance at your model. At first look your timer element needs to be revised and you should not change the capacity a resource via a user-defined state variable. Use resource.currentcapacity state variable. I have revised your model and it looks like working. Due to having no more time I could not deeply analysed. see attached file. Resource.spfx
  10. Change the question , capacity of a resource is zero until 2018-10-07. Until resource is available, partA is waiting in inputbuffer of server and partB is being processed. I don't know how to process the server , not waiting for secondary resource.. where I'm in stock is. .workstation is only waiting for a secondary resource because the associaed entity is in front of the queue. Does anyone know how to change the order of the entity in this situation?
  11. You can get most of what you need using a built in Dynamic Selection Rule like what is highlighted in the attached figure: If the built-in rules don't provide exactly what you want, you might try a clever Filter expression. If that doesn't work, you might consider creating your own custom dynamic selection rule -- see examples in this folder: C:\Users\Public\Documents\Simio\Examples\UserExtensions\SimioSelectionRules The problem you were having is that Simio doesn't have a specific function that says "allocate this entity". It has a Seize step, to request allocation. It has a process (EvaluatingSeizeRequest) to evaluate if a specific entity can get it. And it has an Allocate step to force a resource to reevaluate pending allocations. To use your present approach you would need to flag the entity that you want to get the resource, change the EvaluatingSeizeRequest to allow selection of only that entity, then call the Allocate step to allow allocation to the remaining entity. But I would try Dynamic allocation first, since that is a built-in way designed to do smart allocation.
  12. Hello! In my model, there are 5 machines running for production. Each machine has opportunity to be failed, the mean time between two failures is exponential(4.5) hours, and the repair time will last triangular(20,25,30) minutes. I use 5 Resource to represent these 5 machines and place them on the canvas because I want to see the state changing of each machine during the model running. Five entities will be created at the time zero simultaneously and the Source will only create 5 entities, those entities arrive at a Server which capacity be set to 5 and the Server’s processing time is exponential(4.5) hours. When one entity go out the Server, it means one machine (Resource) failed. My question is how can I find the corresponding resource related to this entity and change its state to failure and then after certain time duration of repairing to change its state to busy. Say, if entity 3 go out the Server, then I need to set the state of Resource 3 to failure and then change it back to busy. I want to use list or table to achieve my job such that the model can fit for very large amount of machine’s condition, e.g. 1000 machines. Thanks!
  13. Dear Judy, First of all thanks for your reply. Secondly, I attached to you another version of the model after I made some modifications. It can be seen in the model, I named a new server as Section 1 and added into it two tasks (Unloading and Leveling, they were servers in previous model) each has its resource (vehicle). I used only one entity for the two tasks. Section 1 will have total Quantity by 2031.25m3 (Which means the total amount of material, since a truck will unload this material and a grader will level it on the surface). The total length of this server (Section 1) is 200 meters as in real life. For the first resource "Aggregate Tipper Truck", its total number is NumAggTr = 20, its rate per hour is named as QSTTRate (has random value), its total number of trips to finish works is TTS = 113 and quantity in each trip is named as QSTT (has also random value). While for the other resource "Grader", its total number is NumGr = 2, its rate per hour is named as QSTGRate (has random value), its total number of trips to finish works is GTS = 32 and quantity in each trip is named as QSTG (has also random value). Since the previous expressions will increase with acceleration, so I inserted Level With Acceleration for each of them to be used as state variable into Finish (Sink). Finally, PPCQSTT and PPCQSTG are the productivity of each task. I have 5 inquiries and they are: 1- Why the resources did not make the appropriate distance travelling? For example, the number of "Aggregate Tipper Truck" is 20 and total number of trips are 113 so each should make about 6 trips (113/20), since the length of Section 1 is 200 meters, then each should make 1200 meters (200*6). 2- In table which named "Sub-Activity Schedule", if I change the value under "Scheduled Finish Date" column the value under Actual Finish Date will change. Why this occurred and why "Status" never be "Ahead" or "On Time"? 3- How can I calculate the values of PPCQSTT and PPCQSTG Daily or Weekly? 4- If I want to identify constraints into each task, how can I do that? 5- How can I apply the concept of Look-Ahead Planning (Daily or Weekly), to remove the added constraints? Thank you again Best regards, Ahmed Elkherbawy Model 1.spfx
  14. They are similar statistics except that the first statistic looks at the resource state as it changes over time ... successive "busy" states with no state change between them (e.g. there is no idle time) are considered to be a single busy state. For the second statistic each entity is recorded separately. For example, if you have a model that creates exactly 2 entities at time zero and has exactly one minute of processing time, then [Resource] > Resource State > TimeProcessing will have a single observation of 2 minutes and Processing > Holding Time > Time In Station will have two observations of 1 minute each.
  15. Sources don't have associated workschedules for creating entities. There is an Arrival Mode property on the Source that allows entities to be created in different ways. Please see the SimBits (Support panel / Sample SimBit Solutions) named Appointment Arrivals or Source with Rate Table. One option would be to have a Resource with a workschedule that 'controls' the number of entities created in the Source, or the Entities Per Arrival property. To do this, you would create a state variable, let's say HowManyEntities. Within your source, set the Entities Per Arrival to 'HowManyEntities'. Set up the Resource with the workschedule for when you'd like entities to be generated and when not (i.e., so that when capacity is 1, you will change HowManyEntities = 1 and when capacity is 0, you will assign HowManyEntities = 0. Within the Processes window, you can have a process, Process1, that is triggered by 'Resource1.CapacityChanged'. Within that process, have a Decide step that checks the capacity and assigns the correct value for HowManyEntities. The Source then will generate entities using the Interarrival Time specified but based on the workschedule changes of Resource1.
  16. The symbols correspond to the "Resource States" that are assigned (and used for statistics calculation) based on what the Server is actually doing. So, for example, when the entity has 'seized' the Server and is processing for the processing delay (or multiple processing tasks), the Server is in a 'Processing' state or Busy. When the entity leaves the Server, it is no longer processing (unless another entity has entered and in processing delay). Thus, the 9 resource states are also used for statistics calculation for the Server. You can change the symbol colors (or symbol itself) of those states by highlighting the Server, clicking on the Active Symbol button on the Symbols ribbon and selecting the appropriate symbol/value. If you can let us know more about what information you are trying to gather or why you wish to have the Server remain green, we can perhaps point you in the right direction.
  17. Hi farnaz, in fact, you should be checking your buffer at the beginning of the period 10-11. If all machines stop at 10, entities will stop flowing shortly after. Therefore you could check around 10:05 or somewhere around the beginning of the period. To do so, you can use a timer (Definitions>Elements>Timer) and set it to occur every 24h with an offset of 20h05m (10:05PM)). Then, have a process being triggered by that timer. In that process you would check if the input buffer was empty or not (Server.InputBuffer.Contents==0). You can do that using a Decide step. If the condition is false (there is something in the buffer) change the resource state + Capacity of the server so that it processes said entity. For it to work for another hour you could set another timer or use a paralell process with a delay of 55min. At the end of that time you would turn off the server again. Hope this helps (I haven't tested it to be sure it works)
  18. You can do that with the Task Sequences within our Server object. You can also find more examples of using Task Sequences using the SimBits search. First, place a Server and change the Process Type to ‘Task Sequence’ and enter the Processing Tasks repeating property editor. Y our processing steps would be similar to those you specified: Task 1 – specify the Processing Time and under Resource Requirements, indicate that you need WorkerA Task 2- specify the Processing Time and under Resource Requirements, indicate that you need WorkerB Task 3 – specify the Processing Time …. and so on These tasks will all be performed before the entity leaves the Server.
  19. If you are creating a manual schedule you have full control and can change the capacity of any resource at any time. If you are using Simio schedules you can put a property in the value field and change that via the experiment window. I am not sure, but I believe that you can use a Simio schedule and also manually change the capacity value and that manual change will stay until the next automatic change.
  20. When does a resource change capacity when this is requested through a schedule or through an assignment of the CurrentCapacity? When studying the behavior, we deduced the following, but want to check that it is correct (the documentation did not give much information): 1. When the resource is busy (say, fully occupied with a capacity of 5), and the capacity is decreased to 1 or more, all entities that are in process finish their work as scheduled. The effective change apparently takes place after busy entities are finished. (in Arena, this was either the IGNORE or the WAIT behavior). 2. When the resource is busy (say, fully occupied with a capacity of 5), and the capacity is decreased to 0, it immediately stops processing the current entities, which will stay in the Processing queue. When capacity is increased again to 5, the entities are finished. (in Arena, this was the PREEMPT behavior). 3. When the resource is busy (say, fully occupied with a capacity of 5), and the capacity is decreased to 0, it immediately stops processing the current entities. When capacity is increased again to, e.g., 1, all entities seem to finish at the same time. This is strange, because one would expect the entities to be finished one-by-one. This could be considered a bug? Finally, is it possible to implement IGNORE (schedule change starts late if entity busy, but next schedule change remains unchanged), WAIT (schedule change starts late if entity busy, and next schedule change is shifted accordingly) and PREEMPT (schedule change starts immediately) behaviors in Simio? -- Alexander Verbraeck, TU Delft, Netherlands
  21. Dave, thanks for the explanation. This makes it (especially the paradigm) a lot more clear. If some of this can be included in the standard description of a resource and schedules in the manual and in the help files, I believe it will be very beneficial to a lot of people! A SimBit to demonstrate the capacity reducing example you outline below, would also be very helpful for many (I will for sure build that example for my classes -- it will answer a lot of questions I routinely get). Finally, you are absolutely right that being able to extend the standard objects and change their behavior is easy and helps to address many issues. I can create a 'preemptive server' that way in a matter of minutes. Thanks again! Alexander.
  22. First of all, I won’t argue with you at all – I would also like to see Simio have more intuitive behavior in our Standard Library objects. But perhaps my explanation below will make it a little bit more intuitive. But the good news is that, unlike other products that limit the behavior to one of a few predefined choices: 1) In Simio your choices are unlimited - it is not too difficult to make it behave exactly as you want. The OnCapacityChanged add-on process (or related processes like On Shift and Off Shift) can use the Interrupt, Suspend, and Resume Steps as illustrated in several SimBits. 2) If you want some behavior to be your default behavior, just create a custom object with that behavior. If you think about the built-in behavior as follows it might help… PARADIGM: A resource of capacity > 1 still represents a single resource, but just has the ability to process multiple concurrent entities. But it still only has a single state (Idle, Busy, Failed, …), e.g. if it is failed, the entire resource is failed (all capacity units), and if it is off-shift (e.g. capacity=0) all units are off-shift. REDUCING CAPACITY: When capacity available is reduced below the current number of busy units, there are many possible valid behaviors depending on your system. The default behavior of our standard library is simply to finish working on the current entity, and then take the unit off-line. But you can use the tools mentioned above to change that default. For example, you might implement some behavior that says “if I am within 10 minutes of completion, go ahead and complete it, otherwise record its remaining time, add 5 minutes of restart time, then put it at the beginning of the waiting entities”. OFF-SHIFT: When a resource is taken off-shift (capacity=0) all units are off-shift. Current Standard Library behavior causes all processes to be suspended (Suspend/Resume Steps) while it is off-shift. This essentially means that everything is “frozen” in place. The entities are not removed from the resource, but rather just suspended so no progress is made during the off-shift period. When the off-shift period is complete (e.g. capacity > 0) then all the entities resume exactly where they left off. Unfortunately that last phrase is what causes the unexpected behavior when you suspend at one capacity and then resume at another lower capacity. You are essentially combining the two above paragraphs. You suspend all activity while off-shift, then after you resume, you will behave as though you had just reduced the units in service, which under the default behavior says keep working on the entities in process until they are completed. In your case, it sounds like you would want to add content to the On Shift process so that if capacity is set to less than the number busy, that you would want to Interrupt the remaining entities and send them back to the entry queue. And then perhaps build that behavior into a custom Server object and use that object routinely.
  23. 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.
  24. Hi all. I have not found if we can force a server to shift "off shift" with processes. Actually, depending on some events or on some other processes, I would want to "pause" some servers, even if they could continue to process. For instance, if a server, resource or whatever fails somewhere in the model, I want to shift some of the other server/workstations "off shift" (or "idle", but there is not this state for servers). I suppose so that it is not possible to impose a change of state of servers, workstations etc., but if I am wrong, how could I do? Thank you! Guillaume.
  25. 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.
×
×
  • Create New...