玲珑阁
返回 · 书籍

第 123 章

第123章 弹道优化

拒绝认亲,真少爷走上顶峰 · 清源公子 · 3288 字


钱瑾姝把燃料消耗的积分形式重新推导了一遍,用指数函数的复合形式构造了一个光滑逼近函数,误差控制在千分之一以内,计算量只增加了不到百分之五。

张辰同时修改内点法的主循环,把约束条件的雅可比矩阵计算优化了一下,去掉了一个冗余的循环。

两个小时后,两边的改动都完成了。张辰把代码合并,跑了一组简单测试。程序运行正常,收敛到可行解,但目标函数值比预期高了百分之三。

“精度不够。”张辰盯着输出结果,“千分之一的逼近误差不应该导致百分之三的偏差。”

他重新看了钱瑾姝的光滑逼近推导,翻了五分钟,找到问题了。

“逼近函数的定义域没卡紧。边界附近的值被过度光滑了,导致目标函数在可行域边界上被低估。”张辰在推导的最后一页指了指,“这里加一个截断,把边界附近的区域单独处理。”

钱瑾姝凑过来看了一会儿,没说话,拿起笔在纸上改了几行。

张辰把新公式输入代码,重新编译运行。这次偏差降到了百分之零点八。

“可以了。”张辰道。

接下来两天,两个人都在打磨细节。

张辰把约束条件的处理流程重新梳理了一遍,二十多项约束按重要程度排序,把最紧的几条放在最前面。

钱瑾姝同时做初始点选取策略——内点法对初始点敏感,选不好会收敛到不可行域。她用了一种启发式方法,从几十个随机初始点里筛选出最优的一个,稳是稳了,但计算量大。

张辰看了她的实现,觉得可以优化,“随机筛选太慢。直接用问题的物理特性定一个初始点,比如把弹道近似成抛物线,解析解做初值。”

钱瑾姝犹豫了一下,还是照做了。新方法比随机筛选快了十倍,而且收敛率更高。

两天后的下午,算法框架终于搭完。张辰写了内点法的主循环,钱瑾姝实现了约束条件的处理和初始点选取。两人坐在一起,准备跑第一个全流程测试用例。

程序跑起来了,进度条一格一格地走。张辰盯着屏幕,手指在桌上轻轻敲了两下。钱瑾姝没说话,眼睛也没离开屏幕。

跑了不到一半,程序报错——雅可比矩阵奇异。

张辰皱了皱眉,他把错误信息看了两遍,又翻出约束条件的梯度代码,一行一行地过。过了五六分钟,他停在一行代码前。

“这里错了~~”张辰指着屏幕,“约束条件的梯度符号写反了。应该是负的,我写成了正。”

钱瑾姝凑过来看,愣了一秒,“还真是。难怪奇异,符号反了导致矩阵的行列式接近零。”

张辰改过来,重新编译运行。这次没有再报错,程序顺利地跑到了最后。

第一个测试用例收敛,目标函数值比现有方案低了百分之七。

第二个用例,低了百分之九。

第三个用例,低了百分之十二。

“可以。”张辰靠在椅背上。

钱瑾姝把三组结果的数据整理成表格,和现有方案做了个对比图。差距很明显,尤其是第三个用例,内点法的收敛轨迹比序列二次规划平滑得多,没有震荡。

张辰把结果整理成报告,发给了周明。邮件里附了对比曲线和收敛性分析,备注里写了一句话:“弹道优化初版已完成,建议集成测试。”

半小时后,周明回了邮件。只有两个字:“不错。”

弹道优化模块的初版,从接到任务到跑通,用了五天。比判据模块多了一倍,但问题的复杂度是之前的两倍。

张辰把代码提交到版本库,注释里写了改动说明。钱瑾姝在旁边把草稿纸整理好,用夹子夹住,放进帆布包。

“接下来等周哥安排。”张辰道。

“嗯。”

弹道优化模块跑通后的第三天,周明通知张辰和钱瑾姝准备内部汇报。

“总师要听。”周明站在办公室门口,“你们俩谁讲?”

张辰看了钱瑾姝一眼,“一人一半。建模部分她讲,算法部分我讲。”

周明点了点头,转身走了。

接下来两天,两个人都在准备汇报材料。

钱瑾姝把建模推导精简到六页,重点突出约束条件分类和目标函数的光滑化处理。

张辰做了对比曲线图,把内点法和原有方案的收敛轨迹画在一张图上,差异一目了然。

汇报安排在周五上午。

会议室不大,坐了十来个人。总师坐在长条桌的中间位置,周明坐在他旁边,其他几个项目组的工程师散坐在两边。

钱瑾姝先讲。她站起来,走到投影幕前,把建模的框架过了一遍。语速不快,每一页PPT停留的时间刚好够人看完。讲到不光滑目标函数的光滑逼近时,总师打断了一下。

“误差多少?”

“千分之八。”钱瑾姝道,“张辰后来做了截断修正,从千分之三降下来的。”

总师没再问,示意她继续。

钱瑾姝讲完坐下,张辰站起来。他把内点法的选型依据讲了一遍——序列二次规划快但对初值敏感,遗传算法全局性好但太慢,内点法折中,适合这个问题的规模和非线性程度。

讲到约束条件处理顺序时,他在白板上画了一个示意图。左边是原来的流程,右边是修改后的流程,箭头走向一目了然。

“顺序调换之后,收敛速度提升了近三倍。”张辰把对比曲线图调出来,“但局部的收敛问题还在,所以加了目标函数的光滑逼近。”

总师盯着曲线图看了几秒,“现在收敛到全局解的概率?”

“百分之九十五以上。剩下的百分之五,初始点选取策略会重新初始化,二次收敛。”

会议室安静了几秒。总师靠在椅背上,没说话。

周明开口问道:“集成测试的数据呢?”

张辰翻到下一页PPT,把三组标准算例的结果列出来。目标函数值比现有方案分别低了百分之七、百分之九、百分之十二,计算时间缩短了百分之四十,收敛率从百分之七十二提高到百分之九十六。

“判据模块那边也是类似的数据。”周明补了一句。

总师站起来,走到白板前,把张辰画的那张流程示意图又看了一遍。他拿起笔,在箭头旁边加了一个批注——把“边界约束”三个字圈了起来。

“后续的优化模块,统一用这个处理顺序。”总师放下笔,转过身看着张辰和钱瑾姝,“你们两个,下周开始跟总体组对接。弹道优化和判据模块要嵌进全流程。”

他说完就走了。会议室里的人陆续散开。周明走过来,拍了拍张辰的肩膀。

“总体组那边我已经打好招呼了,周一直接过去找王总工。”

张辰点了点头。钱瑾姝在旁边收拾投影仪和笔记本电脑,动作很快,但没有声音。

从会议室出来,走廊里已经没什么人了。两个人并排走在走廊里,谁都没说话。

回到办公室,张辰把汇报用的PPT和材料打包归档。

钱瑾姝打开笔记本,在之前那行“周五,判据定型”下面又写了一行——“周五,弹道优化汇报通过。”

然后合上笔记本,放进帆布包。

“下午去我爷爷那儿,别忘了。”她站起来。

“忘不了。”

两个人收拾好东西,下楼。老刘的车停在门口,他们拉开车门,并排坐进后座。

下午两点,到了钱瑾姝家。

钱文忠已经在书房等着了。他看了张辰一眼,把桌上的老花镜戴上。

“听说你们上午汇报了?”

“嗯。总师通过了。”张辰道。

钱文忠点了点头,没多问,“今天讲随机最优控制。前面的基础你们已经够用了,直接进主题。”

他从书架上抽出一本更旧的讲义,翻开第一页。张辰和钱瑾姝在对面坐下,打开笔记本。

“导弹在飞行中会受各种随机扰动影响,大气密度变化、推力偏差、初始条件误差,这些都会影响落点精度。随机最优控制要解决的问题就是——在随机扰动存在的情况下,设计控制律使落点散布最小。”

钱文忠在黑板上写下了第一个方程。张辰盯着那行公式,脑子里在跟之前学过的确定性最优控制做对比。

多了几个项——随机过程的协方差矩阵、噪声的统计特性、代价函数的期望值。

整个下午都在讲这套东西。钱文忠讲得不快,但每句话信息量都很大。张辰记了六页笔记。

讲到最后一页,钱文忠停下来,看了一眼墙上的钟。

“今天就到这儿。回去把我讲的内容消化一下,下周带来问题。”

张辰合上笔记本,站起来,“谢谢钱爷爷。”

钱文忠摆了摆手。

从书房出来,天已经暗了。张辰和钱瑾姝在门口道别,老刘的车等在门外。

张辰拉开车门坐进后座,回头看了一眼。钱瑾姝已经转身进了院子,门廊的灯亮着,她的影子被拉得很长。

老刘发动车子,驶出胡同,往赵家老宅开。

张辰靠着车窗,没说话。路灯一盏一盏地从车窗外滑过去,光影忽明忽暗地落在他脸上。

到家的时候,赵老夫人正从厨房端菜出来。看到他,上下打量了一眼,“回来了,快洗手吃饭,就等你了!”。

“好的,外婆!”,张辰笑道。

张辰换了鞋去洗手,饭桌上,两老一下边吃边聊。

吃完饭,张辰帮赵老夫人收了碗,回了房间。他坐到书桌前,打开台灯,把今天下午钱老讲的随机最优控制笔记重新整理了一遍,方才关灯睡觉。

— 本章完 —