2022雪浪云-汽车全厂排产优化赛冠军方案分享!

2024-03-08 02:10

本文主要是介绍2022雪浪云-汽车全厂排产优化赛冠军方案分享!,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 Datawhale干货 

竞赛:冠军方案分享,作者:LX

01

赛题背景

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

比赛地址:https://www.xuelangyun.com/#/cdc

后台回复雪浪云,获取冠军方案代码!

4ef830bf3895e372d4672da2dc472a2d.png

赛题需要优化车辆进入生产的顺序,使得车出总装顺序能够满足生产目标(如既定出厂顺序计划、完工时间等),即如何找到使出厂(出总装)车辆顺序符合生产目标的入厂(进焊装)车辆顺序,使得汽车在每个车间的优化目标尽可能小。

本次比赛共有100个数据集,数据量从103至2776条数据,数据如下所示。选手需要设计算法优化该问题,对每个数据集依次进行优化,得出优化后的序列;最终得分为每个数据集的优化序列上传到报名网站计算得出的HV值之和。

7b81819e790d89a27f9fbc0bbf272fe5.png

02

赛题建模

出题方给出了焊接车间、油漆车间、总装车间及总时间四个优化目标的描述,需要选手转化为数学问题进行建模,建模的准确与否决定了线下与线上得分的一致性。以下为每个目标的建模过程:

A

焊接车间

e45f3f13ff2f2f3283baa01f70297d31.png

建模描述:

  • 当车进入焊装车间时,需要根据车型切换设备进行生产,目标 f1 为焊接设备切换次数;

  • 焊装一辆车需要80s,若30min中内发生设备切换需要等到第30min才可切换;若连续使用30min后发生切换,只需要考虑焊装时间即可。

目标f1 的建模非常容易,直接计算切换次数即可,焊接时间建模需要考虑设备切换时间,根据赛题描述,每个切换位置的切换时间与前面连续的车辆数相关,依次计算每个切换位置的切换时间后,与焊接车辆时间相加即可计算焊装车间平均每辆车所需的焊接时间。

73446c89da60288655f7a20d4c8302db.png

B

油漆车间

8d10ece97f7eb9a95ceadf5797ac75a5.png

建模描述:

  • 当车进入涂装车间时,固定5辆车或颜色切换清洗喷头,目标f2为偏向颜色以5的倍数生产;

  • 切换生产涂装一辆车分为涂装车身和车顶,分别耗时40s,清洗喷头耗时80s。喷漆顺序为:先喷车顶再喷车身。若一辆车车顶与车身颜色不同,则认为需要颜色切换,即需要额外清洗喷头,若一辆车车身颜色与下一辆车顶颜色不同,也认为需要颜色切换。相邻两辆车在喷漆过程中若发生了颜色切换就认为颜色不连续。

根据赛题描述,f2 只需考虑车顶颜色与车身颜色连续车辆,油漆车间时间计算需要考虑喷头切换。如下3个case,统计连续喷涂车辆组后即可计算出f2,需要注意的是case2和case3的优劣比较,线上提交后分析得出case3优于case2。

 96b89467e1feb4aec353fed5d5913870.png

C

总装车间

d89bad8aa8107029c814ff41a2d4dc72.png

建模描述:

  • 当车进入总装车间时,f3 目标为四驱车尽量连放但连放次数<4;

  • 总装车间总装一辆车的耗时80s,该车间耗时是一个固定值。

f3 建模对不满足要求的四驱车进行计数即可。

a75eb27fb35658028549314fc6efcef4.png

D

总耗时

064c3e78c1a45cc87d3ae0dc4c1ccec7.png

总耗时f4 为焊接车间、油漆车间、总装车间耗时累加。

03

数据分析

  • 目标f1 f2 存在矛盾,二者不能同时达到最优,如case1车型切换3次但油漆颜色连续性最优,case2车型最优但油漆连续性不好;

  • 焊接设备切换次数少时,焊接耗时也更少;同时油漆喷头切换次数少时,油漆车间的连续性通常也更好;因此 f1, f2f4 有很强的正相关性,即 f1, f2取得较优值时,f4 也较优;

  • f3 理论上和其他目标均不矛盾,在满足其他目标的基础上合理插入四驱车即可;

  • 从case4可以看出车顶为99(石黑色)的车可根据车身颜色插入油漆连续车组前,以减少喷头切换次数;

  • 车顶为7(闪耀黑)&车身为1(探索绿)的车出现时,f2 f4 存在矛盾;如case4油漆颜色连续性好,喷头切换6次,case5油漆颜色连续性差,喷头切换5次。

55b790499ca652fac45ef302273bfeab.png

04

优化算法

算法的思路如下:

  1. 初始采样策略:产生尽可能优秀且多样的初始样本

  2. 进化算法优化:更合理的子代交叉和变异策略

  3. Pareto解集优化:对进化算法优化得到的解集进行优化

A

初始采样策略

8baf4b9bcdf3733f5fa1cb98125584d6.png

每个目标的最优策略如下:

  • f1 最优策略:按顺序先后排列A/B车型

  • f2 最优策略:相同颜色车辆组按5台分组进行排列,车顶为99(石黑色)的车可根据车身颜色插入油漆连续车组前

  • f3 最优策略:四驱车连续2台排列,中间随机插入二驱车

  • f4 最优策略:在保证f1 最优前提下,车顶为7(闪耀黑)&车身1(探索绿)车辆插入车顶车身均为1(探索绿)的油漆连续车辆组中

考虑到f和 f2 存在矛盾,f2 f4 存在矛盾,采用不同的策略组合得到偏好不同且优异的初始解。

816305b5f5551af39c1686c74afb20d2.png

B

优化策略 - 基于NSGA-II的子代交叉策略

6ea650791df4d0ca5ade7ebf510160ab.png

思路:尽可能减少无效的序列选择

方法:根据父代序列在目标f1 , f2 中的子序列组中随机选择一条子序列进行OX交叉

17559325df1df18c48a814a12e499d6c.png

C

优化策略 - 基于NSGA-II的子代变异策略

86e99a9b58e7afbea59d554d0f850ad6.png

思路:在不改变f1 , f2 ,  f4 三个目标的前提下,尽可能进行有效的变异,以改善目标 f3

方法:基于目标 f3 的索引选择方法

6ef2d79be0950c51717900824e0adb9e.png

D

优化策略 - Pareto解集优化

7ce24333740283f45c6b94161a6e41b9.png

思路:对多目标优化产生的Pareto解集序列进行优化,在满足 f1 , f2 ,  f4 不变的约束下,使 f3 最优

方法:利用变异策略对Pareto解集中的每个解进行优化

04

比赛总结

全面的目标建模是模型稳定上分的基础,采用合理的集成初始策略即可获得不错的成绩;而由于存在许多长序列的数据集,基于目标选择合理的进化算法交叉和变异策略也是非常有必要的;最终的pareto解集优化能带微弱提分。

2ad2fe4244edb797c8210fbd31c823d6.png

整理不易,三连

这篇关于2022雪浪云-汽车全厂排产优化赛冠军方案分享!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/785628

相关文章

Java Response返回值的最佳处理方案

《JavaResponse返回值的最佳处理方案》在开发Web应用程序时,我们经常需要通过HTTP请求从服务器获取响应数据,这些数据可以是JSON、XML、甚至是文件,本篇文章将详细解析Java中处理... 目录摘要概述核心问题:关键技术点:源码解析示例 1:使用HttpURLConnection获取Resp

Java实现优雅日期处理的方案详解

《Java实现优雅日期处理的方案详解》在我们的日常工作中,需要经常处理各种格式,各种类似的的日期或者时间,下面我们就来看看如何使用java处理这样的日期问题吧,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言一、日期的坑1.1 日期格式化陷阱1.2 时区转换二、优雅方案的进阶之路2.1 线程安全重构2

MySQL索引的优化之LIKE模糊查询功能实现

《MySQL索引的优化之LIKE模糊查询功能实现》:本文主要介绍MySQL索引的优化之LIKE模糊查询功能实现,本文通过示例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一、前缀匹配优化二、后缀匹配优化三、中间匹配优化四、覆盖索引优化五、减少查询范围六、避免通配符开头七、使用外部搜索引擎八、分

Python通过模块化开发优化代码的技巧分享

《Python通过模块化开发优化代码的技巧分享》模块化开发就是把代码拆成一个个“零件”,该封装封装,该拆分拆分,下面小编就来和大家简单聊聊python如何用模块化开发进行代码优化吧... 目录什么是模块化开发如何拆分代码改进版:拆分成模块让模块更强大:使用 __init__.py你一定会遇到的问题模www.

Java图片压缩三种高效压缩方案详细解析

《Java图片压缩三种高效压缩方案详细解析》图片压缩通常涉及减少图片的尺寸缩放、调整图片的质量(针对JPEG、PNG等)、使用特定的算法来减少图片的数据量等,:本文主要介绍Java图片压缩三种高效... 目录一、基于OpenCV的智能尺寸压缩技术亮点:适用场景:二、JPEG质量参数压缩关键技术:压缩效果对比

SpringBoot首笔交易慢问题排查与优化方案

《SpringBoot首笔交易慢问题排查与优化方案》在我们的微服务项目中,遇到这样的问题:应用启动后,第一笔交易响应耗时高达4、5秒,而后续请求均能在毫秒级完成,这不仅触发监控告警,也极大影响了用户体... 目录问题背景排查步骤1. 日志分析2. 性能工具定位优化方案:提前预热各种资源1. Flowable

SpringBoot3实现Gzip压缩优化的技术指南

《SpringBoot3实现Gzip压缩优化的技术指南》随着Web应用的用户量和数据量增加,网络带宽和页面加载速度逐渐成为瓶颈,为了减少数据传输量,提高用户体验,我们可以使用Gzip压缩HTTP响应,... 目录1、简述2、配置2.1 添加依赖2.2 配置 Gzip 压缩3、服务端应用4、前端应用4.1 N

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

MyBatis 动态 SQL 优化之标签的实战与技巧(常见用法)

《MyBatis动态SQL优化之标签的实战与技巧(常见用法)》本文通过详细的示例和实际应用场景,介绍了如何有效利用这些标签来优化MyBatis配置,提升开发效率,确保SQL的高效执行和安全性,感... 目录动态SQL详解一、动态SQL的核心概念1.1 什么是动态SQL?1.2 动态SQL的优点1.3 动态S

Java进行文件格式校验的方案详解

《Java进行文件格式校验的方案详解》这篇文章主要为大家详细介绍了Java中进行文件格式校验的相关方案,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、背景异常现象原因排查用户的无心之过二、解决方案Magandroidic Number判断主流检测库对比Tika的使用区分zip