import math
import random
m = 1.5 #mu
l = 2 #lambda
c = 3 #control/number of servers
def single(m, l, c):
p = (l/m)
Po = (1-(l/m))
Ls = (l/(m-l))
Ws = (1/(m-l))
Wq = (l/(m*(m-l)))
Lq = (l**2/(m*(m-l)))
return(p, Po, Ls, Ws, Wq, Lq)
def multi(m, lm, mu):
rho=lm/mu
n=0
sm=0
while(n<=m-1):
sm=(1/math.factorial(n))*pow(rho,n)
n+=1
sm = sm + 1/(1/math.factorial(m))*(pow(rho,m)*m*mu/(m*mu-lm))
lS=lm*mu*pow(rho,m)/((math.factorial(m-1)*(m*mu-lm)**2))*(1/sm)+rho
lQ=lS-rho
#Po = 1/sm
return(lq, ls)
singReturn=single(m, l, c)
multiReturn=multi(3, 2, 1.5)
print("SINGLE SERVER QUEUEING")
print("-----------------------")
print("p: %4.4f \nPo: %4.4f \nLs: %4.4f \nWs: %4.4f \nWq: %4.4f \nLq: %4.4f"%singReturn)
我被退回并出错:
Traceback (most recent call last):
File "/home/schnipdip/Desktop/final_part1_chris_herzog.py", line 35, in <module>
multiReturn=multi(3, 2, 1.5)
File "/home/_____/Desktop/final_part1_.py", line 28, in multi
sm = sm + 1/(1/math.factorial(m))*(pow(rho,m)*m*mu/(m*mu-lm))
ZeroDivisionError: integer division or modulo by zero
我试图找到SM的值,然后将其转换为Po变量。while循环通过m(或c)-1控制有多少个服务器。 我更改了循环中的变量,以查看该变量是否在内存中被以前的值覆盖,而不是出于任何原因重置。我敢肯定这与此事无关。你知道吗
如果您使用的是Python2,可能是由于以下原因:
从逻辑上讲,它没有多大意义:从数学上讲,
1/(1/x)
只是一种笨拙的方式来拼写普通的x
。所以我打赌你的代码有逻辑错误。你知道吗但是,在Python 2中,它也有一个编程错误:
/
应用于整数在Python 2中截断整数除法:为了防止这种情况,使用
1.0
而不是1
来强制进行浮点除法:相关问题 更多 >
编程相关推荐