如何用Python构建一个模拟单服务台理发系统排队系统的模型,其中顾客到达率为0.1,服务率为0.1,结束时间为240分钟。
时间: 2024-10-20 20:06:28 浏览: 1
在Python中,你可以使用随机过程和模拟库,如`random`和`time`模块,来构建一个简单的理发店排队系统模型。这里是一个基本的例子:
```python
import random
import time
# 定义常量
arrival_rate = 0.1 # 顾客每分钟抵达的概率
service_rate = 0.1 # 每位顾客的服务完成概率
max_wait_time = 240 # 最大等待时间(分钟)
class Customer:
def __init__(self):
self.arrival_time = random.expovariate(1 / arrival_rate) # 使用指数分布模拟随机到达时间
self.wait_time = None
self.service_time = random.expovariate(1 / service_rate)
def process(self):
if self.wait_time is None:
self.wait_time = max_wait_time
else:
# 如果还在等待,更新剩余等待时间
self.wait_time -= 1
if self.wait_time <= 0:
# 提供服务
print(f"Customer {self} starts being served after waiting for {self.wait_time} minutes.")
self.service_time = int(self.service_time)
time.sleep(self.service_time) # 模拟服务时间
print(f"Customer {self} finished serving in {self.service_time} minutes.")
class理发店():
def __init__(self):
self.customers = []
def add_customer(self):
if len(self.customers) < 1 or not any(c.is_served() for c in self.customers): # 只有当队列为空或所有人都已服务完毕时才接纳新顾客
new_customer = Customer()
self.customers.append(new_customer)
new_customer.process()
理发店().add_customer() # 开始模拟
```
在这个模型中,顾客以固定概率随机到达,一旦到达就开始排队,如果当前没有人在服务,他们就会立刻开始等待,直到有人完成服务。每个顾客的服务时间也由一个独立的指数分布随机生成。模拟会一直运行直到队列为空或达到最大等待时间。
阅读全文