[英]Dynamic programming python implementation problem
I am trying to implement a dynamic programming code using backward iteration. 我正在尝试使用向后迭代来实现动态编程代码。 However, the python for loops are giving me list out of range error.
但是,python for循环给我列出了超出范围的错误。
pi = [65,61,42,35,30,32,38,42,53,57,59,64,72,77,64,62,40,64,55,43,40,55,30,21]
#backward recursion
#number of stages T
T = [i for i in range(1,25)]
#possible states
S = [i for i in range(100,1100,100)]
#decision variable
D = [100,-100,0]
#initilaize the value function
obj_val = [[[0 for i in range(1,25)] for j in range(1,9)] for k in range(1,4)]
for t in range(24,0,-1): #Step backward through problem stages T
for s in range(9): #Step through each possible stage t state
for d in range(4): #step through each feasible stage t decision D
if t == 24: #if it is the last stage
obj_val[t][s][d] = pi[t]*D[d]
else:
obj_val[t][s][d] = pi[t]*D[d]+obj_val[t+1][s][d]
IndexError: list index out of range (for both the if and else conditions) IndexError:列表索引超出范围(对于if和else条件)
In the obj_val
, the most external array has only 4 objects. 在
obj_val
,最外部的数组只有4个对象。 So when if
is true, you can't get the obj_val[24]
. 因此,
if
为true,则无法获取obj_val[24]
。 Moreover you don't have index 24 in any of your arrays. 此外,您的任何数组中都没有索引24。 It goes maximum to 23.
最大为23。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.