用python绘制车间调度的甘特图(JSP)

之前都是写调度问题,今天给一个使用代码,也就是搞调度问题通常也不可 避免会用到的————甘特图
首先,调用模块

import matplotlib.pyplot as plt

直接上代码,哈哈哈,废话不多说了

def gatt(CHS,Processing_time,Setup_time,Transpotation_time,M_num,O_Max_len,J_num):
    D=Decode_Matrix(CHS, Processing_time, Setup_time, Transpotation_time, M_num, O_Max_len, J_num)
    # print(CHromo)
    End_time=D[1]
    Start_time=D[0]
    S_start=D[2]
    S_end=D[3]
    T_start=D[4]
    T_end=D[5]
    T0 = J_num * O_Max_len
    N = M_num
    Start = []
    End = []
    M = ['red', 'blue', 'yellow', 'orange', 'green', 'palegoldenrod', 'purple', 'pink','Thistle','Magenta','SlateBlue','RoyalBlue','Cyan','Aqua','floralwhite','ghostwhite','goldenrod','mediumslateblue','navajowhite',
             'navy','sandybrown','moccasin']
    S_color='white'
    T_color='grey'
    s=('/', '+', 'x', '\\', '||', 'o', '///','//' '.','//','#','||')
    for i in range(N):
        for j in range(T0):
            if End_time[i][j] != 0 and End_time[i][j] - Start_time[i][j] != 0:
                plt.barh(i*3, width=End_time[i][j] - Start_time[i][j],height=0.8, left=Start_time[i][j],
                              color=M[int(j/O_Max_len)],edgecolor='black')
                plt.text(x=Start_time[i][j] + 0.1, y=i*3, s=(int(j/O_Max_len)+1, j%O_Max_len+1),fontsize=8)
            if S_end[i][j] != 0 and S_end[i][j] - S_start[i][j] != 0:
                plt.barh(i * 3+1, width=S_end[i][j] - S_start[i][j], height=0.8, left=S_start[i][j],
                         color=S_color, edgecolor='black')
                plt.text(x=S_start[i][j] + 0.1, y=i * 3+1, s=(int(j / O_Max_len) + 1, j % O_Max_len + 1),
                         fontsize=8)
            if T_end[i][j] != 0 and T_end[i][j] - T_start[i][j] != 0:
                plt.barh(i * 3+2, width=T_end[i][j] - T_start[i][j], height=0.8, left=T_start[i][j],
                         color=T_color, edgecolor='black')
                plt.text(x=T_start[i][j] + 0.1, y=i * 3+2, s=(int(j / O_Max_len) + 1, j % O_Max_len + 1),
                         fontsize=8)
                Start.append(Start_time[i][j])
                End.append(End_time[i][j])

结果

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/crazy_girl_me/article/details/110895843