那两个空矩阵和后面两行关于这个矩阵的代码是啥意思。这是计算圆周率和计算次数的关系的问题
【相关推荐】
下面展示一些 内联代码片
。
import numpy as np
def driving_time_one_moment(W_I,M_J,TRAVELTIME_IJ,Y_IJ):
print(np.sum(np.dot(np.dot(W_I,Y_IJ),TRAVELTIME_IJ.T)))
return np.sum(np.dot(np.dot(W_I,Y_IJ),TRAVELTIME_IJ.T))
def waiting_time_one_moment(W_I,M_J,TRAVELTIME_IJ,Y_IJ):
tc=8 # 服务时间,24小时提供服务;
tf=2 #每辆车充电时长;
# 第一步:计算用户达到率
Tao_J=np.dot(W_I,Y_IJ/tc)
# 第二步:单位时间内充电站平均服务能力
U_J=M_J/tf
# 第三步:充电站排队系统服务强度:,由于ROU_J会存在大于1的情况,从而会促使后面求解
ROU_J=Tao_J/U_J
# 第四步:充电站内充电桩全部空闲概率:
P_J=np.full(shape=(1,M_J.shape[1]),fill_value=0.0)
for j in range(M_J.shape[1]):
temp = 0
for k in range(M_J.shape[1]):
temp+=(np.power(M_J[0,j]*ROU_J[0,j],k))/(np.math.factorial(k))
p_j0=1/(temp+(np.power(M_J[0,j]*ROU_J[0,j],M_J[0,j]))/(np.math.factorial(M_J[0,j])*(1-ROU_J[0,j])))
P_J[0,j]=p_j0
# 第五步:计算排队等候时间期望
W_Jq=np.full(shape=(1,M_J.shape[1]),fill_value=0.0)
for j in range(M_J.shape[1]):
w_jq=(np.power(M_J[0,j],M_J[0,j])*np.power(ROU_J[0,j],M_J[0,j]+1)*P_J[0,j])/(ROU_J[0,j]*np.math.factorial(M_J[0,j])*np.power(1-ROU_J[0,j],2))
W_Jq[0,j]=w_jq
# 第六步:所有用户的总的等待花费时间
T2=0
for j in range(M_J.shape[1]):
T2+=W_Jq[0,j]*Tao_J[0,j]*tc
print(T2)
if __name__ == '__main__':
# 需求量;
W_I = np.array([[10, 20, 30, 50]])
# 充电桩供给量;
M_J = np.array([[5, 10, 15]])
# 行是demand,列是provider
TRAVELTIME_IJ = np.array([[1, 1.5, 2.5],
[1.5, 1, 2],
[1, 1.5, 1],
[2.5, 1.5, 1]])
# 出行时间的阻尼函数,衰减函数
F_DIJ = 1 / TRAVELTIME_IJ
Sum_Dij_I = np.sum(F_DIJ, axis=1)
# 计算选择权重
Y_IJ = np.full(shape=(TRAVELTIME_IJ.shape), fill_value=0.0)
for i in range(W_I.shape[1]):
Y_IJ[i, :] = F_DIJ[i, :] / Sum_Dij_I[i]
# 计算驾车时间
driving_time_one_moment(W_I,M_J,TRAVELTIME_IJ,Y_IJ)
# 计算等候时间
waiting_time_one_moment(W_I,M_J,TRAVELTIME_IJ,Y_IJ)