taogeanton 2022-12-21 15:57 采纳率: 0%
浏览 58
已结题

关于#流水线车间flow shop调度问题#的问题,如何解决?

流水车间调度问题
这种并行+串行用什么方法比较好?——混合流水线?还是其他……
流水线车间加工:
1.4个工件,同时4台机器开始加工
2.加工完成后,2个工件顺序进入流水线的下一个机器,另外2个工件顺序进入流水线的下一个机器
3.2个工件顺序进入流水线的再次下一个机器,2个工件再次顺序进入流水线的一个机器
4.此时4个工件已加工完成,顺序进入1台机器加工
5.4个工件已加工完成,顺序再次进入1台机器加工
6.加工完成

见下图

img

  • 写回答

4条回答 默认 最新

  • |__WhoAmI__| 2022-12-21 16:20
    关注

    这种流水线车间加工的情况可以使用混合流水线调度算法来解决。
    详细的混合流水线调度算法的步骤:
    1、输入:流水线上的机器数量 $n$,每台机器的加工时间 $t_1, t_2, \dots, t_n$,流水线上的工件数量 $m$。
    2、初始化:
    ①设置工厂的总生产周期为 $T=0$。
    ②设置每台机器的剩余加工时间为 $r_i=t_i$,$i=1,2,\dots,n$。
    3、循环:对于每个工件 $i$,执行以下步骤:
    ①对于每台机器 $j$,更新机器 $j$ 的剩余加工时间 $r_j$。
    ②使用贪心算法,在流水线的机器中选择当前最短的机器 $k$ 加工工件 $i$。
    ③计算工件 $i$ 的完成时间 $t_i$。
    ④更新工厂的总生产周期 $T=\max(T,t_i)$。
    4、输出:工厂的总生产周期 $T$。
    代码示例:

    def hybrid_pipeline_scheduling(n, t, m):
        # 初始化工厂的总生产周期 T 和每台机器的剩余加工时间 r
        T = 0
        r = [t[i] for i in range(n)]
        
        # 循环加工每个工件
        for i in range(m):
            # 更新每台机器的剩余加工时间 r
            for j in range(n):
                if r[j] > 0:
                    r[j] -= 1
            
            # 选择当前最短的机器 k 加工工件 i
            k = min(range(n), key=r.__getitem__)
            
            # 计算工件 i 的完成时间 t[i]
            t[i] = T + t[k]
            
            # 更新工厂的总生产周期 T
            T = max(T, t[i])
        
        # 输出工厂的总生产周期 T
        return T
    

    调用这个函数的示例:

    # 流水线上有 4 台机器,每台机器的加工时间分别为 2, 3, 5, 7
    n = 4
    t = [2, 3, 5, 7]
    
    # 流水线上有 5 个工件
    m = 5
    
    # 调用混合流水线调度算法
    T = hybrid_pipeline_scheduling(n, t, m)
    
    # 输出工厂的总生产周期
    print(T)
    
    评论

报告相同问题?

问题事件

  • 系统已结题 12月29日
  • 创建了问题 12月21日

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题