実工程の調査


0000
0001
0002
0003
0004

#rcpsp_u.res.txt
#=======================================================================
#リソースの定義(作業員)
#=======================================================================
#職種、員数(時数)、倍率 [job,persons,eps]
H={
 1:["H[1]", 28*10, 1], #取付  
 2:["H[2]", 43*10, 1], #溶接
 3:["H[3]", 12*10, 1], #塗装
 4:["H[4]",  5*10, 2], #鉄艤
 5:["H[5]",  7*10, 2], #甲配
 6:["H[6]",  5*10, 2], #機配
}
def res1(prob,H):
    res1H={}
    for i in [1,2,3,4,5,6]:
        r=math.floor(H[i][1]*H[i][2]); 
        res1H[i]=prob.addResource(H[i][0], capacity={(0,"inf"):r})
    return res1H
res1W=res1(prob,H)
#=======================================================================
#リソースの定義(場所) 
#=======================================================================
#場所の名前、矩形サイズLxB [name,L=L2-L1+1,B=B2-B1+1]
R={
 1:["R[P01]", 58, 13],         # 1:["R[1K]",  58, 13],\
 2:["R[P02]", 58, 13],         # 2:["R[2K]",  58, 13],\
 3:["R[P03]", 42, 16],         # 3:["R[3K]",  42, 16],\
 4:["R[P04]", 26, 43],         # 4:["R[4K]",  26, 43],\
 5:["R[P05]", 52, 12],         # 5:["R[5KU]", 52, 12],\
 6:["R[P06]", 52, 11+2],       # 6:["R[5KR]", 52, 11+2],\
 7:["R[P07]", 61, 26+3],       # 7:["R[6K]",  61, 26+3],\
 8:["R[B01]", 16, 19],         # 8:["R[AB]",  16, 19],\
 9:["R[B02]", 16, 19],         # 9:["R[BB]",  16, 19],\
10:["R[B03]", 16, 19],         #10:["R[CB]",  16, 19],\
11:["R[Q01]", 40, 18],         #11:["R[D40]", 40, 18],\
12:["R[Q02]", 50, 18],         #12:["R[D50]", 50, 18],\
13:["R[Q03]", 70, 22],         #13:["R[D70]", 70, 22],\
14:["R[Q04]", 40, 14],         #14:["R[RD1]", 40, 14],\
15:["R[Q05]", 35, 17],         #15:["R[RD3]", 35, 17],\
16:["R[Q06]", 40, 15],         #16:["R[RD4]", 40, 15],\
17:["R[Q07]", 30, 12],         #17:["R[RD5]", 30, 12],\
18:["R[Q08]", 32, 12],         #18:["R[RD6]", 32, 12],\
19:["R[Q09]", 35, 15],         #19:["R[RD7]", 35, 15],\
20:["R[Q10]", 30, 12],         #20:["R[RD30]",30, 12],\
21:["R[Q11]", 30, 12],         #21:["R[RD8]",30, 12],\
22:["R[DOC]",136, 24],         #22:["R[DOC]",136, 24],\
23:["R[R06]",  4, 14],         #23:["R[1Kb]",  4, 14],\
24:["R[R01]",9+2, 13+1],       #24:["R[1Ka]",9+2, 13+1],\
25:["R[R07]",  4, 14],         #25:["R[2Kb]",  4, 14],\
26:["R[R02]", 51-25*0, 13],    #26:["R[2Ka]", 51-25*0, 13],\
27:["R[R03]", 26, 18],         #27:["R[3Ka]", 26, 18],\
28:["R[R04]",  5, 10],         #28:["R[7K]",   5, 10],\
29:["R[R05]",  6, 29],         #29:["R[6Ka]",  6, 29],\
}
#-----各場所の長さ方向線分[L1,L2]・幅方向線分[B1,B2]
P01= [ 1,0, R[1][1],0, R[1][2]]	 #K1
P02= [ 2,0, R[2][1],0, R[2][2]]  #K2
P03= [ 3,0, R[3][1],0, R[3][2]]  #K3
P04= [ 4,0, R[4][1],0, R[4][2]]  #K4
P05= [ 5,0, R[5][1],0, R[5][2]]  #K5U
P06= [ 6,0, R[6][1],0, R[6][2]]  #K5R
P07= [ 7,0, R[7][1],0, R[7][2]]  #K6
B01 =[ 8,0, R[8][1],0, R[8][2]]  #AB 
B02 =[ 9,0, R[9][1],0, R[9][2]]  #BB 
B03 =[10,0,R[10][1],0,R[10][2]]  #CB 
Q01= [11,0,R[11][1],0,R[11][2]]  #D40
Q02= [12,0,R[12][1],0,R[12][2]]  #D50
Q03= [13,0,R[13][1],0,R[13][2]]  #D70
Q04= [14,0,R[14][1],0,R[14][2]]  #RD1
Q05= [15,0,R[15][1],0,R[15][2]]  #RD3
Q06= [16,0,R[16][1],0,R[16][2]]  #RD4
Q07= [17,0,R[17][1],0,R[17][2]]  #RD5
Q08= [18,0,R[18][1],0,R[18][2]]  #RD6
Q09= [19,0,R[19][1],0,R[19][2]]  #RD7
Q10= [20,0,R[20][1],0,R[20][2]]  #RD3
Q11= [21,0,R[21][1],0,R[21][2]]  #RD8
R06= [23,0,R[23][1],0,R[23][2]]  #K1b
R01= [24,0,R[24][1],0,R[24][2]]  #K1a
R07= [25,0,R[25][1],0,R[25][2]]  #K2b
R02= [26,0,R[26][1],0,R[26][2]]  #K2a
R03= [27,0,R[27][1],0,R[27][2]]  #K3a
R04= [28,0,R[28][1],0,R[28][2]]  #K7 
R05= [29,0,R[29][1],0,R[29][2]]  #K6a
#
P00=[P01,P02,P03,P04,P05,P06,P07] 
B00=[B01,B02,B03]
Q001=[Q01,Q02,Q03,Q11]
Q002=[Q04,Q05,Q06,Q07,Q08,Q09,Q10]
Q00=Q001+Q002
R00=[R01,R02,R03]
#-----メッシュの使用可否
def res3(prob,R):
    res3PL={}
    S={}
    for id in R:
        res3PL[id]=0
        S[id]=0
       #if not id in [2,3,4,5,6,11,13,14,15,16,17,18,19,20]:
        if not id in [2,3,4,5,6,7,13]:      
          for i in range(0,R[id][1]):
            for j in range(0,R[id][2]):        
              res3PL[id,i,j] =prob.addResource(R[id][0]+"[{0:02d}_{1:02d}]".format(i,j), capacity={(0,"inf"):1}) 
              S[id]+=1
        if id==2:
          for i in range(0,R[id][1]):
            for j in range(0,R[id][2]):  
              if i in  range(0,15) and j in range(0,13):
                res3PL[id,i,j] =prob.addResource(R[id][0]+"[{0:02d}_{1:02d}]".format(i,j), capacity={(0,"inf"):0})
              else:     
                res3PL[id,i,j] =prob.addResource(R[id][0]+"[{0:02d}_{1:02d}]".format(i,j), capacity={(0,"inf"):1})
                S[id]+=1
        if id==3:
          for i in range(0,R[id][1]):
            for j in range(0,R[id][2]):  
              if i in  range(0,28) and j in range(0,2):
                res3PL[id,i,j] =prob.addResource(R[id][0]+"[{0:02d}_{1:02d}]".format(i,j), capacity={(0,"inf"):0})
              # elif i in  range(0,4) and j in range(2,15):
              #   res3PL[id,i,j] =prob.addResource(R[id][0]+"[{0:02d}_{1:02d}]".format(i,j), capacity={(0,"inf"):1})
              # elif i in  range(0,46) and j in range(15,16):
              #   res3PL[id,i,j] =prob.addResource(R[id][0]+"[{0:02d}_{1:02d}]".format(i,j), capacity={(0,"inf"):1})
              else:     
                res3PL[id,i,j] =prob.addResource(R[id][0]+"[{0:02d}_{1:02d}]".format(i,j), capacity={(0,"inf"):1})
                S[id]+=1
        if id==4:
          for i in range(0,R[id][1]):
            for j in range(0,R[id][2]):  
              if i in  range(1,13) and j in range(13,14):
                res3PL[id,i,j] =prob.addResource(R[id][0]+"[{0:02d}_{1:02d}]".format(i,j), capacity={(0,"inf"):0})
              else:     
                res3PL[id,i,j] =prob.addResource(R[id][0]+"[{0:02d}_{1:02d}]".format(i,j), capacity={(0,"inf"):1})
                S[id]+=1          
        if id==5:
          for i in range(0,R[id][1]):
            for j in range(0,R[id][2]):  
              if i in  range(0,13) and j in range(0,12):
                res3PL[id,i,j] =prob.addResource(R[id][0]+"[{0:02d}_{1:02d}]".format(i,j), capacity={(0,"inf"):0})
              else:     
                res3PL[id,i,j] =prob.addResource(R[id][0]+"[{0:02d}_{1:02d}]".format(i,j), capacity={(0,"inf"):1})
                S[id]+=1
        if id==6:
          for i in range(0,R[id][1]):
            for j in range(0,R[id][2]):  
              if i in  range(0,3) and j in range(0,13):
                res3PL[id,i,j] =prob.addResource(R[id][0]+"[{0:02d}_{1:02d}]".format(i,j), capacity={(0,"inf"):0})
              else:     
                res3PL[id,i,j] =prob.addResource(R[id][0]+"[{0:02d}_{1:02d}]".format(i,j), capacity={(0,"inf"):1})
                S[id]+=1     
        if id==7:       
          for i in range(0,R[id][1]):
            for j in range(0,R[id][2]):  
             #if i in [0,22,23,24,25,26,27,28,29,30,31,32,33,34,35] and j in range(0,13):
              if i in range(22,36) and j in range(0,13):
                res3PL[id,i,j] =prob.addResource(R[id][0]+"[{0:02d}_{1:02d}]".format(i,j), capacity={(0,"inf"):0})
             #elif i in range(1,22) and j in range(0,1):
              elif i in range(0,22) and j in range(0,1):
                res3PL[id,i,j] =prob.addResource(R[id][0]+"[{0:02d}_{1:02d}]".format(i,j), capacity={(0,"inf"):0})      
              else:     
                res3PL[id,i,j] =prob.addResource(R[id][0]+"[{0:02d}_{1:02d}]".format(i,j), capacity={(0,"inf"):1})
                S[id]+=1   
        if id==13:       
          for i in range(0,R[id][1]):
            for j in range(0,R[id][2]):  
             #if i in [31,32,33,34,35,36,37,64,65,66,67,68,69] and j in range(1,21):
              if i in [31,32,33,34,35,36,37,65,66,67,68,69] and j in range(0,22):
                res3PL[id,i,j] =prob.addResource(R[id][0]+"[{0:02d}_{1:02d}]".format(i,j), capacity={(0,"inf"):0})  
              # elif i in range(0,70) and j in [0,21]:
              #   res3PL[id,i,j] =prob.addResource(R[id][0]+"[{0:02d}_{1:02d}]".format(i,j), capacity={(0,"inf"):1})     
              else:     
                res3PL[id,i,j] =prob.addResource(R[id][0]+"[{0:02d}_{1:02d}]".format(i,j), capacity={(0,"inf"):1})
                S[id]+=1
    return res3PL,S
res3PL,S=res3(prob,R)
#-----
def res2(prob,R,S):
    res2S={}
    for id in R:
        res2S[id]=prob.addResource("A[{0:02d}]".format(id), capacity={(0,"inf"):S[id]})        
    return res2S
res2S=res2(prob,R,S)
#sys.exit()