You are on page 1of 2

General Description This model represents a Pizza by the slice restaurant. The general process flow is as follows: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.

Group of customers enter the restaurant Individual customer places an order Customer pays for order Employee places slices in the oven to reheat Customer waits for Pizza to come out of the oven Once reheating is complete the customer waits for the rest of the group (or joins waiting group) Group sits down at table (or waits for an available table) Group eats pizza Throws away trash at the trash can Leave restaurant

*When the Trash Cans have 15 or more Dirty Trays, an employee will collect them and bring them back to the counter. Detailed Description Creating Unique Individuals in Groups Groups enter the restaurant, each group consists of 1 to 4 customers, and each customer will order 1 to 3 pieces of pizza. Upon entering the restaurant (Before Exiting the Source) we assign CustomerEntity.GroupSize, CustomerEntity.GroupNumber, CustomerEntity.EatingTime, and CustomerEntity.Picture. Then, in the Output@Source Node we create a process that creates the rest of the group via a Create step set to Create Copies. We then re-assign a Picture so they are not the same throughout the group. This process allows the group to have the same values for the GroupSize, GroupNumber, and EatingTime which all come into play later in the model. Then, at various points in the model we assign State values for the number of pieces of pizza and if the customer is considered a parent. By Creating Copies before assigning these States, we allow some parts of the entities to be the same, and others to differ.

Creating the Pickup Counter Object After the Pizza has been taken out of the oven, the pieces go onto a Tray according to the State TrayEntity.OrderSize that is based off the state CustomerEntity.Ordersize (which is assigned when the customer enters the Path leading to the Cash Register). Then the customer carries the Tray (that is carrying the Pizza) to the Table. This can be done using 2 Combiner Objects, or in this model we made one simple object that combines all three Entities. There are three Entities that are going to enter this object with two separate Batch Logic Elements that are to be used to join the Entities together - first the Pizza gets batched to the Tray, then the Tray gets

batched to the Customer. The PickUpCounter Object uses Station Elements to do the batching, each Station is designed to do a portion of the batching. There are 3 Input Nodes: one for Tray, Pizza, and Customer. Each one of these nodes corresponds to an InputBuffer where the object waits for the corresponding Parent/Member for its batch logic. After the Tray and Pizza are combined, the pair is transferred to an intermediate station where it attempts to Batch the Pizza/Tray as a Member with the Customer. After everything is batched together, the Customer is transferred to the OrderFulfilled node.

Creating the Trash Can Object The Trash Can is Similar to the Counter except it was created using Standard Library Objects instead of processes. The trash can consists of 2 separators, the first one separates the customer from the Tray and Pizza, and the second separates the tray and pizza with the pizza going into a Sink to destroy it. Then, we defined an external view with one input node and 2 output nodes: one for the customer that leads to the Exit, and one for the tray which (in the model) is set to RideOnTransporter = True so that the worker can come pick up the waiting trays.

Creating the Table Objects After the group is together (leaves the WaitForGroup Combiner), the group is routed to an available table. After routing to the table, the group is Unbatched so that they can each sit in their own seat at the table. One difficulty is that if the group is smaller than 4 members, there is still remaining capacity at the table and some groups could be routed to the table even though it is technically occupied. This requires some add-on processes to a standard Server Object. To avoid having to create add-on processes at each table, we created a new table object. This object consists of two stations, SplitStation and EatingStation. When the SplitStation is entered, we Unbatch the group and transfer the Parents and Members to the EatingStation. After the transfer we assigned the SplitStation.CurrentCapacity to 0 this means that the table is no longer considered available and no customers can be routed to this table, even if there is available capacity. Then, after Delaying for EatingTime, we assign the Capacity of the SplitStation back to its original value, signifying that the table is available for new customers.

You might also like