实战AI大模型辅助编程:新安江水文模型和SCE-UA优化算法的移植与实现
新安江水文模型与 SCE-UA 优化算法是水文学和水资源管理领域的重要工具,二者结合使用可以有效模拟流域的水文过程并优化模型参数。
本文主要记录使用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转换成功,当中有几个小错误,修改一下即可
6) 要检验sce-ua算法是否可以运行,还需要移植新安江程序,SCEUA程序内部已经包含了新安江模型程序,
接下来就是把新安江模型程序里面的几个类一个个转换过来即可。
7)经过重复的复制C++程序并依靠通义千问转换过程,终于完成所有的转换。
8)工程文件里面已经提供了测试数据,且这个程序是命令行方式运行,所以很方便运行起来。
经过运行对比,结果基本正确,参数有改变。转换后的C#程序,运行时间居然比C++快一倍。

以上就是我借助AI来转换程序的过程,大概一个晚上完成,如果要手工转换,可能需要一天时间才能做完。
我想如果转换成python程序,应该也是可以的,期待有人去尝试一下。
要了解更多,请访问 www.WaterGIS.cn 和 QQ群 722489551
实战AI大模型辅助编程:新安江水文模型和SCE-UA优化算法的移植与实现的更多相关文章
- 并发编程:Actors 模型和 CSP 模型
https://mp.weixin.qq.com/s/emB99CtEVXS4p6tRjJ2xww 并发编程:Actors 模型和 CSP 模型 ImportNew 2017-04-27
- AI大模型学习了解
# 百度文心 上线时间:2019年3月 官方介绍:https://wenxin.baidu.com/ 发布地点: 参考资料: 2600亿!全球最大中文单体模型鹏城-百度·文心发布 # 华为盘古 上线时 ...
- 网络编程中select模型和poll模型学习(linux)
一.概述 并发的网络编程中不管是阻塞式IO还是非阻塞式IO,都不能很好的解决同时处理多个socket的问题.操作系统提供了复用IO模型:select和poll,帮助我们解决了这个问题.这两个函数都能够 ...
- 华为高级研究员谢凌曦:下一代AI将走向何方?盘古大模型探路之旅
摘要:为了更深入理解千亿参数的盘古大模型,华为云社区采访到了华为云EI盘古团队高级研究员谢凌曦.谢博士以非常通俗的方式为我们娓娓道来了盘古大模型研发的"前世今生",以及它背后的艰难 ...
- 保姆级教程:用GPU云主机搭建AI大语言模型并用Flask封装成API,实现用户与模型对话
导读 在当今的人工智能时代,大型AI模型已成为获得人工智能应用程序的关键.但是,这些巨大的模型需要庞大的计算资源和存储空间,因此搭建这些模型并对它们进行交互需要强大的计算能力,这通常需要使用云计算服务 ...
- zz独家专访AI大神贾扬清:我为什么选择加入阿里巴巴?
独家专访AI大神贾扬清:我为什么选择加入阿里巴巴? Natalie.Cai 拥有的都是侥幸,失去的都是人生 关注她 5 人赞同了该文章 本文由 「AI前线」原创,原文链接:独家专访AI大神贾扬清:我 ...
- DeepSpeed Chat: 一键式RLHF训练,让你的类ChatGPT千亿大模型提速省钱15倍
DeepSpeed Chat: 一键式RLHF训练,让你的类ChatGPT千亿大模型提速省钱15倍 1. 概述 近日来,ChatGPT及类似模型引发了人工智能(AI)领域的一场风潮. 这场风潮对数字世 ...
- HBase实践案例:知乎 AI 用户模型服务性能优化实践
用户模型简介 知乎 AI 用户模型服务于知乎两亿多用户,主要为首页.推荐.广告.知识服务.想法.关注页等业务场景提供数据和服务, 例如首页个性化 Feed 的召回和排序.相关回答等用到的用户长期兴趣特 ...
- 基于JVM原理、JMM模型和CPU缓存模型深入理解Java并发编程
许多以Java多线程开发为主题的技术书籍,都会把对Java虚拟机和Java内存模型的讲解,作为讲授Java并发编程开发的主要内容,有的还深入到计算机系统的内存.CPU.缓存等予以说明.实际上,在实际的 ...
- 初级游戏外挂编程详解 windows运行原理+游戏辅助编程 游戏外挂编程
详解游戏辅助编程 [目录] 1-什么是Windows API 2-Windows进程 3-Windows 的内存的运行原理 4-windows 中句柄的概念 5-Windows的变量类型 6-辅助实现 ...
随机推荐
- 分享一个纯Python开发的系统程序,基于VSCode + WxPython开发的跨平台应用系统
本项目是基于 wxPython 开发的 GUI 应用,主要用于管理基础框架内容,包括用户.角色.机构.权限.日志.菜单.字典.附件.通用编码规则.配置管理等基础框架内容. 愿景是构建一个基于Pytho ...
- PLC编程—基本知识
1. OB.FB.FC功能 OB(组织块):用于执行特定的任务(CPU启动.循环扫描.时间中断.硬件中断等),每个OB块均有一个特定的功能和优先级(特定事件发生时被触发). FB(功能块):具有内部存 ...
- Vue脚手架(vue-cli)搭建和目录结构
环境搭建 1.安装node.npm.webpack 2.安装vue-cli脚手架构建工具,打开命令行工具输入:npm install vue-cli -g,安装完成之后输入 vue -V(注意这里是大 ...
- LNMP Wordpress phpMyAdmin的部署记录
背景 CentOS 8.2服务器,使用的虚拟服务器.只开放22与80端口.设置默认页面是wordpress的入口,phpmyadmin使用虚拟目录的形式进行访问. 安装 总体思路按照此文章进行.我进行 ...
- [双体系练习]Java基础练习题1
因为练习是word,本文我只是写了里面的部分内容,如果想查阅完整内容或者获取word以及PDF,请 关注微信公众号 乖乖狼科技 发送口令 akcd T1 静态代码块中不能? · [D ] A. 初始化 ...
- 【Web前端】【JavaScript】实现表格隔行变色
方法1:原生JavaScript 设置CSS table td{ border:red solid 1px; } .tr1{ color:white; background: black; } .tr ...
- 若依管理系统 -- 更换头像上传文件报错(/tmp/tomcat.8013579853364800617.8080/work/Tomcat/localhost/ROOT)
一.错误情况 1.错误截图 二.错误解决情况 1.若依官方解答的链接 2.若依解答原文 1)原因: 在linux系统中,springboot应用服务再启动(java -jar 命令启动服务)的时候,会 ...
- gitlab-runner register
[root@g ~]# gitlab-runner register Runtime platform arch=amd64 os=linux pid=23614 revision=ac8e767a ...
- Qt编写可视化大屏电子看板系统15-曲线面积图
一.前言 曲线面积图其实就是在曲线图上增加了颜色填充,单纯的曲线可能就只有线条以及数据点,面积图则需要从坐标轴的左下角和右下角联合曲线形成完整的封闭区域路径,然后对这个路径进行颜色填充,为了更美观的效 ...
- 单片机的主程序中为什么都要加一个while(1)?
*** * C51 为什么都要加一个while(1)?****** while(1)的作用: while(1) 是一个死循环 为了不让代码继续向下执行. 单片机中使用while(1),大部分:为了防止 ...