基本Simpy模拟的监视器设置

2024-03-29 10:50:17 发布

您现在位置:Python中文网/ 问答频道 /正文

请原谅我的密码,我是新来的,不太像Python。我正在努力建立一个基本的模拟监视器。最好使用Simpy的Monitor类。你知道吗

我已经定义了三个比萨饼的概率分布,每个比萨饼都有不同的配料。我想模拟1000天的订单,为每种配料的每日需求量生成概率分布。我的代码生成了一个平均值,但我也需要方差,而对于清洁度,我宁愿只监视输出。你知道吗

我确信这很简单,因为无法让Monitor()和.observ()代码正常工作。有什么帮助吗?干杯!!你知道吗

下面的p.s.披萨配料不一定反映作者的喜好。你知道吗

import numpy as np
import random, sys
from SimPy.Simulation import *

class g:
   crust = 0
   cheese = 0
   pepperoni = 0
   pineapple = 0
   olive = 0

def pepperoni_pizza():
   mean = 10 #average pepperoni pizzas ordered
   std = 2 #standard deviation of pizzas ordered
   norders = np.random.normal(mean, std) #draw random value
   g.crust += norders * 10 #value indicates the amount of ingredient required for this pizza
   g.cheese += norders * 5
   g.pepperoni += norders * 5
   g.pineapple += norders * 0
   g.olive += norders * 5

def pineapple_pizza():
   mean = 20
   std = 6
   norders = np.random.normal(mean, std)
   g.crust += norders * 10
   g.cheese += norders * 0
   g.pepperoni += norders * 0
   g.pineapple += norders * 5
   g.olive += norders * 5

def cheese_pizza():
   mean = 7
   std = 3
   norders = np.random.normal(mean, std)
   g.crust += norders * 10
   g.cheese += norders * 10
   g.pepperoni += norders * 0
   g.pineapple += norders * 0
   g.olive += norders * 5


def main():
   nreps = 1000
   for rep in range(nreps):
      while True:
         pepperoni_pizza()
         pineapple_pizza()
         cheese_pizza()
         break
   print 'crust needed =', g.crust/float(nreps)
   print 'cheese needed =', g.cheese/float(nreps)
   print 'pepperoni needed =', g.pepperoni/float(nreps)
   print 'pineapple needed =', g.pineapple/float(nreps)
   print 'olive needed =', g.olive/float(nreps)

if __name__ == '__main__': main()

Tags: nprandomfloatmeanstdprintpineappleneeded