IEE 475: Arena Example - Adding Schedules of Arrival Rates and Capacities

Поділитися
Вставка
  • Опубліковано 19 вер 2024
  • This video adds to a model constructed in a previous tutorial video by adding arrival-rate and capacity schedules that can vary throughout a simulation replication. It shows how to specify these schedules within Arena as well as read them from an external spreadsheet.
    This video was recorded by Theodore P. Pavlic as part of IEE 475 (Simulating Stochastic Systems) at Arizona State University.

КОМЕНТАРІ • 37

  • @crazymoreoften
    @crazymoreoften 8 місяців тому

    Thank you for the great video, sir. I'm facing an issue where the schedule in my arena doesn't include the file name option. With around 109 values in my Excel, how can I enable this feature?

    • @TedPavlic
      @TedPavlic  8 місяців тому +1

      Are you sure you're creating a Schedule within the "Schedule" data module in the "Data Definition" panel? At least when I create a blank model in Arena 16.2 and then go to "Data Definition" on the left and then "Schedule" and then double-click in the spreadsheet view to create a new Schedule (and then right-click on it to "Edit via Dialog"), I get the "File Name" for all three schedule types. Can you try this with a blank model to see if "File Name" is an option for you within the "Schedule" data module? If you have a minimal working example where you are not getting the "File Name", then perhaps you should post something to the Arena forums. I do not work for Arena nor mean to provide free support for their program.
      Note that I haven't updated my own Arena version in a long time, and so perhaps they have made some updates since Arena 16.2. It would not be out of the ordinary for Rockwell Automation to just stop supporting a key feature, like the "File Name" import abilities. Or they might have changed how files are imported. For example, they might now require you to setup the files in a separate data module first. I sort of doubt that they've made such a radical change, but (again) it wouldn't surprise me if they decided to drop support for file imports because they didn't have the budget to continue maintaining the feature amidst updates to other libraries that the program depends on. That said, it is my guess that "File Name" still exists but perhaps you might be looking in the wrong place.(?) Again, try the specific steps above with a totally empty model to confirm.

    • @crazymoreoften
      @crazymoreoften 8 місяців тому

      @@TedPavlic It seems like I may have found the issue, sir. My Arena version is 14, which is why I am unable to see the "File Name" option in the data definition of scheduling.

    • @TedPavlic
      @TedPavlic  8 місяців тому +1

      @@crazymoreoften I see! I don't think I have ever used an Arena version before v15. I would definitely recommend an update if you can.

  • @sarahalsharif5884
    @sarahalsharif5884 4 роки тому +1

    Thank you so much .... Can you tell me what's the difference between schedule rules ? If I change it does it affect the run output?

    • @TedPavlic
      @TedPavlic  4 роки тому +1

      Good question. The Schedule Rules affect what happens when capacity (number of servers) is scheduled to decrease at a time when service is still being provided. For example, a cashier might be scheduled to take a break at 1pm, but the server is still checking out a customer at that time. Or a document checker at the airport is scheduled to take a break at 1pm, but they are still checking a document at that instant. To Ignore the schedule change means to continue the work and take the break when it finishes and then take the next capacity change at the originally scheduled time. To Wait means to delay the next interval until after the work ends, thereby shifting breaks by that amount of extra time. To Preempt means to stop the work prematurely in order to go on break exactly at 1pm. The extra work will have to be completed by another server when available.
      The differences between these three in performance will be most clear when you are running at high utilization. With a lot of idle time, it won't make much of a difference in how these handoffs are handled at capacity decreases.

    • @sarahalsharif5884
      @sarahalsharif5884 4 роки тому

      @@TedPavlic thank you so much ❤️❤️❤️

  • @annek5063
    @annek5063 4 роки тому +1

    Thank you for the great video! But what about resource constraints, like a warehouse that can hold up 70 entities, but of course also less. I always get an error, when assigning a maximum of WIP entities as entities to seize in the process module.

    • @TedPavlic
      @TedPavlic  4 роки тому +1

      There are a number of slightly more advanced blocks in Arena, like the "Scan for Condition" and "Wait for Signal" (coupled with the "Signal" module), that allow for contingent behavior based on some state of the system. There is also an "Infinite Hold" module (that you can couple with "Search" and "Remove"). These modules allow you to achieve some flow control to prevent your system from going over its capacity constraints. You have to define what happens to entities that arrive at a full warehouse (do you just get rid of them? Do they queue up? etc.), but you can at least monitor the state of the warehouse and make a decision based on that.
      I hope that helps!

  • @ashoksuwalka73
    @ashoksuwalka73 4 роки тому +1

    Nice video, Hello Sir, Suppose, instead of Passenger arrival, we have situation where "product arrive to the production facility according to a poison process with a mean rate of 1 per hour...now arrival rate increase in percentage ( for example 20%, 30% 50%,.....) instead of numbers...how to show it & where to show? please help

    • @TedPavlic
      @TedPavlic  4 роки тому

      The simplest way to do scheduling in Arena is to convert the relative increases (in %'s) to absolute increases and encode those into the schedule. Alternatively, you can certainly implement your own non-stationary Poisson process (NSPP) model in Arena. Exactly how to do this is outside of the scope of what can be explained in a comment, but if you look up non-stationary Poisson processes (NSPP's) (or inhomogeneous Poisson processes), you can find a number of different approaches to simulating them and then choose one of those approaches to implement in Arena.

  • @erdincbilgin8767
    @erdincbilgin8767 4 роки тому +1

    Hello Mr Pavlic,
    Can we expand this into a weekly schedule? Because in my assignment, arrival rates are changing inside the day and day by day in a week. If so, how can we do that?

    • @TedPavlic
      @TedPavlic  4 роки тому

      Yes, you can expand the arrival rate list to extend across multiple days (and then repeat). You just have to specify a much longer list within the schedule.
      Alternatively, you can add logical constructs within the model that use the various time functions in Arena (look up TNOW and the various functions that can extract the day off week and hour from TNOW) to decide on the current arrival rate. This is more advanced and requires a more sophisticated way of sampling interarrival times to properly handle what happens across changes in arrival rate. I recommend using the schedule with a long list of rates, as described in the video, but I just mention that other methods are possible if your weekly arrival rates have a pattern that is easier to capture in model logic.

  • @marceloportela3889
    @marceloportela3889 3 роки тому +1

    Hi. Thanks for sharing this video. Great!
    I have a question about ARENA: is it possible to use different times in the same resource? For example, I have 3 types of trucks arriving at the same time and they have to be weighed on the same scale. Truck A is weighed in 03 minutes, truck B is weighed in 05 minutes and truck C is weighed in 7 minutes. After weighing, they are released and the process is closed. So, how to build this model in ARENA? Could you help me? Thank you in advance.

    • @TedPavlic
      @TedPavlic  3 роки тому +1

      There are a number of different ways to accomplish this. One simple way is to make the weighing time an attribute of the trucks (setup by an Assign block, for example). Then, inside the Process block, you can set the delay length to depend upon (or be exactly equal to) an attribute of the entity being processed. So earlier in your model, you can assign some weighing times to some trucks and other weighing times to other trucks (you can even draw these weighing durations from a random distribution at this point and store the randomized realizations within the attribute of each truck). Then in your process, set the delay to "Expression" and put the attribute name (e.g., "WeighingTime") into the expression field. It will use whatever time comes along with each truck.
      There are also ways to load conditionals into the process expression. You could alternatively use a Decide block that routes different trucks to different processes -- all of which use the same resource. Multiple processes (e.g., with different service duration distributions) that all use the same resource will wait on each other.
      But it sounds like there are fundamental differences between the trucks (e.g., different types of trucks), and so it is probably easiest to assign (again, using an "Assign" block, perhaps) their weighing time at the instant you create the different truck types. Then just use that weighing time in the process expression for the delay when you hit the weighing process.
      I hope that helps!

    • @marceloportela3889
      @marceloportela3889 3 роки тому

      @@TedPavlic Thanks for answering. I followed all the steps and the model runs, but the "process block" does not register the statistics. Do you have email? I can send you my model to help me check it out.

    • @TedPavlic
      @TedPavlic  3 роки тому +1

      @@marceloportela3889 I don't know what you mean about the process block not registering statistics. Unfortunately, I don't quite have the bandwidth to offer much free Arena consulting services (these videos are produced as part of a course I teach and posted here just to maximize their use). You can find my email online (I'm faculty at Arizona State University), but I cannot promise that I will have time to debug code that you send me. I do have another Arena video on my UA-cam for this class on the Match block in Arena -- in that example, I show how to setup service times as attributes.

  • @kobidelahay2893
    @kobidelahay2893 3 роки тому

    Hello, thanks for you video!! At 13:54 you click on the File Name in the schedule. I followed all steps in your video but in my ARENA there is no space called 'File name'. How can I make sure to get this?

  • @majdkhatib9087
    @majdkhatib9087 4 роки тому +1

    Thank you for sharing this. I'm trying to apply this to my file, at 13:50 in your video, you edit schedule and choose from file name, but I can't find "file name" related to arrival schedule of my project. Could you help of what should I do? Or why do I have this problem?

    • @TedPavlic
      @TedPavlic  4 роки тому

      Hello. Have you gone through the steps starting around 11:30 in the video? They describe how to create a file handle in Arena. Once you create that file handle, it should show up in the list you see at 13:50.

    • @majdkhatib9087
      @majdkhatib9087 4 роки тому

      @@TedPavlic yes I did step by step, but it didn't work with me 😔

    • @majdkhatib9087
      @majdkhatib9087 4 роки тому

      @@TedPavlic I may have to tell you that when I D.click on Recordsets/ file, I got a message that "Couldn't open connection to data source using operating system file name or connection string.
      ADO error description: provider cannot be found. It may not be properly installed. "
      Do you have any idea what should I do?
      Thanks in advance

    • @TedPavlic
      @TedPavlic  4 роки тому +1

      @@majdkhatib9087 You may want to ensure that you have the proper .NET frameworks installed for Arena. If you try reinstalling Arena, possibly after uninstalling Arena, it should check to see if the right frameworks are installed and install them if not. If you are asking Arena to open Excel files (possibly even CSV), you may need to have Microsoft Excel installed as Arena may require libraries from Microsoft Office to open certain files. Without doing extra work myself to try re-create your error, those two things would be by best advice for how you might try moving forward. You could also search for that error to see if there are documented solutions. Good luck!

    • @majdkhatib5305
      @majdkhatib5305 4 роки тому +1

      @@TedPavlic I'll try what you said. Thank you very much!

  • @tanmoybarai6089
    @tanmoybarai6089 2 роки тому

    Hi, suppose I have a clinic model where patients take an appointment and they arrive at the clinic for a 15 min slot with the doctor. There are also walk in patients without appointment. Appointment patients are 1/3rd of total arrival patients. How to model this?

    • @TedPavlic
      @TedPavlic  2 роки тому +1

      There are a number of ways you could model this. The simplest approach would be to have a single arrival process generate "patients" which then have a 33% chance of being an appointment patient (which can be implemented with a decide block where 33% of entities passing through it take on branch and the rest take the other). The 33% patients go through an Assign block that assigns a "Priority" attribute (e.g., sets it equal to 1) whereas all other patients have their Priority attribute set to 0 (the default anyway). This all could actually be done in an Assign block with a clever expression. Once the patients have their Priority attribute, you can create a process block representing the doctor's office. You can use the "Queue" data module to change the queue type to pick the patient in the queue with the highest priority -- thus causing those with an appointment to be let in immediately when the doctor's available.
      Of course, that simple model leaves a lot out. Still, it comes close to what you're looking for. Good luck!

    • @tanmoybarai6089
      @tanmoybarai6089 2 роки тому

      @@TedPavlic Thank you! In the question, there are 2 doctors dedicated to Walk-in patients and 1 doctor dedicated to appointment patients. So, appointment-based patients are going to that single doctor only. What I cannot figure out is how to book the time slot. Every appointment is for 15min time slot. There are two processes common for walk-in and appointment-based patients, reception and nurse triage. So I put a decide module after these common processes to divide the patients into two branches. For walk-in patients we have priority attribute based on pain level, but for appointment-based patients, appointments are respected and are served in the appointment order. But I cannot figure out how to include priority for the appointment-based patients for the doctor office.

  • @Fahad-oy2cu
    @Fahad-oy2cu 2 роки тому

    Sir , i want to discuss one thing that i have made a model from quarry to crusher fo cement plant, now willing to add some automations regarding production increase or decrease and subsequently add or removal of trucks according to the situation. In this regard i want some suggestions from you

    • @TedPavlic
      @TedPavlic  2 роки тому +1

      I don't really have the bandwidth to provide a lot of free Arena consulting. If you have a specific question about a particular issue you're having, I might be able to help. Keep in mind that the videos that I post are primarily meant to help my students, but I make them public in case they can be helpful to others too.

    • @Fahad-oy2cu
      @Fahad-oy2cu 2 роки тому

      @@TedPavlic ok Sir , i am willing to introduce automations in a sense of increment or decline in number of trucks according to the requirements. If you allow then I'll be share my model as well, so this might be better to develop some understanding in this regard.

  • @Fahad-oy2cu
    @Fahad-oy2cu 2 роки тому

    hi Sir, in my module using 8 trucks for three different loading sites, am using constant sequence in arrival module, how can i arrange or specify same trucks for one side i mean (1,2,3) for ist loading side and other as well throughout the shift time, or any other way to make it more convenient or close to reality.

  • @yassineerraoui6448
    @yassineerraoui6448 4 роки тому

    Thank you Mr Pavlic, is there any way to contact you ? I have some questions please about arena

    • @TedPavlic
      @TedPavlic  4 роки тому

      You can find my contact information online, but I unfortunately don't have much time for Arena questions outside of the students that are in my formal course at ASU. There are a lot of other good Arena resources online though.

    • @yassineerraoui6448
      @yassineerraoui6448 4 роки тому

      @@TedPavlic Thank you for your response, I sent you a message in ted@tedpavlic.com
      if time allows it for you.
      I showed a minor issue that blocks me in a simulation.
      My regards

  • @TopGunMan
    @TopGunMan 3 роки тому

    I have a problem where the Arrivals are Nonstationary Exponentially Distributed throughout a day, but scaled differently each business day (business being modeled is open 5PM-10PM, customer arrival needs to be modeled with nonstationary exp dist). For instance, Arrival Schedule on Day 1 might have a scalefactor of 1.0 (normal day), Arrival Schedule on Day 2 has scale 1.5 (busy day), Arrival Schedule on Day 3 has scale 0.5 (slow day). Ideally, I want the scale factor for a given day to be drawn from a uniform distribution. How can this be modeled in Arena? Can this be modeled in Arena?

    • @TedPavlic
      @TedPavlic  3 роки тому +1

      Hi Joey. There are a number of ways you should be able to do this in Arena (although I myself have not had to implement this particular kind of NSPP in Arena). When you're editing the schedule entries, you might notice that when you right click on each "Duration", Arena gives you the option to "Build Expression." You should be able to specify a random distribution based on the current time/day. In other words, you can draw your scale factor randomly within the schedule. When it draws a new duration, it will draw that scale factor. So each time a new duration is drawn, the new scale factor will be used. That should accomplish what you want.
      The trick will be to develop a formula (or use conditionals) that converts your current day into the appropriate scale factor. For example, you can convert "TNOW" to a day (as in CalDayOfWeek(TNOW)) and then use a Iverson brackets to convert that DOW to a scale factor, as in:
      ( CalDayOfWeek(TNOW)==1 )*1.5 + ( CalDay... )
      Where that would use a scale factor of "1.5" when the DOW is 1 and would use a different scale factor for different DOW's. A simple formula would be possible too.
      Another option is to read the schedule in from a file. You could have long lists of arrival rates (that were already drawn according to your desired scale-factor distributions) that were generated in another program like MATLAB and then just have Arena read through the long list. You could have a bunch of different files and have Arena use each one to generate an ensemble that you could take statistics over.
      And you can manually implement NSPP's yourself in Arena too using the logic blocks.
      Does that help?

    • @TopGunMan
      @TopGunMan 3 роки тому

      @@TedPavlic Hi Ted. That helps a lot, and confirms what I have learned since asking you. I could manually choose scale factors as you suggested based on discretizing time using conditional statements in an expression for each schedule duration cell, but ideally, I would like one simulation replication to be one business day, with a scale factor randomly drawn for each simulation replication.
      I have accomplished what I desired by creating a fake entity at T=0 that triggers assigning a global rate-scaling variable a random number (because variables in Arena cannot be initialized with expressions, only numbers). In turn, my Create module has an EXPO-type interarrival time that is scaled by this variable. To implement non-stationarity, I have a Decide module that throws away some fraction of created entities randomly according to a schedule; I think this is mathematically equivalent to a nonstationary exponential arrival process because Poisson Point Processes (with exponential interarrival times) are memoryless processes - I'm not sure on the math, but a python script I wrote empirically proved equivalence.
      What was frustrating is that, with Arena, variables cannot be initialized with expressions (workaround is to use fake entities at T=0). I tried every Schedule-type approach I could think of for the Create module arrival rate, none of which worked for this particular use-case because of the way Schedules are determined before model runtime; Schedule-type Create modules implement nonstationary exponential interarrival times with a mean rate in a given cell of the Schedule, but there is no way to scale *groups* of cells by a single random number (only individual cells can be scaled by individual, different, random numbers).
      I am not familiar with the logic Blocks - perhaps this is the "real way" to do this, using the lower-level features of Arena (closer to the underlying SIMAN language)? I really should learn how to use Blocks.