首页 > 解决方案 > TypeError:'float' 对象在 Python 中不可下标“对于双 for 循环中的递归方程,可能与索引相关的问题”

问题描述

我试图用一些 AMVA(近似均值分析)来表示现实生活中的谷仓(封闭排队网络)问题。我有 6 个递归方程要计算。我得到这个TypeError: 'float' object is not subscriptable for my code 的最后一行。我认为这可能与索引有关,但我当然不确定。我将不胜感激任何可以帮助我的想法。

import math

H = 10 #number of cows
c = [0,1,1,12,3,27,H] #capacity of the stations
v = [0,0.164,0.155,0.235,0.17,0.276,1] #relative visit frequencies to the stations
s = [0,8.41,6.38,15.0,3.18,38.9,5.36] #mean service times
sigma = [0,2.52,6.25,11.9,2.3,60.3,0] #st. dev. of service times

R = [0] #residual service times

for i in range(1,7):
    r = (s[i]/2)*(1+((sigma[i]/s[i])**2))
    R.append(r)


W = [[0 for x in range (7)] for y in range (H+1)] #mean waiting time at station i
S = [[0 for x in range (7)] for y in range (H+1)] #mean visit time at station i (waiting + service time)
ARRIVAL = [[0 for x in range (7)] for y in range (H+1)] #mean number of visits per time unit to station i
L = [[0 for x in range (7)] for y in range (H+1)] #mean number of cows waiting at station i
UTIL = [[0 for x in range (7)] for y in range (H+1)] #server utilization at station i
Q = [[0 for x in range (7)] for y in range (H+1)] #probability that all servers are busy at station i


for h in range(1,H+1): #Recursive equations (to find variables when h = 2, we need variables when h = 1 for example)
    for i in range(1,7):
        W[h][i] = Q[h-1][i]*R[i]/c[i] + L[h-1][i]*s[i]/c[i]
        S[h][i] = W[h][i] + s[i]
        ARRIVAL[h][i] = (v[i]*h) / (sum(v[i]*S[h][i] for i in range(1,7)))
        L[h][i] = ARRIVAL[h][i] * W[h][i]
        UTIL = (ARRIVAL[h][i]*s[i])/c[i]
        if h < c[i]:
            Q[h][i] = 0
        else:
            Q[h][i] = (((c[i]*UTIL[h][i])**c[i])/math.factorial(c[i]))*((1-UTIL[h][i])*sum(((c[i]*UTIL[h][i])**k)/math.factorial(k) for k in range(c[i]-1))+(((c[i]*UTIL[h][i])**c[i])/math.factorial(c[i])))**-1

标签: pythonrecursionindexing

解决方案


推荐阅读