gourmet Posted May 16, 2018 Share Posted May 16, 2018 Hello all and thanks for letting me be a part of Simio Insiders I am closing in on having done my first source, server, sink simulation. It is done as a part of a University study and is due next week. Feel free to download my attempt and have a look at it. The process I want to simulate is as follows: 1. Chef recieves an order of 1-6 beef patties 2. The chef puts the patties in a grill, that has capacity of 12 patties, and a base cooking time/process time of 1 minute total (that increases with order size) 2a. If more orders come in, while the grill is preparing an existing order, they have to be put in queue, as the grill should not be interrupted. When the grill/server is free again, it will take all - or up to 12 - from the queue, depending on how many orders are in queue 3. The patties go to the sink I am using a Time Varying Arrival Rate table from real life data, on the course of 2.5 hours. The trouble I am having is as follows, and please, feel free to only answer some of them, if you don't have answers for all: _____________________________ a) Order size We want to have orders vary from 1 to 6 patties, per order, in a way that resembles this distribution: 1 (min order size) patty ; was ordered 2 times 2 patties ; was ordered 18 times 3 patties ; 9 ... 4 ; 7 5 ; 3 6 (max order size) ; 1 I have not been able to imitate this behavior. Right now, I use Entities per Arrival to be Random.Possion(2), as this looks a bit like this distribution above, but the flaw with Poisson is (I believe), is that an order-size of 0 patties is a possibility, which doesn't make sense. I have also been playing around with a lookup table, without a real clue on if that's the right thing to do. What should I do to resemble this? _____________________________ b) Server (grill) behavior The problem right now is, that the grill (server) can keep taking in patties, even if it's already processing. That doesn't make sense, if you think about it, since you can't put patties into a closed grill. I want it to start preparing an order, as soon as it gets it, and just let the queue of patties build up until the grill is free again. Then, take up to 12 patties into the grill. _____________________________ c) Process times For the grill, I want the process times to follow the amount of patties in the grill. The grill takes 60 seconds to prepare a patty, and we assume each patty takes 2 seconds to load. Therefore, we choose to simplify that: 1 patty takes 62 seconds to make 2 patties take 64 seconds 3 ; 66 sec 4 ; 68 sec 5 ; 70 sec 6 ; 72 sec 7 ; 74 sec 8 ; 76 sec 9 ; 78 sec 10 ; 80 sec 11 ; 82 sec 12 (max grill capacity) patties ; 84 sec Which is basically y = 2x + 60 In the simulation I uploaded, each patty, no matter the order size, just takes 60 seconds, which is incorrect. How do I get the grill to behave like this? _____________________________ d) Batching After getting the server behavior to work, I want to work with the utilization of the grill. My idea is, that if the server (grill) is told NOT to start preparing patties right at the moment, it receives the order, e.g. if the quantity is small, but instead waits a certain amount of seconds, to see if more orders should come in, maybe the total wait can become less. There shouldn't grow any large queues with the current arrival rates, but if we double it, it might become relevant, so customers shouldn't wait for too long. Another option would be, that it waits till a certain amount of patties are in queue, such as a minimum of 6. _____________________________ Thanks again, and I sure hope you will take a look at this! You are more than welcome to edit the file, but it is also fine, if you just type in here. Best regards, Johan Grill.spfx Link to comment Share on other sites More sharing options...
dsturrock Posted May 19, 2018 Share Posted May 19, 2018 Since you are learning, I'll give you a nudge in the right direction, rather than providing the answer. We want to have orders vary from 1 to 6 patties, per order, in a way that resembles this distribution: Investigate Random.Discrete distribution b) Server (grill) behaviorThe problem right now is, that the grill (server) can keep taking in patties, even if it's already processing. That doesn't make sense, if you think about it, since you can't put patties into a closed grill. I want it to start preparing an order, as soon as it gets it, and just let the queue of patties build up until the grill is free again. Then, take up to 12 patties into the grill. _____________________________ c) Process times For the grill, I want the process times to follow the amount of patties in the grill. Use a combiner to create a batch of burgers to be cooked together. The batch size must be specified in the parent. The batch of entities moves to the grill together. The cooking time is a function of the parent entity's batch size. Link to comment Share on other sites More sharing options...
gourmet Posted May 20, 2018 Author Share Posted May 20, 2018 It's all working now, thank you! Link to comment Share on other sites More sharing options...
Recommended Posts