WEB开发网
开发学院软件开发Python SimPy 简化了复杂模型 阅读

SimPy 简化了复杂模型

 2007-03-29 11:57:48 来源:WEB开发网   
核心提示: 正如我前面提到的,我想收集一些当前 SimPy Monitor 类没有解决的统计信息,SimPy 简化了复杂模型(6),也就是,我并不仅仅对平均付款时间感兴趣,每次对应于某一天的业务,这看来是个好主意,而且还对给定方案中最糟糕情况感兴趣,所以我创建了一个增强的监控程序

正如我前面提到的,我想收集一些当前 SimPy Monitor 类没有解决的统计信息。也就是,我并不仅仅对平均付款时间感兴趣,而且还对给定方案中最糟糕情况感兴趣。所以我创建了一个增强的监控程序,它收集最小和最大的计数值。

用监控程序监视模拟

class Monitor2(Monitor):
  def __init__(self):
    Monitor.__init__(self)
    self.min, self.max = (int(2**31-1),0)
  def tally(self, x):
    Monitor.tally(self, x)
    self.min = min(self.min, x)
    self.max = max(self.max, x)

我们模拟的最后一步当然是 运行它。在大多数标准示例中,只运行一次模拟。但对于我的食品杂货店,我决定通过几次模拟进行循环,每次对应于某一天的业务。这看来是个好主意,因为有些统计信息会随每天的情况而有相当大的不同(因为到达的顾客人次以及所购商品数采用随机产生的不同值)。

清单 6. 每天运行模拟

for run in range(RUNS):
  waittime = Monitor2()
  checkouttime = Monitor2()
  checkout_aisle = Simulation.Resource(AISLES)
  Simulation.initialize()
  cf = Customer_Factory()
  Simulation.activate(cf, cf.run(), 0.0)
  Simulation.simulate(until=CLOSING)
  #print "Customers:", checkouttime.count()
  print "Waiting time average: %.1f" % waittime.mean(),
     "(std dev %.1f, maximum %.1f)" % (sqrt(waittime.var()),waittime.max)
  #print "Checkout time average: %1f" % checkouttime.mean(),
  #   "(standard deviation %.1f)" % sqrt(checkouttime.var())
print 'AISLES:', AISLES, ' ITEM TIME:', ITEMTIME

上一页  1 2 3 4 5 6 7  下一页

Tags:SimPy 简化 复杂

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接