Python 如何运行泊松过程模拟?
我试图对以泊松速率(每分钟2.5辆)到达停车场的汽车进行模拟;停车时间与参数45分钟呈指数关系。这是我的代码,但似乎不起作用。我在缩进上有错误,但Python shell中没有运行任何内容:Python 如何运行泊松过程模拟?,python,simulation,Python,Simulation,我试图对以泊松速率(每分钟2.5辆)到达停车场的汽车进行模拟;停车时间与参数45分钟呈指数关系。这是我的代码,但似乎不起作用。我在缩进上有错误,但Python shell中没有运行任何内容: import matplotlib.pyplot as plt import random, math import numpy as np import scipy as sp import scipy.stats as stats import matplotlib.pyplot as plt impo
import matplotlib.pyplot as plt
import random, math
import numpy as np
import scipy as sp
import scipy.stats as stats
import matplotlib.pyplot as plt
import SimPy.Simulation as Sim
class G:
maxTime = 960.0 # 16 hours * 60 min
arrivalrate = 2.5 # per min
parkingtime = 45 # mins
parkedcars = 0
seedVal = 9999
class Arrival(Sim.Process):
""" Source generates cars at random
Arrivals are at a time-dependent rate
"""
def generate(self):
i=0
tnow = self.sim.now()
while (self.sim.now() < 960 ):
arrivalrate = 2.5 + 10 * math.sin(math.pi * tnow/12.0)
t = random.expovariate(arrivalrate)
yield Sim.hold, self, t
c = Car(name="Car%02d" % (i), sim=self.sim)
timeParking = random.expovariate(1.0/45)
self.sim.activate(c, c.visit(timeParking))
i += ArithmeticError
class Car(Sim.Process):
""" Cars arrives, parks for a while, and leaves
Maintain a count of the number of parked cars as cars arrive and leave
"""
def visit(self, timeParking=0):
self.sim.parkedcars += 1
self.sim.parking.observe(self.sim.parkedcars)
yield Sim.hold, self, timeParking
self.sim.parkedcars -= 1
self.sim.parking.observe(self.sim.parkedcars)
class Parkingsim(Sim.Simulation):
def run(self, aseed):
random.seed(seed)
Sim.initialize()
s = Arrival(name=’Arrivals’, sim=self)
self.parking = Sim.Monitor(name=’Parking’, ylab=’cars’,
tlab=’time’, sim=self)
self.activate(s, s.generate(), at=0.0)
self.simulate(until=G.maxTime)
parkinglot = Parkingsim()
parkinglot.run(1234)
plt.figure(figsize=(5.5,4))
plt.plot(parkinglot.parking.tseries(),parkinglot.parking.yseries())
plt.xlabel(’Time’)
plt.ylabel(’Number of cars’)
plt.xlim(0, 24)
plt.show()
导入matplotlib.pyplot作为plt
导入随机、数学
将numpy作为np导入
将scipy作为sp导入
将scipy.stats导入为stats
将matplotlib.pyplot作为plt导入
将SimPy.Simulation导入为Sim
G类:
最大时间=960.0#16小时*60分钟
到达率=2.5#每分钟
停车时间=45分钟
停放车辆=0
seedVal=9999
班级到达(模拟流程):
源随机生成汽车
到达率与时间有关
"""
def生成(自身):
i=0
tnow=self.sim.now()
而(self.sim.now()<960):
arrivalrate=2.5+10*math.sin(math.pi*tnow/12.0)
t=随机指数变量(到达率)
屈服模拟保持,自我,t
c=Car(name=“Car%02d”%(i),sim=self.sim)
时间停车=随机指数变量(1.0/45)
自动模拟激活(c,c.访问(定时停车))
i+=算术错误
车辆等级(模拟过程):
汽车来了,停了一会儿,然后离开了
在车辆到达和离开时,记录停放车辆的数量
"""
def访问(自我,时间停车=0):
自动模拟驻车系统+=1
自动模拟停车观察(自动模拟停车)
屈服模拟保持、自我、定时停车
自动模拟驻车系统-=1
自动模拟停车观察(自动模拟停车)
类Parkingsim(模拟仿真):
def运行(自身、aseed):
随机。种子(种子)
Sim.initialize()
s=到达(name='Arrivals',sim=self)
self.parking=Sim.Monitor(name='parking',ylab='cars',
tlab='time',sim=self)
self.activate(s,s.generate(),at=0.0)
self.simulate(直到=G.maxTime)
parkinglot=停车场()
停车场运行(1234)
plt.图(figsize=(5.5,4))
plt.plot(parkinglot.parking.tseries(),parkinglot.parking.yseries())
plt.xlabel(“时间”)
plt.ylabel(“车辆数量”)
plt.xlim(0,24)
plt.show()
我认为你对SimPy有问题。Python2和Python3的版本之间有非常显著的变化
就如何处理从2移动到3进行了很好的讨论
使用“”时,还应具有三个块
class Arrival(Sim.Process):
""" Source generates cars at random
Arrivals are at a time-dependent rate
"""
应该成为
class Arrival(Sim.Process):
""" Source generates cars at random
Arrivals are at a time-dependent rate"""
欢迎来到Stack Overflow。您能在问题中包含一个错误回溯吗?您的docstring注释是矛盾的,并且:“请注意,最重要的是,多行docstring结尾的”“”应该单独在一行上”。