1赛题背景
汽车生产工艺复杂,一辆汽车的制造需要完成焊装、涂装、总装三大工艺, 经过焊装车间、涂装车间、总装车间。各车间存在上下游关联关系,每个车间有自己的优化排序目标,需要综合考虑多种复杂的排序规则及工艺约束,制定合理的混流装配排序计划,通过对车身序列进行排序优化,从而保证生产物料消耗的均衡性以及各个生产工位的负荷均匀化等。


注: 车顶无对比颜色视为与车身颜色相同。
2优化目标及其建模
::: block-2
焊装车间
- 当车进入焊装车间时,由于焊装时不同车型使用的设备不同,需要根据车型切换生产,故该车间中设备的切换次数越少越好。
分析:焊装车间设备切换次数等价于生产序列中车型切换次数,则 f 1 f_1 f1的表达式可写为:
 
      
       
        
         
          
          
           
            
            
              f 
             
            
              1 
             
            
           
             = 
            
           
             生产序列车型切换次数 
            
           
          
          
          
          
            (1) 
           
          
         
        
       
         f_1 = 生产序列车型切换次数 \tag{1} 
        
       
     f1=生产序列车型切换次数(1)
 :::
::: block-2
涂装车间
- 当车进入涂装车间时,由于喷漆(固定每 5 辆车清洗喷头或颜色切换也需额外清洗喷头)限制偏向颜色以 5 的倍数切换生产,故该车间中尽量连续生产颜色相同的车,且数量为 5 的倍数。
f 2 f_2 f2建模思路,对于给定的 n n n辆同一颜色的车(车顶颜色和车身颜色相同),将其切分为 m m m组,每组车辆数 0 ≤ x j ≤ 5 0\le x_j \le 5 0≤xj≤5,即有 ∑ j = 1 m x j = n \sum_{j=1}^m x_j=n ∑j=1mxj=n。对于车辆数 x j > 0 x_j>0 xj>0的组,车辆数越接近 5 5 5越好,因此可描述为
f 2 = 1 / ∑ i = 1 k ∑ j = 1 m x i j 2 (2) f_2 = 1/\sum_{i=1}^k\sum_{j=1}^m x_{ij}^2 \tag{2} f2=1/i=1∑kj=1∑mxij2(2)
k:表示有 k k k种不同色的连续车。
注:喷漆顺序为先喷车顶再喷车身,若一辆车车顶与车身颜色不同,则认为需要颜色切换,即需要额外清洗喷头,若一辆车车身颜色与下一辆车车顶颜色不同,也认为需要颜色切换。相邻两辆车在喷漆过程中若发生了颜色切换则认为颜色不连续。车顶颜色为无对比颜色时,认为车顶与车身颜色相同。
::: block-2
总装车间
- 当车进入总装车间时,四驱车尽量连放但连放次数<4 为优。即连续两辆或连续三辆四驱车相邻都认为是符合预期的,故该车间中尽量使得四驱车连放,但是连放数<4。
f 3 f_3 f3建模对不满足要求的四驱车(包含孤立的四驱车数和连放次数大于等于4的四驱车数)进行计数即可。
 
      
       
        
         
          
          
           
            
            
              f 
             
            
              3 
             
            
           
             = 
            
           
             序列孤立的四驱车数 
            
           
             + 
            
           
             连放次数大于等于 
            
           
             4 
            
           
             的四驱车数 
            
           
          
          
          
          
            (3) 
           
          
         
        
       
         f_3 = 序列孤立的四驱车数+连放次数大于等于4的四驱车数 \tag{3} 
        
       
     f3=序列孤立的四驱车数+连放次数大于等于4的四驱车数(3)
 :::
::: block-2
订单总完工时间
- 焊装一辆车需要 80s,此外焊装设备有个最小使用时间 30min/次。若在 30min 中内发生设备切换,则需要等到第 30min 才可切换;若连续使用 30min 后 发生切换,只需要考虑焊装时间即可。
- 涂装一辆车分为涂装车身和车顶, 分别耗时 40s,清洗喷头耗时 80s。
- 总装车间总装一辆车的耗时 80s,该车间耗时是一个固定值,最终直接加到总完工时间内即可。
订单总完工时间由车辆全部通过焊装车间 
     
      
       
        
        
          t 
         
        
          1 
         
        
       
      
        t_1 
       
      
    t1、涂装车间 
     
      
       
        
        
          t 
         
        
          2 
         
        
       
      
        t_2 
       
      
    t2和总装车间 
     
      
       
        
        
          t 
         
        
          3 
         
        
       
      
        t_3 
       
      
    t3的总时间即序列最后一辆车的总时间。
  
      
       
        
         
          
          
           
            
            
              f 
             
            
              4 
             
            
           
             = 
            
            
            
              t 
             
            
              1 
             
            
           
             + 
            
            
            
              t 
             
            
              2 
             
            
           
             + 
            
            
            
              t 
             
            
              3 
             
            
           
          
          
          
          
            (4) 
           
          
         
        
       
         f_4 = t_1+t_2+t_3 \tag{4} 
        
       
     f4=t1+t2+t3(4)
对 
     
      
       
        
        
          f 
         
        
          4 
         
        
       
      
        f_4 
       
      
    f4的思考,对于同一批车辆,焊装、涂装和总装耗时是固定的,不同点在于焊装车间的设备切换时间和涂装车间的清洗喷头时间。故可对 
     
      
       
        
        
          f 
         
        
          4 
         
        
       
      
        f_4 
       
      
    f4修正为
  
      
       
        
         
          
          
           
            
            
              f 
             
            
              4 
             
            
           
             = 
            
           
             设备切换时间 
            
           
             + 
            
           
             清洗喷头时间 
            
           
          
          
          
          
            (5) 
           
          
         
        
       
         f_4 = 设备切换时间 + 清洗喷头时间 \tag{5} 
        
       
     f4=设备切换时间+清洗喷头时间(5)
 :::
::: block-2
数据预处理
由于目标函数和约束条件未涉及物料编号和发动机,因此仅从车型,车顶颜色,车身颜色,变速器(四驱和二驱)四个维度出发构造距离矩阵,距离矩阵的构造思路如下:
 首先,车型转换最为耗时,则在车型这个纬度设置权重最大并且大于其他三个纬度的权重最大值,即若车辆 
     
      
       
       
         i 
        
       
      
        i 
       
      
    i和车辆 
     
      
       
       
         j 
        
       
      
        j 
       
      
    j的车型不同设置 
     
      
       
        
        
          d 
         
         
         
           i 
          
         
           j 
          
         
        
       
         = 
        
       
         10 
        
       
      
        d_{ij} = 10 
       
      
    dij=10,否则 
     
      
       
        
        
          d 
         
         
         
           i 
          
         
           j 
          
         
        
       
         = 
        
       
         0 
        
       
      
        d_{ij}=0 
       
      
    dij=0。其次,若车辆 
     
      
       
       
         i 
        
       
      
        i 
       
      
    i的车身颜色和车辆 
     
      
       
       
         j 
        
       
      
        j 
       
      
    j的车顶颜色不同,则需要清洗喷头增加耗时,因此设置在这种情形下 
     
      
       
        
        
          d 
         
         
         
           i 
          
         
           j 
          
         
        
       
         = 
        
        
        
          d 
         
         
         
           i 
          
         
           j 
          
         
        
       
         + 
        
       
         5 
        
       
      
        d_{ij}= d_{ij} + 5 
       
      
    dij=dij+5;若车辆 
     
      
       
       
         i 
        
       
      
        i 
       
      
    i和车辆 
     
      
       
       
         j 
        
       
      
        j 
       
      
    j的车身颜色不同,则会导致车辆颜色连续的中断,因此设置在这种情形下 
     
      
       
        
        
          d 
         
         
         
           i 
          
         
           j 
          
         
        
       
         = 
        
        
        
          d 
         
         
         
           i 
          
         
           j 
          
         
        
       
         + 
        
       
         1 
        
       
      
        d_{ij} = d_{ij} + 1 
       
      
    dij=dij+1。最后,考虑到四驱车的硬性约束,将车辆 
     
      
       
       
         j 
        
       
      
        j 
       
      
    j的变速器类型为四驱车的 
     
      
       
        
        
          d 
         
         
         
           i 
          
         
           j 
          
         
        
       
      
        d_{ij} 
       
      
    dij+0.5,距离矩阵的设计可使得同色车辆连续(保障 
     
      
       
        
        
          f 
         
        
          2 
         
        
       
      
        f_2 
       
      
    f2尽可能的小)。
 :::
::: block-2
算法
Step1:将批次车辆按车型分组(在最小化 f 1 f_1 f1的基础上尽可能使得 f 2 f_2 f2、 f 3 f_3 f3、 f 4 f_4 f4小);
Step2:遍历分组,随机选择组内第一辆车,然后根据距离矩阵进行推进(在推进过程中,加入四驱车连续的约束)得到组内排序。
Step3:对组内排序进行优化,优化方式a:12->22->22->22->22->22(减少清洗喷头次数,可以在不影响 f 2 f_2 f2的前提下减小 f 4 f_4 f4),优化方式b:22->22->22->22->21(进一步减少清洗喷头次数从而降低 f 4 f_4 f4,但这会使得 f 2 f_2 f2增大),不同的数字表示颜色,如12表示车顶颜色为1,车身颜色为2。
Step4:对序列四驱车进行修正,保证四驱车连续2~3次(只有它是硬性约束)。
 :::
github代码链接
 欢迎关注微信公众号
 



















