新安江水文模型与 SCE-UA 优化算法是水文学和水资源管理领域的重要工具,二者结合使用可以有效模拟流域的水文过程并优化模型参数。

新安江水文模型是一种概念性水文模型,主要用于模拟流域的降雨-径流关系。
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转换成功,当中有几个小错误,修改一下即可

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

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

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

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

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

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

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

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

  

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

  1. 并发编程:Actors 模型和 CSP 模型

    https://mp.weixin.qq.com/s/emB99CtEVXS4p6tRjJ2xww 并发编程:Actors 模型和 CSP 模型 ImportNew 2017-04-27    

  2. AI大模型学习了解

    # 百度文心 上线时间:2019年3月 官方介绍:https://wenxin.baidu.com/ 发布地点: 参考资料: 2600亿!全球最大中文单体模型鹏城-百度·文心发布 # 华为盘古 上线时 ...

  3. 网络编程中select模型和poll模型学习(linux)

    一.概述 并发的网络编程中不管是阻塞式IO还是非阻塞式IO,都不能很好的解决同时处理多个socket的问题.操作系统提供了复用IO模型:select和poll,帮助我们解决了这个问题.这两个函数都能够 ...

  4. 华为高级研究员谢凌曦:下一代AI将走向何方?盘古大模型探路之旅

    摘要:为了更深入理解千亿参数的盘古大模型,华为云社区采访到了华为云EI盘古团队高级研究员谢凌曦.谢博士以非常通俗的方式为我们娓娓道来了盘古大模型研发的"前世今生",以及它背后的艰难 ...

  5. 保姆级教程:用GPU云主机搭建AI大语言模型并用Flask封装成API,实现用户与模型对话

    导读 在当今的人工智能时代,大型AI模型已成为获得人工智能应用程序的关键.但是,这些巨大的模型需要庞大的计算资源和存储空间,因此搭建这些模型并对它们进行交互需要强大的计算能力,这通常需要使用云计算服务 ...

  6. zz独家专访AI大神贾扬清:我为什么选择加入阿里巴巴?

    独家专访AI大神贾扬清:我为什么选择加入阿里巴巴? Natalie.Cai 拥有的都是侥幸,失去的都是人生 ​关注她 5 人赞同了该文章 本文由 「AI前线」原创,原文链接:独家专访AI大神贾扬清:我 ...

  7. DeepSpeed Chat: 一键式RLHF训练,让你的类ChatGPT千亿大模型提速省钱15倍

    DeepSpeed Chat: 一键式RLHF训练,让你的类ChatGPT千亿大模型提速省钱15倍 1. 概述 近日来,ChatGPT及类似模型引发了人工智能(AI)领域的一场风潮. 这场风潮对数字世 ...

  8. HBase实践案例:知乎 AI 用户模型服务性能优化实践

    用户模型简介 知乎 AI 用户模型服务于知乎两亿多用户,主要为首页.推荐.广告.知识服务.想法.关注页等业务场景提供数据和服务, 例如首页个性化 Feed 的召回和排序.相关回答等用到的用户长期兴趣特 ...

  9. 基于JVM原理、JMM模型和CPU缓存模型深入理解Java并发编程

    许多以Java多线程开发为主题的技术书籍,都会把对Java虚拟机和Java内存模型的讲解,作为讲授Java并发编程开发的主要内容,有的还深入到计算机系统的内存.CPU.缓存等予以说明.实际上,在实际的 ...

  10. 初级游戏外挂编程详解 windows运行原理+游戏辅助编程 游戏外挂编程

    详解游戏辅助编程 [目录] 1-什么是Windows API 2-Windows进程 3-Windows 的内存的运行原理 4-windows 中句柄的概念 5-Windows的变量类型 6-辅助实现 ...

随机推荐

  1. uniapp 画布

    1.前言 uniapp中的canvas与HTML中的canvas用法并不同,他的使用文档请参考微信小程序画布 2.基本使用 1.准备canvas容器,并为其设置canvas-id和宽高(为了兼容H5, ...

  2. HTML5 拖拽接口

    1.首先,为了使元素可拖动,要先设置元素为可拖拽 方法:添加draggable属性,设置为 true 注意:链接和图像默认就支持拖拽,另外,如果一个元素中的文本被选中,那么这个元素和他的文本节点此时都 ...

  3. Net使用EasyNetQ简化与RabbitMQ的交互

    Net使用EasyNetQ简化与RabbitMQ的交互 EasyNetQ是一个为.NET环境设计的RabbitMQ客户端API,旨在简化与RabbitMQ的交互. 关于RabbitMq的更多知识点在: ...

  4. Python OpenCV按照像素点图片切割

    图像分割是从图像处理到图像分析的关键步骤,在目标检测.特征提取.图像识别等领域具有广泛应用.OpenCV是一个强大的计算机视觉库,提供了多种图像分割方法.本文将详细介绍如何使用Python和OpenC ...

  5. js修改表单值不会触发input事件

    前情 最近在做需求开发时候,需要监听表单的input事件 坑位 当通过JS动态修改表单的值的发现并不会触发表单的input事件 Why? 个人猜测是浏览器默认行为,input只会针对用户手动输入做响应 ...

  6. DDCA —— 片上网络互联

    1. 路由 1.1 网络拓扑示例 Grid(网格) 网络拓扑通常是一个二维矩阵形式,每个节点(处理器)与其上下左右相邻的节点相连. 如果节点在边缘,某些方向上可能没有相邻节点(边界节点). Torus ...

  7. HttpClient初步理解

    昨天做完网站项目,就立刻接到了接口的项目,遇到了httpclient,因为毕业不久,遇到这块所以特此留下理解 HttpClient介绍 概念: HTTP 协议可能是现在 Internet 上使用得最多 ...

  8. [python]Markdown图片引用格式批处理桌面应用程序

    需求 使用python编写一个exe,实现批量修改图片引用,将修改后的文件生成为 文件名_blog.md.有一个编辑框,允许接收拖动过来md文件,拖入文件时获取文件路径,有一个编辑框编辑修改后的文件的 ...

  9. 【MyBatis】学习笔记11:解决字段名和属性的映射关系

    [Mybatis]学习笔记01:连接数据库,实现增删改 [Mybatis]学习笔记02:实现简单的查 [MyBatis]学习笔记03:配置文件进一步解读(非常重要) [MyBatis]学习笔记04:配 ...

  10. Linux readonly

    1. 概念readonly在shell脚本中,用来标记变量是只读的,后续执行过程中就不能对其值进行改变,这个用来定义一些常量类的变量. 如果对其进行重新赋值,会提示错误 [root@localhost ...