2017-09-14 7 views
0

次のスケジュールを設定しようとすると問題が発生します。 forループにエラーがあるようです。この部分の中で特に:mM[iRow,j] = p[k]。 しかし私は何が間違っているのか分かりません。IndexError:軸2のインデックス2がサイズ2(リストスケジューリング)の範囲外です

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 
関連する問題