1.库存管理问题
思路:
代码:
#程序文件Pex16_9_2.py
import numpy as np
a=2; b=3; lamda=10; M1=0;
u=1; n=10000;
for i in range(1,2*lamda):
d=np.random.poisson(lamda,n) #产生n个服从Poiss分布的需求量数据
M2=np.mean(((b-a)*u*(u<=d)+((b-a)*d-a*(u-d))*(u>d))) #求平均利润
if M2>M1: M1=M2; u=u+1;
else: print('最佳购进量:',u-1); break
2.排队问题
思路:
代码:
#程序文件Pex16_10
from numpy.random import exponential, uniform, seed
from numpy import mean, array, zeros
seed(4) #进行一致性比较,每次运行结果一样
def oneday():
W=[0] #第一个顾客的等待时间
t0=exponential(10); c0=t0
g0=c0+uniform(4,15); g=g0
while g<480:
t=exponential(10) #下一个到达时间间隔
c=c0+t #下一个到达时刻
w=max(0,g-c) #下一个等待时间
g=max(g,c)+uniform(4,15) #下一个离开时刻
c0=c #把当前到达时刻保存起来
W.append(w) #把等待时间保存到列表中
return len(W), mean(W)
W1=oneday(); print("服务人数和平均等待时间分别为:",W1)
d=1000 #模拟的天数
T=zeros(d); N=zeros(d)
for i in range(d):
N[i],T[i]=oneday()
print("平均服务人数为:",round(N.mean()))
print("平均等待时间为:",T.mean())
3.求函数值
代码:
#程序文件Pex16_8.py
import numpy as np
from matplotlib.pyplot import rc, plot, show
from scipy.optimize import fminbound, fmin
rc('font',size=16)
fx=lambda x:(1-x**3)*np.sin(3*x);
x0=np.linspace(-2*np.pi,2*np.pi,100);
y0=fx(x0); plot(x0,y0); show()
xm1=fminbound(lambda x:-fx(x),-2*np.pi,2*np.pi)
ym1=fx(xm1); print(xm1,ym1,'\n--------------')
xm2=fmin(lambda x:-fx(x), -2*np.pi)
ym2=fx(xm2); print(xm2,ym2,'\n--------------')
x=np.random.uniform(-2*np.pi,2*np.pi,100)
y=fx(x); ym=y.max()
xm=x[y==ym]; print(xm,ym)