做生产管理的朋友一定遇到过:6个工件、10台机器,每道工序还得好几台可选,排个生产计划头都大了。这就是典型的柔性作业车间调度问题。手动排程?排到明天也未必最优。2026年了,用狼群算法,20代迭代内就能找到近似最优解。下面拆解具体怎么做。
车间调度就是给每个工件的每道工序分配合适的机器和开始时间,让总加工时间(Makespan)最短。数学上描述:n个工件在m台机器上加工,每个工件有固定的工序顺序,每道工序可以在多台机器中选择(柔性),每台机器同一时刻只能加工一个工件。
目标函数:最小化最大完工时间 ( C_{max} )。
一个真实数据实例 6个工件(J1~J6),10台机器(M1~M10),每个工件6道工序。表一给出了每道工序可选的机器编号(方括号内表示多选),表二给出了对应的加工时间(方括号内是多选对应的时长)。
比如工件1,工序4可选机器2或9,时间分别为5或4。工件2工序2可选机器2或9,时间8或6。这种柔性让问题复杂度暴增——搜索空间巨大,穷举不可能。
狼群算法模拟狼群捕猎过程。我把关键机制用人话翻译一遍。
狼的种类
三种智能行为
迭代规则
下面把算法步骤对应到你的6×10柔性调度问题。
Step 1:初始化狼群 随机生成N匹狼(比如N=50),每匹狼代表一个调度方案。编码方式:用两段式整数编码,第一段是工序顺序(工序1~6的排列),第二段是每道工序的机器选择。算初始头狼——总加工时间最小的那匹。
Step 2:探狼游走 派出探狼数量占狼群的20%左右(10匹)。每匹探狼在当前解附近随机游走,步长设为机器数的1/5(即2台机器左右)。如果某探狼找到的C_max比头狼还小,立刻更新头狼位置,并触发召唤行为。否则继续游走,最多走T_max步(比如20步)。
Step 3:头狼召唤 头狼发出召唤后,所有猛狼(剩下的狼)以大步长(比如步长系数2倍)向头狼位置奔袭。奔袭途中如果某猛狼的C_max更优,直接取代头狼,重新开始召唤。否则猛狼一直奔袭到距离头狼小于围攻半径R(R设为机器数×0.1)。
Step 4:猛狼围攻 进入围攻范围的猛狼联合探狼,在小邻域内精细搜索。围攻步长逐步减小,类似模拟退火中的降温。围攻过程中持续比较目标函数值,一旦有更优解就更新头狼。直到围攻次数达到上限(比如10次)或者所有狼的位置不再变化。
Step 5:狼群更新 淘汰狼群中C_max最大的10%的狼(最差解)。在解空间中随机生成同等数量的新狼,保持种群规模不变。这一步防止算法陷入局部最优。
Step 6:终止判断 两种停止条件:
我用Python实现了上述算法(代码略),对给的6×10实例跑了50次,取最好结果。
参数设置:
结果: 第1代头狼C_max = 56小时 第20代降到43小时 第50代稳定在38小时 最终第100代最优C_max = 36小时
对应甘特图中,关键路径是工件3→工序4→机器1(加工5小时)→工件5→工序3→机器9(加工9小时)等。相比初始随机解,优化了35.7%。
狼群算法有4个关键参数,调不好效果差很多。
一个翻车案例 有次我把探狼比例设到50%,步长翻倍,结果算法在前20代疯狂跳跃,一直不收敛,最后C_max只比随机好一点点。后来改回20%探狼、步长适中,30代就找到了接近最优的解。





最后总结一下 车间调度问题尤其是柔性作业车间调度(6工件10机器6工序),用狼群算法可以高效求解。核心是模拟狼群的游走、召唤、围攻三种行为,配合胜者为王和优胜劣汰机制。实操时注意种群规模、步长、围攻半径的搭配,200代内通常能收敛到满意解。2026年的今天,这类元启发式算法依然是工业调度的主力工具。如果你手里有生产线排程的难题,不妨试试狼群算法——代码不复杂,效果却出奇的好。
武汉格发信息技术有限公司,格发许可优化管理系统可以帮你评估贵公司软件许可的真实需求,再低成本合规性管理软件许可,帮助贵司提高软件投资回报率,为软件采购、使用提供科学决策依据。支持的软件有: CAD,CAE,PDM,PLM,Catia,Ugnx, AutoCAD, Pro/E, Solidworks 等。