本章练习使用simpy模拟电影院真实场景,目标是通过建模优化影院内工作人员数量。观众从进入电影院到找到自己座位,需要考虑的经过:
- 1.排队购取票
- 2.开始购取票
- 3.等待验票
- 4.正在验票
- 5.选择是否购买饮食
- 如果购买,加入购买队列
- 如果不购买,直接入场
- 6.入场寻找座位
设置场景
#引入需要的包
import simpy
import random
import statistics
#声明从进入电影院到检票完成需要的时间变量
wait_times = []
创建场景类
#建立系统模型,模型可以是许多场景,如银行、检查站、洗车店等,此处为电影院
class Theater(object):
def __init__(self, env, num_cashiers, num_servers, num_ushers):
self.env = env
self.cashier = simpy.Resource(env, num_cashiers)
self.server = simpy.Resource(env, num_servers)
self.usher = simpy.Resource(env, num_ushers)
def purchase_ticket(self, moviegoer):
#根据历史数据,一般购取票平均花费1-2分钟
yield self.env.timeout(random.randint(1,3))
def check_ticket(self, moviegoer):