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

完整研究可参考:基于遗传算法求解柔性作业车间调度问题代码实现(包括标准算例准换、编码、解码的详细讲述)_crazy_girl_me的博客-CSDN博客
之前都是写调度问题,今天给一个使用代码,也就是搞调度问题通常也不可 避免会用到的————甘特图
首先,调用模块

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])

结果

在这里插入图片描述

Python可以使用Matplotlib和Plotly两种库来画车间调度甘特图。其中,Matplotlib相对比较成熟,文案显示比较优雅,但无法很好地以时间为单位显示作业调度过程,也不易整合到生产环境。而Plotly是Python的一个开源库,有单独的甘特图API支持,可以很方便地画出甘特图,并且时间显示比较灵活,可以较好地整合到生产环境。 以下是使用Plotly库实现车间调度甘特图的方案: 1. 准备工作:安装Plotly库和相关依赖,导入所需模块。 2. 提供作业调度信息:准备好作业调度信息,包括工件、工序、开始时间和结束时间等。 3. 创建甘特图:使用Plotly的Gantt Charts API创建甘特图对象。 4. 配置甘特图:设置甘特图的样式,如纵轴和横轴的标签、大小、颜色等。 5. 添加作业调度信息:使用Plotly的add_trace方法,根据作业调度信息添加相应的条形图。 6. 显示甘特图:使用Plotly的show方法显示甘特图。 以下是代码示例: ```python import plotly.express as px # 准备作业调度信息,具体格式根据实际数据结构进行调整 job_scheduling_info = [ {'工件': 'A', '工序': '1', '开始时间': '2022-01-01 08:00:00', '结束时间': '2022-01-01 10:00:00'}, {'工件': 'A', '工序': '2', '开始时间': '2022-01-01 10:30:00', '结束时间': '2022-01-01 12:00:00'}, {'工件': 'B', '工序': '1', '开始时间': '2022-01-01 09:00:00', '结束时间': '2022-01-01 11:00:00'}, {'工件': 'B', '工序': '2', '开始时间': '2022-01-01 11:30:00', '结束时间': '2022-01-01 14:00:00'}, # 其他作业调度信息... ] # 创建甘特图对象 fig = px.timeline(job_scheduling_info, x_start="开始时间", x_end="结束时间", y="工件", color="工序") # 配置甘特图样式 fig.update_layout( title="车间调度甘特图", xaxis_title="时间", yaxis_title="工件", height=600, # 图片高度 width=800, # 图片宽度 ) # 显示甘特图 fig.show() ```
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码丽莲梦露

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值