我用 TraeCode 把列车动力学计算和辅助驾驶系统,做成了能跑的系统

做列车辅助驾驶,核心是两件事,一是算得准,二是算完能用。算,指的是列车在长大坡道、曲线上的纵向动力学,包括牵引力、制动力和最关键的车钩力分布,编组越长,运行中的纵向冲动就越要小心,这直接关系到行车安全和货物安全。用,指的是把这些计算落成一份能看的辅助驾驶建议,告诉司机或系统在什么区段该惰行、巡航还是制动。开学季我重新起步,就是想用相对省事的方式,把这套"计算 + 策略 + 可视化"的链路完整跑通,而不是像以前那样陷在每一步的环境和报错里。

为什么这件事对我重要

我是轨道交通装备行业的研发工程师,同时也是卓越工程师计划"读的工程博士。平时既写核心的仿真与求解程序,也要做策略研究和数据分析。这件事对我重要,是因为重载列车跑得稳不稳,很大程度就取决于动力学算得够不够细、辅助建议给得够不够及时。可这套系统涉及的环节很杂——底层有数值求解,数据层要做单位换算和状态判断,上层还要一个能看的监控界面。新学期时间紧,我特别需要一个能陪我把这些拆开、一步一步落下来的工具。

我是怎么把 TraeCode 慢慢用顺的

最开始的阻力是环境。换了台机器后,既有求解器要用 C++ 编译,数据分析想用 Python,还有一套可视化前端,三套互相咬着。我一开始把"环境不会配"当成自己的短板,后来学乖了:直接告诉 TraeCode 我的系统、编译器和目标程序,让它一步步带我装,它会把每个依赖按顺序讲清楚,而不是甩一段报错让我自己猜。

真正让我觉得原来这样用更顺的转折点,是它帮我治好报错的时候。卡得最久的一次,是动力学求解器在高负载工况下收敛失败,一路报 NaN 和索引越界。以前这种错我两眼一黑。现在我把整段报错连同上下文一起丢进去,它先帮我把报错翻译成人话,再带着我逐层看,最后找到的根子其实是单位没对齐,一个参数从 km/h 算成了 m/s。这种把一个大问题拆成几小步、每步都有反馈的做法,让我慢慢摸到了问它的节奏,先讲清楚目标,再给足上下文,卡住时把当前输出原样给它,而不是问一句这怎么不对。

到了策略逻辑部分,辅助驾驶的状态机一开始很绕,提速、巡航、惰行、制动之间边界条件一堆。我没让它一口气写,而是把需求拆成一个个状态、一段段规则喂给它,它帮我补了边界判断,还把状态切换的顺序理清楚。到这一步我发现,TraeCode 最顺的用法不是我提要求它交成品,而是我把它当成一个能随时把话接下去的搭子,我描述场景,它追问细节、给中间方案,我们一起把问题想清楚再动手。

我想给后来的人留一句建议

最后我把这套东西跑通了,动力学计算能算、辅助驾驶建议能出、监控界面能看,我还可以在界面上滑参数、看不同编组和坡道下的响应。它确实帮我省下了配环境、排报错和拆需求的大量时间,让我能把精力放到真正难的动力学建模上。对后来的人,我的建议是,别把它当成自动写代码的机器,而是当成一个能把问题说清楚、能陪你清理每一道坎的搭子,上手第一步,永远是先把你的机器、你的报错、你到底想做什么,原原本本讲给它听。

1 个赞

希望能够和大家一起交流、学习、共同成长

1 个赞

这是这的把TraeCode用来赋能自己的科研了

1 个赞

是的,用Trae赋能科研,构建科研新范式

2 个赞