实战AI大模型辅助编程:新安江水文模型和SCE-UA优化算法的移植与实现

新安江水文模型与 SCE-UA 优化算法是水文学和水资源管理领域的重要工具,二者结合使用可以有效模拟流域的水文过程并优化模型参数。
新安江水文模型是一种概念性水文模型,主要用于模拟流域的降雨-径流关系。
在网站有更多介绍:http://www.watergis.cn/xinan.htmhttps://www.cnblogs.com/kuaishou/p/13733902.html
SCE-UA(Shuffled Complex Evolution - University of Arizona)是一种全局优化算法,广泛应用于水文模型参数率定。

本文主要记录使用DeepSeek和通义千问大模型, 把新安江水文模型和SCE-UA优化算法的C++程序移植到C#程序的过程。

C++版本是河海大学水文水资源系卢家波博士生开发的,https://github.com/lujiabo98/XAJ-SCEUA

这个程序写得很好,一直想移植到C#版本,方便学习使用。

【水文模型】10 新安江模型C++实现 https://blog.csdn.net/weixin_43012724/article/details/127096422

【PEST++】02 新安江模型参数自动率定 https://blog.csdn.net/weixin_43012724/article/details/103968567

【水文模型】09 新安江模型SCE-UA算法自动率定 https://blog.csdn.net/weixin_43012724/article/details/123183366

其实chatGPT和OpenAI已经出现有一段时间,但是国内访问这些AI网站并不方便,无法进行愉快的体验。

Deepseek 的出现,点燃了2025年国内AI大模型的第一团火,可以说今年是中国AI应用元年,

0)软件环境:Windows 10, Visual Studio 2022

1)从github.com下载C++程序,编译运行一次通过

2)访问 deepseek.com ,把 sceua.h, sceua.cpp 复制过去,注明转换成C#程序

可以看到整个转换过程基本可以,并给出了转换的思路,和人工思考过程基本类似,

当中几个比较长的函数如cce函数,没有给出转换

尝试多次之后,因为deepseek一直提示服务器繁忙,转而使用通义千问大模型,据说内置连接了deepseek大模型

3)通义千问大模型(https://tongyi.aliyun.com/)可以容忍的输入文本似乎没有那么长,但是可以分段输入,转换内容基本正确

C#程序和C++程序类成员变量有些不一样,比如C++加了前缀 m_nXXX, 为了保持一致方便观察,

我加了二个转换限制:变量名不变 逐行转换

4)这次我专门转换比较长的程序 cce() 等,基本转换出来了,还不知道是否有问题,目测可以用

5)经过拆分篇幅,几次分段转换,终于把 sceua.h, sceua.cpp转换成功,当中有几个小错误,修改一下即可

  1. 要检验sce-ua算法是否可以运行,还需要移植新安江程序,SCEUA程序内部已经包含了新安江模型程序,

接下来就是把新安江模型程序里面的几个类一个个转换过来即可。

7)经过重复的复制C++程序并依靠通义千问转换过程,终于完成所有的转换。

8)工程文件里面已经提供了测试数据,且这个程序是命令行方式运行,所以很方便运行起来。

经过运行对比,结果基本正确,参数有改变。转换后的C#程序,运行时间居然比C++快一倍。

以上就是我借助AI来转换程序的过程,大概一个晚上完成,如果要手工转换,可能需要一天时间才能做完。

我想如果转换成python程序,应该也是可以的,期待有人去尝试一下。

要了解更多,请访问 www.WaterGIS.cn 和 QQ群 722489551