Python 如何运行泊松过程模拟?

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

我试图对以泊松速率(每分钟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
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结尾的”“”应该单独在一行上”。