第52章 编程?我自学的啊
    三个人下意识地让出了位置。

    不是刻意的客气,而是一种本能反应。

    就好象一场手术台上争论不休的实习医生,看到主刀大夫推门进来,身体自动往两边撤。

    尽管他们很清楚,陆丰是机械专业的。

    但就是莫明其妙的对他就是信任,是因为之前陆丰对数学的绝对理解吗,貌似不是,就是对他这个人信任。

    陆丰弯腰看了一眼屏幕。

    红色的报错信息刷了满屏,密密麻麻的英文堆栈在一起,象一份催命的判决书,直接宣判了王哲他们的结果。

    但在他眼里,这些东西的辨识度还不如食堂门口的菜单复杂。

    “IndexError: trix dinsion stch at line 247.”

    陆丰的视线顺着报错信息往上追朔,在代码编辑器里快速翻动。

    第218行,约束矩阵的定义。

    第233行,变量的索引赋值。

    第247行,矩阵乘法。

    原来如此。

    他没有说话,也没有解释,直接拉开椅子坐了下去。

    双手落在键盘上。

    “嗒嗒嗒嗒—”

    一连串密集到几乎不间断的敲击声骤然爆发,在安静的机房里清脆异常。

    那节奏快到不象是在写代码,更象是在弹一首钢琴曲。

    野蜂飞舞,手速极快。

    王哲刚张了张嘴,想说一句“我给你讲一下代码结构”,话还没出口,就被眼前的画面彻底堵了回去。

    他看见陆丰的手指在键盘上飞速移动,光标精准地跳到第218行,选中一整段矩阵定义代码,删掉。

    重新敲入。

    三行代码,替换了原来的十二行。

    然后光标又跳到第233行。

    这一次陆丰甚至没有逐行修改,而是直接把整个for循环砍掉,换成了一行Nuy的矢量化操作。

    王哲的瞳孔猛地收缩。

    他是计算机学院编程竞赛拿过省二等奖的人,对代码的优劣有着极其敏锐的判断力。陆丰刚才那一手,不是简单的修Bug,而是在重构。

    他把一个低效的、嵌套了三层循环的矩阵运算,用一行矢量化语句直接替代了。

    这需要对Nuy底层的广播机制有极其深入的理解,同时还要精确掌握线性代数中矩阵维度的变换规则。

    关键是太快。

    从坐下到现在,不到一分钟。

    王哲下意识地看了一眼自己的手,那双经过了三年编程训练、自认为手速不慢的手。

    手速太快这是对键盘多么了解才能做到如此速度。

    此刻它们正老老实实地垂在身体两侧,一动不动。

    跟人家比起来,他这手速连上桌的资格都没有。

    他们现在就配做一个背景板。

    敲击声还在继续。。

    接着又往下翻了几行,在规划模型的目标函数定义处停住。

    他皱了皱眉。

    “这里的符号写反了,最小化问题你们用的是xize,求解器方向错了。”

    他把xize改成nize,顺手在下面的约束条件里补了一个非负约束。

    然后按下了运行键。

    绿色的进度条闪了一下。

    屏幕刷新。

    一组整整齐齐的最优解数据,出现在输出窗口里。

    三条生产线的最优排程方案,每条线开机的温度区间、湿度阈值、设备轮换周期,全部以表格的形式呈列。

    底部还自动生成了一张折线图,显示优化前后次品率的对比曲线。

    从第一行红色报错到最终结果输出。

    两分半钟。

    李浩盯着屏幕上那组干净漂亮的输出数据,大脑一片空白。

    他是编程组的组长,MATLAB和Python都用了三年。

    刚才那个矩阵维度错配的问题,他和王哲、刘宇三个人讨论了将近二十分钟,从索引检查到类型转换试了个遍,愣是没搞定。

    结果人家过来,两分半钟,连改带调,直接出结果。

    而且修完的代码量,只有他们原来的三分之一。

    刘宇推了推眼镜,喉咙动了一下。他把身体凑到屏幕前,在陆丰改过的那几行代码上来回看了三遍。

    “矢量化广播……动态索引切片……”他的声音有些干涩,“这写法,ACM竞赛的金牌选手也不过如此了。”

    陆丰从椅子上站起来,活动了一下手腕。

    “问题出在两个地方。”

    他走到旁边的白板前,拿

本章未完,请点击下一页继续阅读>>