IEE 475: Arena Help - Match Example: Customers Waiting on Orders to Complete

Поділитися
Вставка
  • Опубліковано 19 вер 2024
  • This video introduces how to use the "Separate" and "Match" modules in Arena to setup a simple match-and-batch simulation model for customers who place orders and have to then wait on their orders to complete (or, alternatively, passengers who are separated from their baggage in security and then have to wait on them before continuing into the airport). Some comments about adding pull logic, which I cover in a different video, are also discussed.
    This video was recorded by Theodore Pavlic as part of IEE 475 (Simulating Stochastic Systems) at Arizona State University.

КОМЕНТАРІ • 30

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

    Your videos are absolutely amazing, thank you for those. Kind regards from a KU Leuven student from Belgium!

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

      Thanks for the kind feedback!

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

    Thank you soo much, such a helpful video about Arena. Your explanation is clear and easy to follow. Best regards sir!

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

      Thanks so much for your kind words!

  • @mingchuanwang5912
    @mingchuanwang5912 7 місяців тому

    Hello,Thank you for your explanation and I have a problem-could you please show me how to set 2 Processes are series connections and circulate for 10 times and then comes to Dispose 1? Best wishes!

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

    How would you set up a shared queue? For example, if there were 3 drive through windows and there was a single FIFO queue that supplied those 3 windows?

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

      If you have a single queue but three servers pulling from that queue, then you can just change the resource capacity for the resource in the "Take Order" block in this example from 1 to 3. In other words, don't think of it as three servers sharing a queue. Instead, think of it as a single server that has the capacity to process three orders at once.
      If you go to the "Resource" data module (in the "Basic Process" panel in older versions of Arena or in the "Data Definition" panel in newer versions of Arena), then you should be able to adjust (down in the spreadsheet at the bottom of the screen) the capacity of the server resource to increase it from 1 to 3.
      If you did that in this particular model, the cars leaving the three parallel windows would be assumed to merge back into a single for the pick-up window ("Match Customer with Order" block). In other words, the assumption is that all of the orders ultimately go to the same place inside the restaurant. Once you start getting so many cars interacting in a simulate drive through, it probably becomes necessary to implement pull-system logic where vehicles cannot advance beyond a server unless there is space for them to advance in the queue that follows that server. I discuss how to do this with signals and holds in another video:
      ua-cam.com/video/Cjc4JK_wmGw/v-deo.html
      As I mention in the comments for that video, an alternative way to do pull-system logic (without signals and holds) can be found in the "Control Logic\Control Logic Pull System" example that you can find under "File->Browse SMARTS..." in Arena.
      You could instead think of each window as having its own parallel pipeline for processing orders -- where someone who ordered from one window must then pick up from another window specific to that pipeline. This would require duplicating the model in the video above and then splitting orders, which adds some complication in the implementation. Or you could view the modeling exercise as modeling what happens AFTER the split. In that case, you would have to design an input model representing the distribution of interarrival times after the split, which adds some complication (as it may not be a simple exponential due to the queue), but nothing special is required downstream.

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

      @UCq4IZK1RJZ1ghmlBCHOgrNw If you are opening a model created in an older version of Arena, you will need to use the data modules associated with the older panels. So, instead of looking for the "Resource" data module under "Data Definition", you should look for the "Resource" data module in the "Basic Process" panel. If you do not have the "Basic Process" panel, you can right click on any whitespace in the panels on the left and go to "Template Panel" and then select "Attach." That will bring up a file dialog where you can find the "BasicProcess.tpo" file in the "OldArenaTemplates" folder. Note that if you are opening a file created in an older version of Arena, it SHOULD have attached this panel for you when you opened the file. So that's why I would suggest double-checking that you do not have a "Basic Process" panel on the left in ADDITION to your "Data Definition" panel.
      "Error: Module name must be unique" occurs when you have two elements with the same name. These can be tricky to find. There is a button at the bottom of the error that will bring you to the source of the error, which can sometimes help you determine where best to look next. Looking through all of the data modules (in an old model, this might mean looking through the old template panels too -- like "Basic Process") is important along with double checking that none of your blocks on the diagram have the same name.

  • @ZoomSEdit
    @ZoomSEdit Рік тому

    Hi sir I am currently dealing with an Arena Simulation Problem right now and I need really help as soon as possible. It is not that too much it is a really basic model but I couldn’t find out what I should do. So can I ask you question about that privatly? Thanks

    • @TedPavlic
      @TedPavlic  Рік тому +1

      I'm sorry, but I'm stretched a little too thin to be able to provide free consulting work on Arena. You might consider posting to their support forums. I just provide videos here that I've made to help students in the courses I teach; I share them here because it is little cost for me to do so, and there is some potential that they can help others.

    • @ZoomSEdit
      @ZoomSEdit Рік тому

      I appreciate what you're doing and I respect your decision. So may I ask my little question here? I hope you will allow me to ask my question briefly and you will answer it. Thank you very much in advance. I'm trying to make a coffee simulation right now and I assigned the arrival times of people to the input analyzer, then I did the same as the number of people. Then I assigned them to the arena as expressions. I set it to be morning noon and evening. And I assigned the weekend as a weekday. I wrote a Big M number for the arrival time so that the process ends, and I wrote 0 in the last row of the number of people so that the person does not come. However, the number of people is not the same as I mentioned and sometimes 1 sometimes 2 people comes and it may lasts up to 7. I assigned them as probabilistic DISC just like your order numbers in this video. For example, 1 person came with a probability of 0.31, while 2 people came with a probability of 0.30. I wrote these down and multiplied the duration of each of my processes as you did in the video. Based on what I said, is this correct? Thank you. Thank you very much in advance, I hope you reply.

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

    hi Sir i am facing problem while creating a model in which using arrival schedule just for the purpose of manage rushing hours. Actuallly it runs smoothly for small values but couldn't succeeded with large values

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

      I don't know what you mean about not running smoothly. One thing to keep in mind is that large arrival rates will potentially lead to significant queueing (and possibly errors about having too many entities if you are using a student version) if you have pushed your system over its capacity. That's expected as you servers cannot keep up. So that may be what you mean by things not moving smoothly. In that case, the only thing you can do is evaluate whether your arrival rates and service times make sense. If they do, then you simulation may indicate a major problem in the hypothetical real-world system.

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

      @@TedPavlic sir i mean it displaying error with value greater than 350 entities so what should i do in this regard . Is it possible that i could present or share model with you . So then you can extract better possible ways. And thanx for your precious time

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

      @@Fahad-oy2cu This is the case that I mentioned in my reply. If your arrival rates are high relative to the service times in your model, then the number of entities queueing in your model will climb and be more likely to hit the 150 entity limit in the student version of Arena. If you do not have access to the full version of Arena, then you will have to limit your encounter rate, reduce your service times, or reduce the size of your system (e.g., reduce encounter rate while also changing the number of servers, as if you are simulating only a small piece of the system as opposed to the real system).
      You have to ask yourself if it seems like 150 entities might coexist simultaneously in the real system. If not, then that indicates that there is something wrong with your model (like having too few or too slow servers). If it is possible that so many entities might need to co-exist, then a 1:1 model of your system will not be able to be built in your version of Arena. In that case, you will have to decide if you can simulate a smaller portion of your model or scale the rates and service times to values that can be simulated but still give you some insights (e.g., only focus on times of day when the arrival rate is relatively low and make it clear in your conclusions that they are limited to those times). You can also use the times of day when the entity count explodes as an indication that there is s problem in the system layout (i.e., it's generating too much queueing).
      Finally, there are ways to use permanent batches in Arena to reduce the number of entities used, but that only makes sense if entities in the real system can be modeled as moving through the system in a batch, and that's a very special case that is unlikely to be true.
      I do not have any models that I can give you to alleviate this issue. It is more fundamental, and you will need to think through how to deal with it. I also cannot provide free Arena technical support. These videos were recorded for use of my students and posted here as a backup and to help others who might be looking for some extra help or information. I do not have the bandwidth to provide detailed help to everyone who wants it. It sounds like you are enrolled in a class on DES simulation. I recommend reaching out to your instructor if you need detailed help on working with your specific model.

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

      @@TedPavlic okay Thank you Sir

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

      @@TedPavlic sir problem sought out

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

    I used this exact model for my course, hope my professor will like it hahaha. I just have a question that you can anwser maybe. When im generating reports, in the report it says that i have number of customers going in is 450, but the number of orders is 150. Can you maybe tell me why is that?

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

      You should watch the simulation carefully as it runs. Each block will tell you either the WIP for that block or the number of entities that have passed through that block. If the number of customers doesn't match the number of orders processed, it may be because your orders are taking so much time that they are stuck in the queue waiting to be processed (and their generating customers will be waiting at the match queue for the orders to join them again). So you should see a high WIP in the processing blocks for the orders that makes up the difference.
      On the other hand, it could also be because orders are stuck at the match block waiting for their generating customer. This could happen if you are not matching on the right attribute and customers are somehow leaking through. You should confirm that you have configured your match block correctly and that the customers are being properly routed there.
      You can slow down your simulation to watch that is happening in more detail. You can also pause the simulation and inspect the attributes of each entity. Try these things to confirm the model logic is as you desire.

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

      @@TedPavlic I tried everything. In the report it says, numbers in 150, numbers out 150, but in detailed reports it says numbers in customer 450, and numbers in orders 150. Its interesting thats always 3x times customers than orders. Im still trying to figure out how could i fix this.

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

      The Separate module used to create the orders (Create Order) can be configured to create multiple orders per customer (instead of a single order). You might try confirming in the settings of that module ("Number of Duplicates" inside the separate module) that you are creating only a single order per customer.

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

      @@TedPavlic If you mean the seperate module, I made it duplicate original, and just having 1 duplicate. In the taking order module i dont know how to set it just to create one order. Im sorry for spamming you, i just want to figure out how this works.

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

      @@nemanjavajagic8703 You may also want to check your "Match" module to make sure you have "Batch Action after Matching" set to "Permanent Batch" so that the two different types of entities (customer and order) are obliterated and turned back into a single type of entity again. If I were you, I would also go back to the original suggestion I made and watch the simulation run (as opposed to focusing on the report). You can use the simulation speed slider at the top to slow it down. While the simulation is running, modules like the Separate module will tell you how many entities have left each output port. Modules like Process will tell you how many entities are work in progress. If everything is working correctly, then you should see the same number of entities leaving both outputs of the Separate block (and then coming together at the merge block, where they will join together creating a single entity). So the total number going out of the simulation should match the number coming in, and the numbers in between should make sense in terms of the processes. Without seeing your model myself, I cannot offer more help (and I don't have the bandwidth to troubleshoot your model more than these comments).

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

    What would be the raw data that would go in the input model

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

      That depends on what you are modeling. If you are modeling interarrival times for customers arriving to a business, then you would have to collect a list of times between every customer who arrives at the business. If you assume they are exponentially distributed, then you can simply record a count of arrivals per time interval. In general, you usually collect the same kind of data that is going to be randomly generated by your simulation model.

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

      @@TedPavlic for example, If you were trying to calculate the average wait time for a cup of coffee would the input model include the number of customers getting coffee, and the wait time for each customer? Then take the average of that?

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

      @@liamferreira6707 You might build an input model for the time it takes to MAKE a coffee ONCE THE SERVICE HAS STARTED. So you would record a long sequence of time durations -- one for each coffee -- from the time the service starts (i.e., when a barista picks up the cup and starts making it) until the time the coffee is prepared and ready to be picked up. From this sequence of times, you would fit a distribution -- such as a Weibull distribution -- so that your simulator could produce a similar sequence of durations.
      To validate your model, you might also record the average time that a customer waits (including the extra delay from the orders queueing up in front of a busy barista). You could then compare the average waiting time from a simulation to the average waiting time from the real system -- using either 95% confidence intervals or a proper 2-sample t-test to evaluate whether there is a significant difference between the average wait in the simulated system and the real system. However, the WAIT time is NOT an INPUT. The service time, which you would fit with a DISTRIBUTION and NOT include the time in the queue, is an input.

  • @fatirunaanfasyajalil8070
    @fatirunaanfasyajalil8070 Рік тому

    hi, can you help me what module should i use to assmbly two parts into 1 parts ? thank you