CN111078214A - 一种将模型与r进行耦合交互的方法 - Google Patents
一种将模型与r进行耦合交互的方法 Download PDFInfo
- Publication number
- CN111078214A CN111078214A CN201911216172.1A CN201911216172A CN111078214A CN 111078214 A CN111078214 A CN 111078214A CN 201911216172 A CN201911216172 A CN 201911216172A CN 111078214 A CN111078214 A CN 111078214A
- Authority
- CN
- China
- Prior art keywords
- model
- thread
- platform
- function
- pest
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/35—Creation or generation of source code model driven
- G06F8/355—Round-trip engineering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
一种将模型与R进行耦合交互的方法,利用OpenMP(共享存储并行编程)构建“工作‑休眠循环框架”,控制模型与R平台交替工作与休眠,即模型工作时,R平台休眠等待,当模型执行完毕即进入休眠,而R平台开始工作;R平台结束后,发送指令启动模型运行,从而开始了一个新的工作循环,如此交替工作。本发明中将PEST输入模板和输出指令概念及模型运行功能实例化为模型线程,用户R函数和脚本实例化为R线程。此两个线程受上述“工作‑休眠循环框架”管理,以实现交互耦合。本发明方法的特点在于不接触模型源代码的情况下,实现了模型与R协同工作,模型就像是一个R函数一样可以在R平台自由调用,从而充分利用R平台的强大功能,实现参数优化、敏感性和不确定性分析及可视化等功能,极大地简化了模型反演和模拟分析操作,并提升了工作效率和用户体验。
Description
技术领域
本发明属于地球环境科学领域,特别涉及一种将模型与R进行耦合交互的方法。
背景技术
数学模型常被用于科学与工程的各个领域。数学模型的应用中,通常需要开展模型反演并观测模型的运行状况,这就涉及参数率定、敏感性分析、不确定性分析、运行状态与结果的可视化。开展模型反演(如模型参数率定)通常又需要一些外部算法,比如在环境科学模拟领域,将广泛应用的Shuffled Complex Evolution(SCE)Algorithm与模型结合起来。这个过程非常富有挑战性,通常需要理解模型结构和算法接口,掌握模型的源代码,并且需要大量编程工作将模型与算法对接起来以实现参数更新和模型迭代。比如著名的水文水质模型SWAT在建立参数自动优化时就是将用Fortran语言编写的SCE与SWAT模型对接才能实现,这个例子中优化算法和模型都是同一种编程语言(Fortran)所写。而如果模型和算法的编程语言不同,将带来非常大的困难。
模型运行的关键是向模型提供输入参数或者输入文件,待模型运算完毕后,获得模型的输出结果。参数估计程序(PEST)是一款优秀的跨模型软件,可以独立于任何模型,并在不接触模型源代码的情况下,对任何模型运行进行控制和分析(例如参数优化、敏感性分析和不确定性分析)等操作。PEST用“输入模板”、“输出指令”和“控制文件”概念管理模型运行,其中“输入模板”用来指定输入文件中的特定参数;“输出指令”用以获取输出文件中的特定结果;而“控制文件”用以启动模型使其按既有方式运行,并执行指定功能(如参数优化和不确定性分析)。它成功避免了模型编写语言不同的弊端。但是,PEST中的优化算法是开发人员事先确定的,算法固定而缺乏灵活性。而且,PEST缺乏统计分析和图形输出功能。
R是一个用于统计计算和统计制图的优秀软件,由于其免费、开源、开发便捷,功能强大的特点,在全球广受欢迎,集聚了众多的使用者和开发者,也汇集了众多的算法库(函数包),如FME、hydroPSO、hydro-mad等,实现了参数优化、敏感性分析、不确定性分析、统计分析和可视化等功能,形成了丰富的资源,具有极大的吸引力。但是,科学和工程领域里的大多数模型(尤其是大模型)是用汇编语言(C/C++和Fortran)编写,如何将这些非R编写的模型(如SWAT)和R结合起来应用,实现模型与R函数的通信和协同运行,是一个非常有应用前景但又富有挑战性的工作。
现有技术介绍
由于计算机编程语言发展的历史原因和开发者喜好,各种模型的编写语言不同,导致这些模型不能在R中直接运行,比如生态水文领域著名的SWAT、Century、EDCM等模型是用Fortran编写的,无法在R中直接工作。为了和R配合运行,此时有两种解决方案:
第一是需要用R重新编写模型程序,由于模型往往比较复杂,重写模型需要用户对模型每一个细节非常了解,且精通R语言,编写的难度巨大,耗时耗力;而且转换为R语言后运行效率难以保证,风险较高。
第二种解决方案是开发者不得不放弃简单易用的R语言,为了适应模型的编写语言,重新学习所需模型的编程语言,造成很大的学习成本,如果出现需要应用多个模型,模型是用多门语言编写的情况,那么用户付出的学习负担将更沉重,而且冒着模型语言执行效率不高的风险。
现有技术缺点
(1)第一种方案难度大,且耗时耗力,风险高。
(2)第二种方案导致用户需要学习一门或多门编程语言,学习成本高,且一些模型无法实现可视化,用户体验较差。
两种方案所需要的知识和技术成本都非常高,对于一般科学人员和工程师来讲难度非常大,不利于快速完成具体的业务需求。
发明内容
本发明的目的在于提供一种将模型与R进行耦合交互的方法,以解决上述问题。
为实现上述目的,本发明采用以下技术方案:
一种将模型与R进行耦合交互的方法,包括以下步骤:
步骤1,利用OpenMP构建“工作-休眠循环框架”,此框架将同时启动两个线程(线程0和线程1),一个线程(比如,线程0运行模型)工作时,另外一个线程(线程1运行R)处于休眠等待状态;前者线程完成任务后即进入休眠,并唤醒后者线程工作。这样,两个线程交替实现了“工作-休眠”循环直至各自任务全部完成。
步骤2,将PEST的“输入模板”和“输出指令”功能融入到“工作-休眠循环框架”,当框架启动时,会在两个线程上分别同时启动PEST和R,PEST首先以默认参数运行模型,并将结果传给R后进入休眠状态,R平台显示并分析模型输出结果;
步骤3,当R平台需要调用模型时,会将模型参数和运行模型的指令发给“工作-休眠循环框架”,后者收到信息后,执行PEST的“输入模板”功能以编辑输入文件,将新参数写入输入文件,并执行模型,此时R平台休眠等待;
步骤4,模型运行结束后,PEST通过其“输出指令”模块从输出文件中获取运算结果,运算结果作为特定输出变量,并将结果传递给R平台后进入休眠等待状态;此时R平台通过R函数计算模型误差、评价模型表现,并重新生成一组新参数再调用模型;如此反复,直至完成模拟分析(如参数优化、敏感性与不确定性分析及可视化等)功能;
步骤5,用户使用R的各项功能对模型运算结果开展进一步的统计分析与可视化表达。
进一步的,步骤2中,默认参数运行模型包括EDCM、SWAT等环境模型。
进一步的,步骤3和步骤4中模型与R耦合交互运行具体包括以下步骤:
1)将“工作-休眠循环框架”具体化为一个程序来实现;
2)框架启动后,即利用OpenMP启动两个线程:线程0(模型线程)和线程1(R线程);模型线程利用模型默认的(或起始的)输入参数,并按照模型既有方式exe或者batch文件运行模型,完成后即进入休眠状态;R线程加载两类R函数:模型函数和用户自定义R脚本;模型函数用于模型线程与R线程通信;用户R脚本为用户定义的模型模拟分析过程(如参数优化、敏感性及不确定性分析等);
3)当R脚本需要调用模型时,R的模型函数向模型线程传送启动信号和新参数,R线程随即进入休眠状态;
4)模型线程被唤醒后,利用PEST“输入模板”函数向输入文件写入传来的新参数,并按照模型既有方式exe或者batch文件启动模型;模型运算完成后,模型线程使用PEST“输出指令”函数从输出文件中获取特定结果,并向R平台的模型函数发送结束信号和运算结果,模型线程随即进入休眠;
5)R线程启动,根据返回的输出结果继续执行后续的分析运算过程,并决定是否继续运行模型;
6)如需再次调用模型则继续进行步骤3至5;
7)模型迭代完成后,用户继续使用R的各项功能对模型输出结果进行进一步分析和可视化表达,并结束整个过程。
进一步的,模型迭代包括:参数优化、敏感性和不确定性分析。
与现有技术相比,本发明有以下技术效果:
本方法发明的关键是建立“工作-休眠循环框架”,此框架的作用是控制模型与R平台交替工作与休眠,即框架控制模型这一环节工作时,R平台休眠等待,当模型执行完毕后即进入休眠,此时R平台开始工作;R平台结束后,模型收到指令(比如收到新的输入参数和模型执行命令)而重新运行,从而开始了一个新的工作循环,如此交替工作。本方法中的“工作-休眠循环框架”,实现了模型和R间消息传递和参数、运行结果的传递,使两者可以自动交替运行,而无需重复和繁杂的人工操作。
本发明中将模型和R程序各实例化为一个进程,模型进程和R进程通过读写控制文件来传递信号,以控制两个进程的交替工作与休眠。实现了模型与R协同工作,模型就像是一个R函数一样可以在R平台自由调用,从而可充分利用R平台的各种算法、分析和可视化功能,极大地改善了用户体验。此方法不需要修改模型的源代码便可以将模型与R耦合交互,无论模型是用什么编程语言编写,均可通过本发明与R平台进行交互,实现模型和R语言强大功能的耦合。
附图说明
图1为本发明技术方案原理图。
具体实施方式
以下结合附图对本发明进一步说明:
请参阅图1,一种将模型与R进行耦合交互的方法,包括以下步骤:
步骤1,利用OpenMP构建“工作-休眠循环框架”,此框架将同时启动两个线程(线程0和线程1),一个线程(比如,线程0运行模型)工作时,另外一个线程(线程1运行R)处于休眠等待状态;前者线程完成任务后即进入休眠,并唤醒后者线程工作。这样,两个线程交替实现了“工作-休眠”循环直至各自任务全部完成。
步骤2,将PEST的“输入模板”和“输出指令”功能融入到“工作-休眠循环框架”,当框架启动时,会在两个线程上分别同时启动PEST和R,PEST首先以默认参数运行模型,并将结果传给R后进入休眠状态,R平台显示并分析模型输出结果;
步骤3,当R平台需要调用模型时,会将模型参数和运行模型的指令发给“工作-休眠循环框架”,后者收到信息后,执行PEST的“输入模板”功能以编辑输入文件,将新参数写入输入文件,并执行模型,此时R平台休眠等待;
步骤4,模型运行结束后,PEST通过其“输出指令”模块从输出文件中获取运算结果,运算结果作为特定输出变量,并将结果传递给R平台后进入休眠等待状态;此时R平台通过R函数计算模型误差、评价模型表现,并重新生成一组新参数再调用模型;如此反复,直至完成模拟分析(如参数优化、敏感性与不确定性分析及可视化等)功能;
步骤5,用户使用R的各项功能对模型运算结果开展进一步的统计分析与可视化表达。
进一步的,步骤2中,默认参数运行模型包括EDCM、SWAT等环境模型。
进一步的,步骤3和步骤4中模型与R耦合交互运行具体包括以下步骤:
1)将“工作-休眠循环框架”具体化为一个程序来实现;
2)框架启动后,即利用OpenMP启动两个线程:线程0(模型线程)和线程1(R线程);模型线程利用模型默认的(或起始的)输入参数,并按照模型既有方式exe或者batch文件运行模型,完成后即进入休眠状态;R线程加载两类R函数:模型函数和用户自定义R脚本;模型函数用于模型线程与R线程通信;用户R脚本为用户定义的模型模拟分析过程(如参数优化、敏感性及不确定性分析等);
3)当R脚本需要调用模型时,R的模型函数向模型线程传送启动信号和新参数,R线程随即进入休眠状态;
4)模型线程被唤醒后,利用PEST“输入模板”函数向输入文件写入传来的新参数,并按照模型既有方式exe或者batch文件启动模型;模型运算完成后,模型线程使用PEST“输出指令”函数从输出文件中获取特定结果,并向R平台的模型函数发送结束信号和运算结果,模型线程随即进入休眠;
5)R线程启动,根据返回的输出结果继续执行后续的分析运算过程,并决定是否继续运行模型;
6)如需再次调用模型则继续进行步骤3至5;
7)模型迭代完成后,用户继续使用R的各项功能对模型输出结果进行进一步分析和可视化表达,并结束整个过程。
实施例:
将土壤侵蚀沉积碳模型(EDCM)与R耦合运行以进行参数优化为例,步骤如下:
将土壤侵蚀沉积碳模型(EDCM)与R耦合运行以进行参数优化为例,步骤如下:
步骤1、利用文本编辑器或者PEST实用程序(PEST GEN)编制3类PEST文件,分别为“控制文件”、“输入模板文件”和“输出指令文件”。构建控制文件、输入模板文件和输出指令文件的内容及具体过程如下:
1.1、在“control.pst”控制文件中依次输入控制信息(包括:变量数量、观测点数量、变量组数量、输入模板文件数量、输出指令文件数量),参数组信息(包括:变量名称、变量初始值、变量值域的上下边界范围),观测组名称和各个观测组内的观测数据(包括:观测站点名称、观测值、权重、所属观测组名称),模型运行命令方式,模型输入输出信息(包括:输入模板文件名称及路径、输入文件名称及路径、输出指令文件路径及名称、输出文件路径及名称)。
1.2、在输入模板文件中标明特定输入参数的位置;
1.3、在输出指令文件中标明特定结果的输出位置。
步骤2、打开CMD命令窗口,以步骤1中构建的PEST控制文件为参数,运行命令以启动“工作-休眠循环框架”的实例程序,如Model-R-Frame control.pst。
步骤3、框架运行EDCM模型,模型根据输入的参数进行运算,并将模拟结果传入R;R则将模拟结果与观测值进行对比,在利用优化算法生成新的参数,并传回PEST以驱动EDCM模型模拟;如此迭代直至最后得到较好的模拟精度,R平台可评价模型运行结果并绘图。
Claims (4)
1.一种将模型与R进行耦合交互的方法,其特征在于,包括以下步骤:
步骤1,利用OpenMP共享存储并行编程构建“工作-休眠循环框架”,此框架将同时启动两个线程,线程0和线程1,一个线程工作时,另外一个线程处于休眠等待状态;前者线程完成任务后即进入休眠,并唤醒后者线程工作;
步骤2,将PEST的“输入模板”和“输出指令”功能融入到“工作-休眠循环框架”,当框架启动时,会在两个线程上分别同时启动PEST和R,PEST首先以默认参数运行模型,并将结果传给R后进入休眠状态,R平台显示并分析模型输出结果;
步骤3,当R平台需要调用模型时,会将模型参数和运行模型的指令发给“工作-休眠循环框架”,后者收到信息后,执行PEST的“输入模板”功能以编辑输入文件,将新参数写入输入文件,并执行模型,此时R平台休眠等待;
步骤4,模型运行结束后,PEST通过其“输出指令”模块从输出文件中获取运算结果,运算结果作为特定输出变量,并将结果传递给R平台后进入休眠等待状态;此时R平台通过R函数计算模型误差、评价模型表现,并重新生成一组新参数再调用模型;如此反复,直至完成模拟分析功能;
步骤5,用户使用R的各项功能对模型运算结果开展进一步的统计分析与可视化表达。
2.根据权利要求1所述的一种将模型与R进行耦合交互的方法,其特征在于,步骤2中,默认参数运行模型包括EDCM、SWAT等环境领域模型。
3.根据权利要求1所述的一种将模型与R进行耦合交互的方法,其特征在于,步骤3和步骤4中模型与R耦合交互运行具体包括以下步骤:
1)将“工作-休眠循环框架”具体化为一个程序来实现;
2)框架启动后,即利用OpenMP共享存储并行编程启动两个线程:线程0,模型线程和线程1,R线程;模型线程利用模型默认的或起始的输入参数,并按照模型既有方式exe或者batch文件运行模型,完成后即进入休眠状态;R线程加载两类R函数:模型函数和用户自定义R脚本;模型函数用于模型线程与R线程通信;用户R脚本为用户定义的模型模拟分析过程;
3)当R脚本需要调用模型时,R的模型函数向模型线程传送启动信号和新参数,R线程随即进入休眠状态;
4)模型线程被唤醒后,利用PEST“输入模板”函数向输入文件写入传来的新参数,并按照模型既有方式exe或者batch文件启动模型;模型运算完成后,模型线程使用PEST“输出指令”函数从输出文件中获取特定结果,并向R平台的模型函数发送结束信号和运算结果,模型线程随即进入休眠;
5)R线程启动,根据返回的输出结果继续执行后续的分析运算过程,并决定是否继续运行模型;
6)如需再次调用模型则继续进行步骤3至5;
7)模型迭代完成后,用户继续使用R的各项功能对模型输出结果进行进一步分析和可视化表达,并结束整个过程。
4.根据权利要求3所述的一种将模型与R进行耦合交互的方法,其特征在于,模型迭代包括:参数优化、敏感性和不确定性分析。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911216172.1A CN111078214B (zh) | 2019-12-02 | 2019-12-02 | 一种将模型与r进行耦合交互的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911216172.1A CN111078214B (zh) | 2019-12-02 | 2019-12-02 | 一种将模型与r进行耦合交互的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111078214A true CN111078214A (zh) | 2020-04-28 |
CN111078214B CN111078214B (zh) | 2021-05-28 |
Family
ID=70312492
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911216172.1A Active CN111078214B (zh) | 2019-12-02 | 2019-12-02 | 一种将模型与r进行耦合交互的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111078214B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104461467A (zh) * | 2013-09-25 | 2015-03-25 | 广州中国科学院软件应用技术研究所 | 针对SMP集群系统采用MPI和OpenMP混合并行提高计算速度的方法 |
CN104461466A (zh) * | 2013-09-25 | 2015-03-25 | 广州中国科学院软件应用技术研究所 | 基于MPI和OpenMP混合编程模型并行计算提高计算速度的方法 |
CN108256249A (zh) * | 2018-01-26 | 2018-07-06 | 重庆市环境保护信息中心 | 一种三峡库区efdc模型集成方法 |
-
2019
- 2019-12-02 CN CN201911216172.1A patent/CN111078214B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104461467A (zh) * | 2013-09-25 | 2015-03-25 | 广州中国科学院软件应用技术研究所 | 针对SMP集群系统采用MPI和OpenMP混合并行提高计算速度的方法 |
CN104461466A (zh) * | 2013-09-25 | 2015-03-25 | 广州中国科学院软件应用技术研究所 | 基于MPI和OpenMP混合编程模型并行计算提高计算速度的方法 |
CN108256249A (zh) * | 2018-01-26 | 2018-07-06 | 重庆市环境保护信息中心 | 一种三峡库区efdc模型集成方法 |
Non-Patent Citations (2)
Title |
---|
YIPING WU: "Automating calibration, sensitivity and uncertainty analysis of complex", 《ELSEVIER》 * |
YIPING WU: "Development of a generic auto-calibration package for regional ecological modeling and application in the Central Plains of theUnited States", 《ELSEVIER》 * |
Also Published As
Publication number | Publication date |
---|---|
CN111078214B (zh) | 2021-05-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
AU2021240155B2 (en) | Control Pulse Generation Method, Apparatus, System, Device And Storage Medium | |
CN108319456B (zh) | 一种免编程深度学习应用的开发方法 | |
CN105094818B (zh) | 基于soa的自然资源综合应用构建方法及系统 | |
CN112199086B (zh) | 自动编程控制系统、方法、装置、电子设备及存储介质 | |
CN103019104B (zh) | 一种可视化过程控制系统组态仿真方法 | |
CN106021816B (zh) | 一种基于行为树的分布式系统行为仿真分析工具的实现方法 | |
EP3995950B1 (en) | Method and apparatus of constructing network model for deep learning, device, and storage medium | |
Kravets et al. | Intelligent multi-agent systems generation | |
CN112667221A (zh) | 基于深度学习开发ide的深度学习模型构建方法及系统 | |
Potočnik et al. | Hybrid modelling and optimal control of a multiproduct batch plant | |
CN111078214B (zh) | 一种将模型与r进行耦合交互的方法 | |
CN111612152B (zh) | 一种量子计算机的模拟控制方法、系统及相关组件 | |
CN111142861B (zh) | 结构化综控系统集成方法及装置 | |
Lazăr et al. | Tool support for fUML models | |
CN111309378A (zh) | 一种机器学习模型生命周期管理系统及方法 | |
Sherje | Enhancing Software Development Efficiency through AI-Powered Code Generation | |
Цзяньцзюнь et al. | Software analysis for mobile robots control programs | |
CN112966457A (zh) | 一种图形化云开发平台 | |
CN101739601A (zh) | 一种用于开发强化学习系统的框架及方法 | |
Mahesh et al. | DrawCode: Visual tool for programming microcontrollers | |
CN117827619B (zh) | 异构算力的耗时预测仿真方法、装置、设备、介质及系统 | |
CN112905165B (zh) | 一种人工智能模型训练环境搭建装置及方法 | |
CN117313188B (zh) | 一种基于m语言的生产系统离散事件仿真优化方法及系统 | |
CN111882056B (zh) | 一种基于副本模式的深度学习训练任务管控方法及装置 | |
Baumann | Fieldopt: Enhanced software framework for petroleum field optimization-development of software support system for the integration of oil production problems with optimization methodology |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |