2017-09-14 7 views
0

다음 일정을 잡으려고 할 때 문제가 있습니다. for 루프에 오류가있는 것 같습니다. 특히이 부분은 mM[iRow,j] = p[k]입니다. 그러나 나는 무엇이 잘못되었는지 이해하지 못합니다.IndexError : 인덱스 2가 크기 0 인 축 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