2017-09-14 81 views
0

嘗試安排以下操作時出現問題。 for循環似乎有錯誤。特別是在這部分:mM[iRow,j] = p[k]。 但我不明白什麼是錯的。IndexError:索引2超出大小爲2的軸0(列表調度)的邊界

m=2 # machines 
n= 4 # number of jobs 
p= np.array([1,2,3,4]) # processing times 
iTimemax = np.sum(p) 

# Initialisation 
iTime = 0 
k= 0      
iRow = 0 # the iRowth job of the machine 
mM=np.zeros((n,m)) 

for i in range (iTimemax): 
    for j in range (m): 
     if np.sum(mM[:,j]) <= iTime: 
      mM[iRow,j] = p[k] 
      k = k + 1 # next job to be assigned 
    iRow = iRow + 1 
    iTime = iTime +1 

回答

0

你的p數組的長度是4,並且你在每次進入if條件時增加k。您需要在if條件中添加檢查或在外部循環中重置k。

例如:

import numpy as np 
m=2 # machines 
n= 4 # number of jobs 
p= np.array([1,2,3,4]) # processing times 
iTimemax = np.sum(p) 

# Initialisation 
iTime = 0 
k= 0 
iRow = 0 # the iRowth job of the machine 
mM=np.zeros((n,m)) 
for i in range (iTimemax): 
    for j in range (m): 
     if np.sum(mM[:,j]) <= iTime and k < len(p): 
      mM[iRow,j] = p[k] 
      k = k + 1 # next job to be assigned 
    iRow = iRow + 1 
    iTime = iTime +1 
相關問題