返回

第一卷 少年游 第五十六章盲点

首页
关灯
护眼
字:
大
中
小
上一章 回目录 下一页 进书架
    第一卷 少年游 第五十六章盲点 (第1/2页)

    一个小时以后,原既白没有找到。

    这件事起初只是让他有一点烦躁。问题明明已经比刚才更清楚:不是在一张静态课表上减少冲突,而是在教师请假、场地临时失效、课程调整不断发生的情况下,让整个排课系统仍然能够快速恢复。按照他过去的经验,只要再往上一层,把“课表”看成一个不断变化的约束系统,把每一次临时事件看成局部扰动,理论上应该存在一种更统一的描述。于是他重新画图,把时间、教师、课程、教室分别变成变量,又尝试把“调整代价”定义出来,希望找到一个既能生成初始课表、又能在局部变化时最小修改的结构。纸换了三张,符号越来越漂亮,真正能交给教务老师使用的东西却越来越远。

    唐岑最先察觉不对。她原本跟着原既白整理约束,二十分钟以后已经开始不断看表,最后把笔往桌上一放,问现在距离展示还有多久。林沛看了一眼手机,说四十六分钟。唐岑没有批评谁,只问如果现在有个老师突然请假,他们这套东西能不能告诉教务处下一步先做什么。原既白说模型还差一点,等目标函数和约束关系稳定以后,可以直接求新的最优解。林沛坐在对面听了一会儿,忽然问:“求多久?”原既白停了一下,因为这个问题他确实没有算过。林沛又问,如果学校没有求解器,教务老师是不是要等他们先装一套软件。唐岑看了两个人一眼,起身把最初那张题目重新贴到白板上,说:“我们先保证四十分钟以后有东西能讲。”

    原既白并不认为她说错,可身体里还是升起一种不舒服。他很少在一个问题上走到这里以后被迫退回去,尤其是那种“高处已经隐约在那里,只差最后一步”的感觉太熟悉了。他甚至觉得,如果现在再给自己半小时,那个结构就会出来。林沛却已经拿笔在白板上写了三个最简单的动作:先锁定不能动的课;再寻找同年级、同课程可互换的位置;如果仍然冲突,优先调整对连续教学影响最小的课程。下面又补了一行——每一次调整最多影响几节课,要有上限。

    “这不就是人工规则?”原既白问。

    林沛点头:“对。”

    “那遇到复杂情况还是会崩。”

    “可能。”

    “也不能保证最优。”

    “不能。”

    原既白看着白板,有一点难以接受。“那这算什么方案?”

    林沛没有马上回嘴。他把刚才从教务老师那里问来的几张便签排在桌上,其中一张写着“临时请假一般上午七点以后才知道”,另一张写着“教务员通常只有二十分钟调整”。过了一会儿,他才说:“算一个今天两小时内能做出来、明天教务老师真能试的方案。最优以后再说。”

    房间里安静了一下。

    原既白第一次很清楚地感觉到,这不是“不同方法各有优劣”那么简单。他的模型在理论上当然更完整,甚至如果真做成,长期一定比几条人工规则更有价值;但此时此刻,距离展示只剩四十分钟,它还不能运行。林沛那几条看上去粗糙得甚至有点难看的规则,却已经可以拿去问教务老师:这种顺序有没有用,哪些地方会失效。一个小时以前,原既白还觉得访谈是在浪费时间,现在真正浪费掉最多时间的人反而是自己。

    唐岑没有给他们继续争的机会。她把任务拆成三块:林沛去补教务现场反馈,她自己把已有规则画成流程,原既白负责把“人工规则为什么会失效”和“未来怎样升级成更系统的方法”整理出来。原既白听到最后一项时,心里更不舒服,因为这几乎等于承认自己从主方案退成了补充说明。他想说再给二十分钟,也许能把动态模型至少做出一个简化版本,可抬头看见墙上的倒计时,最终什么都没说。

    二十分钟后,他们第一次拿着那套粗糙规则去找教务老师。老师看了一遍,第一句话就是:“这个第二步不行。”原因很简单:同年级同课程并不意味着老师可以互换,因为有的班进度快两节,有的慢一节,临时换老师反而容易出问题。林沛立刻把“同课程互换”改成“优先同教师跨班调整”,唐岑问这种调整最常见的代价是什么,老师说是两门课互相挪位置以后,可能把某个老师一天压成连续五节。三个人又回去修改。原既白站在一旁,看着一条规则在十分钟里被现实推翻、改掉,再拿回来重新测试,心里忽然出现一种奇怪的感觉:这套东西没有高层结构,甚至可以说相当笨,可它在动。

    距离展示十三分钟时,林沛又发现一个漏洞:如果临时请假的正好是毕业班主课老师,所谓“最小调整”未必是最重要目标,因为学校可能宁愿多动几节副科,也要优先保住毕业班课程。于是他们又把优先级加进去。原既白这时终于插手,把散乱规则重新整理成一个层级结构:先确定不可违反的硬约束,再按照学校自己给出的优先级处理软约束,最后在剩余可行方案里最小化改动。林沛看完以后立刻说这个有用,唐岑也把流程图重画了一遍。原既白第一次在这两个小时里真正感到顺了一点,却同时意识到一件让他更加不舒服的事——这个高层结构不是他一开始“想出来”的,是在几十分钟的现场修补以后才从下面长出来的。

    展示开始时,他们小组抽到第三。

    第一组做校园食堂排队,第二组研究实验室预约,都有完整数据。轮到原既白他们时,唐岑先讲场景,没有从模型开始,而是直接放出一张“早上七点四十分,老师临时请假”的模拟通知,然后问台下,如果你只有二十分钟重新排课,第一步会做什么。几个人很快给出不同答案,有人说找代课,有人说换课,有人说整班自习。唐岑这才把他们问来的真实限制一条条放出来:场馆临时失效、实验室维护、教师接送孩子、毕业班优先、不同班级进度差异。原来题目给出的数据只是地图的一部分,真正的地形要走进去才知道。

    林沛负责讲那套“难看”的规则。他没有包装成算法,只说这是一套他们一个多小时内不断被教务老师驳回、重新修改出来的临时决策流程。台下有人立刻问为什么不直接做优化模型,林沛看了一眼原既白,把话递给他。

    原既白站起来时,有半秒钟很想从自己最初那张网络图开始讲。

    最后没有。

    他说他们一开始确实这么做,而且自己尤其相信应该先建立统一模型,把静态排课和动态调整一起解决。可是两个小时不够,真实学校的约束又比题目给出的多得多。与其提交一个结构漂亮却没验证过的“最优模型”,他们最后决定先建立可用规则,再把这些规则逐步抽象成硬约束、软约束和调整代价。以后如果真做系统,可以在这个基础上进入约束优化,而不是一开始就假设自己已经知道所有约束。

    评委席上一个老师问:“所以你认为第一版的模型错了吗?”

    原既白停了一下。

    “不

    (本章未完,请点击下一页继续阅读)
上一章 回目录 下一页 存书签