排队模型系统仿真python。不使用仿真库
时间: 2023-10-08 21:12:14 浏览: 45
排队模型仿真系统
可以使用Python的基础数据结构来实现排队模型的系统仿真。以下是一个简单的排队模型的示例代码:
```python
import random
class Queue:
def __init__(self):
self.items = []
def is_empty(self):
return len(self.items) == 0
def enqueue(self, item):
self.items.append(item)
def dequeue(self):
if self.is_empty():
return None
return self.items.pop(0)
class Customer:
def __init__(self, arrival_time):
self.arrival_time = arrival_time
class Server:
def __init__(self):
self.busy_until = 0
def is_busy(self, current_time):
return self.busy_until > current_time
def serve_customer(self, customer, current_time):
service_time = random.expovariate(0.5)
self.busy_until = current_time + service_time
class Simulation:
def __init__(self):
self.queue = Queue()
self.server = Server()
self.customers = []
def run(self):
current_time = 0
while current_time < 60:
if random.random() < 0.5:
customer = Customer(current_time)
self.customers.append(customer)
self.queue.enqueue(customer)
if not self.server.is_busy(current_time) and not self.queue.is_empty():
customer = self.queue.dequeue()
self.server.serve_customer(customer, current_time)
current_time += 1
print("Total customers served:", len(self.customers))
if __name__ == "__main__":
sim = Simulation()
sim.run()
```
这个模型中有一个队列、一个服务员和一些顾客。顾客在到达时被加入队列,服务员在空闲时从队列中取出顾客进行服务。每个顾客的到达时间和服务时间都是随机的,使用指数分布模拟。这个模型运行60个单位时间,统计出服务的顾客总数。
阅读全文