第31章 深夜机房 晨光同行

夜风从计算中心的通风口灌进来,吹动了桌上那张未收起的打印纸。纸页边缘微微颤动,像一片将落未落的叶子。杨雨薇站在机房门口,手还搭在门把上,刚才那一阵冷风让她下意识裹紧了外套。她刚回到宿舍不到二十分钟,洗了把脸,正准备躺下,手机却震动起来。

是系统提醒:竞赛平台将于明日十点整关闭提交通道。

她盯着屏幕看了几秒,转身又走出了宿舍楼。

路灯把她的影子拉得很长,脚步踩在水泥路上发出轻微的回响。她没打伞,也没戴帽子,头发被风吹得有些凌乱。回到307机房时,灯还亮着——那是她离开前没关的应急照明。电脑屏幕黑着,但U盘仍插在主机上,红灯微闪。

她轻轻坐下,手指在键盘上轻敲,重新打开了程序界面。最后一次测试的数据记录安静地躺在那里,模型运行稳定,误差率也达标,可她的眉头却微微皱起,总觉得哪里不太对劲。鼠标如同灵动的精灵,滑到参数设置模块,她熟练地调出极端输入条件下的三组仿真结果。曲线起初如平静的湖面般平滑,但在第四个时间节点,却突然泛起了一丝涟漪,出现小幅震荡,随后又迅速恢复平静。若不是她目光如炬,仔细比对,几乎难以察觉。可这小小的波动,却如同隐藏在平静湖面下的暗流,意味着在真实场景中,一旦外部干扰剧烈变化,预测就会像偏离航线的船只一样失准。她急忙翻出原始推导笔记,如同一位考古学家寻找珍贵的文物,对照代码逻辑一行行仔细检查。终于,她发现问题的根源不在计算过程,而在结构本身。滑动窗口机制就像一位固执的守卫,依赖固定步长采样,无法动态响应非线性扰动。现有的权重分配方式也过于僵硬,就像用一把直尺去量弯曲的河岸,根本无法精准匹配。她尝试了两种调整方案,如同在黑暗中摸索前行,第一次修改后程序直接报错,仿佛在向她发出抗议;第二次虽然能跑通,但拟合度反而下降,让她有些沮丧。

她靠在椅背上,闭眼几秒,再睁开时,手指已在键盘上敲下一条消息。通讯群组里,头像一个都没亮。她没指望立刻回复,只是把问题说清楚:“模型能运行,但在强干扰条件下输出有抖动。我怀疑是滑动窗口的响应机制不够灵活,想试试引入动态权重函数,但不知道怎么设计才合理。”

发完,她继续翻资料,打开数学建模数据库,输入关键词“非线性扰动权重调节”。检索结果跳出几十篇论文,标题都很陌生。她点开一篇英文摘要,读到一半发现方向不符,又退回。

手机震了一下。

是高兰芝回的:“你在机房?”

她回:“嗯。还没睡。”

“等我一会儿。”高兰芝说,“我去图书馆查点东西。”

杨雨薇没拦她。她知道高兰芝不是冲动的人,既然说了要来,就一定有用处。

她转头继续看文献,忽然看到一条引用注释:《社会系统建模中的噪声过滤方法》,作者是清华大学公共管理学院李教授。这篇论文被多次引用,但她之前没注意。点击下载,页面加载缓慢。等文件终于打开,她快速浏览目录,目光停在第三章:“移动平均结合置信区间修正的动态权重算法”。

这个思路有点意思。

她正准备细读,手机又响了。这次是欧阳娜娜:“你那个增长率变量,是不是可以换个角度看?比如当成边际效用?”

杨雨薇愣了一下。

“我在复习微观经济学。”欧阳娜娜接着说,“当外部冲击太大时,增长会递减甚至反转。你们的模型里有没有考虑这种饱和效应?”

她没回答,而是立刻调出变量定义模块。现有模型中,增长率是一个常系数乘以初始值,没有随环境变化而衰减的设计。如果把这个系数变成可变项,根据干扰强度自动下调,或许就能抑制过度反应。

她记下要点,回了句:“有道理,我试试。”

刚放下手机,门被推开。

赵磊走进来,手里拎着一瓶水,肩上背着书包。“听说你没睡?”他把水放在她桌角,“群里消息看到了。”

“你怎么过来的?”她问。

“就在实验室加了个班。”他拉开椅子坐下,“让我看看代码。”

她把屏幕转向他,指着主循环部分:“这里判断条件太简单,只有上下限阈值,没有异常跳转处理。我想改成多级判断,但怕影响效率。”

赵磊盯着看了几分钟,敲了几行伪代码:“你可以先做个预判层,用轻量级算法快速筛查是否进入极端状态。如果是,就切换到高精度模式;不是,就走常规流程。这样既保证速度,又能应对突发情况。”

她点点头,开始修改结构。

这时,高兰芝的消息来了。她发来一张截图,是那篇论文的核心公式推导页,下面标注了一行字:“他们用滑动窗口加置信带的方式做权重修正,你可以参考这个逻辑,把你的干扰项也套进去试试。”

杨雨薇放大图片,逐行阅读。公式的表达方式和她熟悉的数学语言略有不同,更偏向应用层面,但思路清晰。她试着把其中的权重函数移植到自己的模型中,初步调试后发现确实能缓解震荡。

她把三个建议并列打开:高兰芝的文献方法用于数据预处理层,增强抗噪能力;欧阳娜娜的边际思维用来重构增长率函数,增加衰减机制;赵磊的编程策略优化主循环结构,提升响应效率。

现在的问题是怎么融合。

她新建了一个文档,先把原有模型拆解成五个模块:数据输入、预处理、核心计算、输出控制、可视化。然后分别标注哪些部分可以改进。

预处理模块加入高兰芝提供的移动平均算法,设定双层滤波,第一层粗筛异常点,第二层用置信区间动态调整权重。她在备注里写:“此处参考兰兰建议”。

核心计算部分重写增长率函数,引入外部干扰强度作为自变量,当其超过阈值时,增长率自动衰减。她在旁边注明:“娜娜观点启发”。

主循环结构按赵磊说的,增设预判分支。普通状态下使用低耗能算法,一旦检测到波动超标,立即转入精细计算模式。她复制他给的伪代码框架,转化为实际函数,并在文档中标记:“赵磊代码优化”。

改完之后,她深吸一口气,启动全量测试。

程序运行起来比之前慢了一些,但画面很快显示出新的趋势曲线。她紧盯屏幕,手指悬在键盘上方。前十秒一切正常,第二十秒时,模拟干扰突然加大,曲线微微上扬,但迅速被拉回,波动幅度比原来小了近七成。

她继续观察,连续三次极端输入,模型都能平稳过渡,没有出现明显抖动。

误差率统计结果显示:均值下降至0.83%,低于竞赛要求的1%标准。

她松开握紧的拳头,掌心有些发汗。

抬头看钟,凌晨一点十七分。

她把最终版本打包,命名为“Final_Submission_v3”,上传至竞赛平台。提交成功提示弹出的那一刻,她没有立刻关闭页面,而是反复确认了三次文件完整性、命名规范和校验码匹配情况。

做完这些,她保存本地副本,插入另一支U盘同步备份。两支U盘并排放在桌角,一支贴着“主提交”,一支写着“应急备份”。

她打开通讯群组,输入一句话:“谢谢你们,这份作品是我们一起完成的。”

消息发出去不到十秒,高兰芝就回了:“随时都在。”

紧接着,欧阳娜娜发了个笑脸表情,后面跟了一句:“明天别迟到,早八的课我可不帮你点名。”

赵磊只回了两个字:“搞定。”

她看着屏幕,嘴角轻轻动了一下,没笑出声。手指滑动聊天记录,从第一条求助消息一直翻到现在的回复。短短三个小时里,四个人隔着空间,各自发力,把一块块拼图严丝合缝地嵌进同一个框架里。

她退出群聊,打开日志文档,开始归档本次开发全过程。从问题发现、分析路径、外部支援到最终解决,每一项改动都标注来源。这不是为了交差,而是她心里清楚,一个人走得快,但一群人走得远。

墙上的钟指向一点四十三分。她合上笔记本,拔掉U盘,关掉显示器。机房里只剩下空调运转的声音,轻微而持续。

她站起身,把椅子推回原位,顺手整理了桌上的草稿纸和笔袋。出门前回头看了一眼空荡的房间,灯光已经熄灭,只有应急出口的绿色标识还在亮着。

走廊很安静。她刷卡离开计算中心,夜风比来时更凉了些。校园里几乎没有行人,远处宿舍楼还有几扇窗户亮着灯。

当杨雨薇路过文学院楼下时,目光不经意间扫到公告栏前站着一个人影,如同夜空中一颗闪烁的星星吸引了她的注意。走近一看,原来是高兰芝,她披着一件薄外套,在微风中显得有些单薄,手里紧紧拿着一叠打印资料,仿佛那是她最珍贵的宝贝。杨雨薇快步走上前去,关切地问道:“你怎么还在这儿呀?”高兰芝抬起头,微笑着说:“顺便把论文打印了。”说着,她熟练地把资料夹进文件夹,接着说道:“刚查完数据库,顺手多下了几篇备用,说不定以后能用上呢。”两人并肩走在校园的小路上,脚下的石板路发出轻微的声响,仿佛在诉说着她们的故事。路上,她们没说什么重要的话,只是像往常一样,轻松地聊了两句明天的课表,笑声在夜空中回荡。不知不觉,走到了岔路口,高兰芝停下脚步,温柔地说:“早点休息哦,明天还有课呢。”杨雨薇点点头,回应道:“你也是呀。”高兰芝再次点头,然后转身朝人文学院女生楼走去,她的背影在夜色中渐渐模糊,就像一幅美丽的水墨画,渐渐融进了夜色里。

杨雨薇继续往前。走到理学院宿舍楼下,她摸出学生卡准备刷卡进门,却发现手机又震了一下。

是欧阳娜娜发来的截图,正是她之前手绘的那张趋势图,现在被加上了边框和标题,还存成了PDF格式。附言写着:“留个纪念,说不定以后还能用上。”

她点了保存。

进楼后电梯还没坏,她坐到五楼。走廊灯光柔和,声控灯随着脚步亮起。推开516房门,室友已经睡了,床帘拉着。她轻手轻脚走到自己桌前,把U盘放进笔袋最内层,合上笔记本,最后看了一眼窗外。

主教学楼的灯还亮着,计算机学院的实验区也有几扇窗透出光。她知道,那些灯光下还有人在忙碌,在思考,在尝试突破某个难题。

她脱掉外套挂好,洗漱完毕爬上床。床铺很软,枕头也暖。闭眼前,她把手机调成静音,放在枕边。

屏幕暗下去之前,最后显示的是群聊界面。赵磊刚刚发来一张照片:他的电脑屏幕上是同一份代码文件,编辑时间显示为凌晨一点五十二分。下面有一行字:“刚做了最后一次检查,没问题。”

她没再回复,只是把手机翻过去,屏幕朝下压在枕头边。

被子盖到胸口,呼吸慢慢平稳下来。这一天很长,但她睡得踏实。

而在另一栋楼里,赵磊坐在书桌前,没有关电脑。他把竞赛代码页面留在主屏,副屏开着明天上午的课程PPT。水杯里的茶已经凉了,他没喝完。

他看了一会儿代码,忽然想起什么,打开搜索框,输入“数学建模动态权重实际案例”。页面跳出来十几条结果,他点开第一条,开始阅读。

高兰芝回到宿舍后没有立刻睡觉。她把打印好的资料按顺序钉好,放进抽屉。然后打开台灯,翻开《现代汉语语法研究》的课本,准备预习明天的内容。可看了两页,注意力总往手机上飘。

直到看到杨雨薇那句“谢谢你们”,她才真正放松下来,轻轻呼出一口气。

欧阳娜娜静静地坐在书桌前,仿佛整个世界都与她无关。她专注地把发送过的图表截图小心翼翼地保存进一个新文件夹,如同收藏珍贵的回忆,然后给文件夹命名为“协作记录”,仿佛在给这段经历打上一个美好的标签。接着,她轻轻打开经济模型作业,眼神中透露出坚定和执着,继续写剩下的分析部分。窗外的月光如同银纱一般洒进来,温柔地照在她的笔尖上,仿佛在为她加油鼓劲。宿舍里安静极了,没有人庆祝,也没有人张扬,大家都沉浸在自己的小世界里。他们都明白,这只是一次普通的合作,一次平常的互助,就像夜空中闪烁的星星,虽然渺小,却也能照亮彼此前行的道路。但在这一刻,彼此之间的信任已经悄然加深,如同种子在土壤中生根发芽。杨雨薇躺在床上,眼皮渐渐沉重,意识也逐渐模糊。她仿佛走进了一个美好的梦境,梦见自己站在讲台上,自信地向评委解释模型的设计思路。台下坐着高兰芝、欧阳娜娜和赵磊,他们脸上洋溢着温暖的笑容,不停地笑着点头,眼神坚定而明亮,仿佛在告诉她“你很棒”。梦里没有紧张,也没有孤独,只有满满的温暖和力量。她翻了个身,嘴角带着微笑,睡得更深了,仿佛这一觉能让她忘却所有的疲惫。

清晨,阳光温柔地洒在清华校园内,杨雨薇和队友们走在去计算中心的路上,心情格外舒畅。

杨雨薇拿着修改好的模型报告去找周主任请教,周主任看完报告,颔首称赞:算法扎实,更见同心。

四人相视而笑,无需多言。

真正珍贵的,从不是完美代码,而是深夜相守、跨专业相助、一心同行。

竞赛有终,温暖无期。

前路虽远,并肩可至。