课堂上绕不开的那个坑
之前布置课程设计,需求是做适配小型机加工车间的调度系统,学生们上来就把排程做的漂漂亮亮,甘特图画的比教科书还规整,一到联动环节直接崩。
什么是联动?就是某台铣床突然崩刀、插进来一个急单、物料晚到四个小时,原来的整张排程能不能自动跟着调整,而不是要人一笔一笔改。绝大多数学生做的都是静态排程,把排程和调度切成两个完全没关系的模块——排程是月初做计划,调度是出了问题再救火,完全没懂为什么要叫联动。
去年有个学生,做出来的排程把三台铣床的利用率拉到92%,各种指标都好看,我就问了他一个问题:一号铣床要停四个小时换刀,你这个排程怎么改?他盯着屏幕愣了二十分钟,说,那我手工调一下顺序就行呗。
手工调,那还要系统干嘛?对吧。

我之前备课也偷懒,只把概念念一遍,放个工厂的宣传视频就完事,没把那个“动起来”的感觉给学生递到手里。学生没见过实际车间调度怎么干活,当然只会做死的计划。
删出来的核心逻辑
一开始我总想着,要做就做全功能的,把设备维护、物料配送、人员调休所有约束全加上,美其名曰贴近工业实际。结果呢,学生一半时间花在做界面堆功能,核心联动逻辑全是写死的假判断,跑起来一动就错。
去年放完暑假我重新改大纲,咬咬牙砍了大半需求。什么花哨功能都能砍,只有一句话不能动:排程结果自动触发调度调整,调度约束反写更新排程。留一个最简单的场景:三台设备,两种订单,只测两个触发条件——急单插入、设备故障,能跑通联动逻辑就算过,不用做全功能,不用美化界面。
说实话我当时也捏着一把汗,怕别人说我降低要求放水。结果第一次试上,就有个小组做出来了:急单一插进去,原来排好的常规单自动往后挪,系统自动把能拆分的工序分到其他两台有空余的设备,物料的配送时间也跟着排程自动更新,不用人点一下刷新改数据。看完我差点鼓掌,这才叫做对了。

不过话说回来,砍需求真不是放水。是把学生的精力从堆参数拼功能,拽回来啃最核心的逻辑。之前学生花一周调按钮颜色,核心逻辑全是糊弄,现在没功夫搞花架子,只能盯着那点联动逻辑死磕,反而容易出东西。
比功能更重要的认知

教了十年机械设计,我越来越觉得,课程设计教的从来不是怎么做一个东西,是教认知。
之前我也觉得,排程就是做个完美的计划给车间照着干。等我去合作工厂待了一周才发现,哪有什么一成不变的计划?调度员从早到晚改排程,改完上午的改下午的,改完下午的改第二天的,计划永远追不上变化。
学生出了校门,一进车间看到乱糟糟的实际生产,就说学校学的排程没用,根源在哪?我们之前教的就是静态排程,没教过“联动”——计划和变化要联动,设备和物料要联动,排程和调度本身就是一件事,不是两件。
现在我开这个设计题之前,先带学生去实训车间蹲一上午,看调度员改三次计划,学生看完就懂了,原来做系统不是做一张完美的死表,是做一个能跟着变化走的活东西。
有人说现在AI排程都普及了,还让学生自己做原型干嘛?哦,AI是要人调的,你自己都没搞懂联动的逻辑是什么,你怎么判断AI排出来的结果对不对?出了问题你怎么改参数?对吧。
上周有个毕业两年的学生回来找我吃饭,说他现在在商用车车间做生产调度,刚去的时候领导让改排程,同来的新人全是手动挪甘特图,他把上学时候做的那个小原型改了改,输入约束十几秒就出调整后的结果,领导当场就记住他了。我听了挺开心的,这就是课程设计该有的样子——不是为了交作业拿分数,是真能帮你解决工作里的问题。
做教学其实就是这么回事,年年教,年年磨,一个核心点没点透,就坑一届学生。能把那个藏在概念背后的逻辑给学生挖出来,摆到面前让他自己摸一遍,比讲十节课都有用。