【Dakota】05 新安江模型不确定性量化

2022/3/2-2022/3/11
本地地址:E:\software\dakotacase\dakota_gui_workspace\XAJ

作者简介

很高兴认识您!
我叫卢家波,河海大学水文学及水资源博士研究生,研究兴趣为高效洪水淹没预测、洪水灾害预警、机器学习、替代模型和降阶模型。
变化环境下,极端洪水事件多发,我希望能通过研究为水灾害防御做出贡献,为人民服务。
欢迎交流讨论和研究合作,vx Jiabo_Lu
主页 https://lujiabo98.github.io
简历 https://lujiabo98.github.io/file/CV_JiaboLu_zh.pdf
博客 https://blog.csdn.net/weixin_43012724?type=blog
来信请说明博客标题及链接,谢谢。

文档说明

Calibration:新安江模型参数率定

DesignofExperiments:试验设计

ParameterStudy:参数研究

SensitivityAnalysis:敏感性分析

UncertaintyQuantification:不确定性量化

templatedir:模板目录,包含模拟脚本及其所需文件,用于给上述分析调用

研究对象

新安江模型采用笔者自己用C++编写的三水源版本
Dakota采用6.14版本的命令行可执行程序dakota.exe。

采用Dakota对新安江模型进行试验设计、参数研究、敏感性分析、不确定性量化和参数率定。

在这里插入图片描述

新安江模型

E:\software\dakotacase\dakota_gui_workspace\XAJ\templatedir路径下,存放着新安江模型程序及运行所需文件。

Dakota对新安江模型进行上述一系列分析的接口是simulator_script.batsimulator_script.bat批处理脚本主要完成三件事:一、前处理;二、运行可执行程序,即黑箱代码;三、后处理。

前处理

使用Dakota自带的dprepro根据params.inparameter.templateparameter.txt参数文件,如下所示,%1%表示命令行params.in

dprepro.py %1% parameter.template parameter.txt

运行待分析模型

在这里就是指运行新安江模型

XAJ.exe

后处理

从出口断面流量过程Q.txt到确定性系数DC 写入results.out

首先,读取Q.txt,将其转化为Q.ssf格式;

txt2ssf.py

然后,运行时间序列处理程序tsproc.exe,计算确定性系数DC,写入est.txt;

tsproc.exe tsproc.dat tsproc_record.txt est

最后,运行qoi.pyest.txt中取出确定性系数DC,写入%2%即命令行results.out

试验设计

文件夹目的

本地路径E:\software\dakotacase\dakota_gui_workspace\XAJ\DesignofExperiments

该文件夹包含使用Dakota对新安江模型进行试验设计所需所有文件。

简单评估参数灵敏度

文件说明

  • Dakota 输入文件:DesignofExperiments.in
  • 操作说明文档:ReadMe.md
  • 可执行程序黑箱代码:template/XAJ.exe
  • 分析驱动:template/simulator_script.bat
  • 参数模板文件:parameter.template
  • 后处理程序:template/txt2ssf.pyqoi.py
  • 时间序列处理程序:template/tsproc.exe
  • 时间序列处理程序配置文件:template/tsproc.dat
  • 新安江模型输入文件:template/P.txtEM.txtwatershed.txttime.txtparameter.txt
  • 新安江模型输出文件:template/Q.txt

运行程序

  1. 下载安装Dakota,并将dakota/bindakota/libdakota\test添加进环境变量
  2. 下载安装Python,并将Python添加进环境变量
  3. 在本目录下,点击菜单 文件 → \rightarrow 打开 Windows PowerShell® → \rightarrow 打开 Windows PowerShell® ,在命令行输入dakota -i DesignofExperiments.in -o DesignofExperiments.out > DesignofExperiments.stdout,回车运行试验设计程序。

查看结果

  1. 运行结束后,以记事本打开DesignofExperiments.out查看每次参数评估参数值及结果,文件最后为整个评估所花费的时间。
  2. 以记事本打开DesignofExperiments.stdout可查看每次评估的命令行输出,用于检查错误。在文件最后有MOAT方法计算得到的灵敏度。
  3. 以记事本打开dakota.err可查看Dakota运行错误日志;以记事本打开tabular.data,可查看每次评估的参数值及输出
  4. dakota.rst为二进制重启(restart)文件,用于暂停后从暂停位置开始评估,具体用法暂不详
  5. 类似LHS.*文件为Dakota采样生成的临时文件,都可以删除
  6. 打开workdir/文件夹,查看每次评估的新安江模型输入和输出文件

参数研究

文件夹目的

本地路径E:\software\dakotacase\dakota_gui_workspace\XAJ\ParameterStudy

该文件夹包含使用Dakota对新安江模型进行参数研究所需所有文件。

通过对参数按照等距采样等方式,计算模型输出值,分析参数相关性,得到参数相关矩阵。

文件说明

  • Dakota 输入文件:parameterstudy.in
  • 操作说明文档:ReadMe.md
  • 其余同试验设计

运行程序

  1. 下载安装Dakota,并将dakota/bindakota/libdakota\test添加进环境变量
  2. 下载安装Python,并将Python添加进环境变量
  3. 在本目录下,点击菜单 文件 → \rightarrow 打开 Windows PowerShell® → \rightarrow 打开 Windows PowerShell® ,在命令行输入dakota -i parameterstudy.in -o parameterstudy.out > parameterstudy.stdout,回车运行参数研究程序。

查看结果

  1. 运行结束后,以记事本打开parameterstudy.out查看每次参数评估参数值及结果,文件最后为参数相关矩阵和整个评估所花费的时间。
  2. 以记事本打开parameterstudy.stdout可查看每次评估的命令行输出,用于检查错误
  3. 以记事本打开dakota.err可查看Dakota运行错误日志
  4. 以记事本打开tabular.data,可查看每次评估的采样数据,包含参数值及输出
  5. dakota.rst为二进制重启(restart)文件,用于暂停后从暂停位置开始评估,具体用法暂不详
  6. 类似LHS.*文件为Dakota采样生成的临时文件,都可以删除
  7. 打开workdir/文件夹,查看每次评估的新安江模型输入和输出文件

敏感性分析

文件夹目的

本地路径E:\software\dakotacase\dakota_gui_workspace\XAJ\SensitivityAnalysis

该文件夹包含使用Dakota对新安江模型进行敏感性分析所需所有文件。

主要计算Sobol’全局参数灵敏度

文件说明

  • Dakota 输入文件:SensitivityAnalysis.in
  • 操作说明文档:ReadMe.md
  • 其余同试验设计

注:SensitivityAnalysis.inUncertaintyQuantification.in多了一句variance_based_decomp基于方差分解,因此可以计算灵敏度。

运行程序

  1. 下载安装Dakota,并将dakota/bindakota/libdakota\test添加进环境变量
  2. 下载安装Python,并将Python添加进环境变量
  3. 在本目录下,点击菜单 文件 → \rightarrow 打开 Windows PowerShell® → \rightarrow 打开 Windows PowerShell® ,在命令行输入dakota -i SensitivityAnalysis.in -o SensitivityAnalysis.out > SensitivityAnalysis.stdout,回车运行灵敏度分析程序。

查看结果

  1. 运行结束后,以记事本打开SensitivityAnalysis.out查看每次参数评估参数值及结果,文件最后为全局敏感性分析结果和整个评估所花费的时间。
  2. 以记事本打开SensitivityAnalysis.stdout可查看每次评估的命令行输出,用于检查错误。
  3. 以记事本打开dakota.err可查看Dakota运行错误日志
  4. 以记事本打开tabular.data,可查看每次评估的采样数据,包含参数值及输出
  5. dakota.rst为二进制重启(restart)文件,用于暂停后从暂停位置开始评估,具体用法暂不详
  6. 类似LHS.*文件为Dakota采样生成的临时文件,都可以删除
  7. 打开workdir/文件夹,查看每次评估的新安江模型输入和输出文件,默认不输出,删除SensitivityAnalysis.ininterfacedirectory_tagdirectory_save前的#注释即可输出每次评估的文件,但所有文件通常较大

不确定性量化

文件夹目的

本地路径E:\software\dakotacase\dakota_gui_workspace\XAJ\SensitivityAnalysis

该文件夹包含使用Dakota对新安江模型进行不确定性量化所需所有文件。

主要计算目标函数均值、方差、置信区间、PDF、CDF、相关性

文件说明

  • Dakota 输入文件:UncertaintyQuantification.in
  • 操作说明文档:ReadMe.md
  • 其余同试验设计

运行程序

  1. 下载安装Dakota,并将dakota/bindakota/libdakota\test添加进环境变量
  2. 下载安装Python,并将Python添加进环境变量
  3. 在本目录下,点击菜单 文件 → \rightarrow 打开 Windows PowerShell® → \rightarrow 打开 Windows PowerShell® ,在命令行输入dakota -i UncertaintyQuantification.in -o UncertaintyQuantification.out > UncertaintyQuantification.stdout,回车运行不确定性量化程序。

查看结果

  1. 运行结束后,以记事本打开UncertaintyQuantification.out查看每次参数评估参数值及结果,文件最后为目标函数均值、方差、置信区间、PDF、CDF、相关性和整个评估所花费的时间。
  2. 以记事本打开UncertaintyQuantification.stdout可查看每次评估的命令行输出,用于检查错误。
  3. 以记事本打开dakota.err可查看Dakota运行错误日志
  4. 以记事本打开tabular.data,可查看每次评估的采样数据,包含参数值及输出
  5. dakota.rst为二进制重启(restart)文件,用于暂停后从暂停位置开始评估,具体用法暂不详
  6. 类似LHS.*文件为Dakota采样生成的临时文件,都可以删除
  7. 打开workdir/文件夹,查看每次评估的新安江模型输入和输出文件

参数率定

文件夹目的

本地路径E:\software\dakotacase\dakota_gui_workspace\XAJ\SensitivityAnalysis

该文件夹包含使用Dakota自动率定新安江模型参数所需所有文件。

主要计算最优参数、最小残差

文件说明

  • Dakota 输入文件:calibration.in
  • 操作说明文档:ReadMe.md
  • 可执行程序黑箱代码:template/XAJ.exe
  • 分析驱动:template/simulator_script.bat
  • 参数模板文件:parameter.template
  • 后处理程序:template/txt2ssf.pyqoi.py
  • 时间序列处理程序:template/tsproc.exe
  • 时间序列处理程序配置文件:template/tsproc.dat
  • 新安江模型输入文件:template/P.txtEM.txtwatershed.txttime.txtparameter.txt
  • 新安江模型输出文件:template/Q.txt

运行自动率定程序

  1. 下载安装Dakota,并将dakota/bindakota/libdakota\test添加进环境变量
  2. 下载安装Python,并将Python添加进环境变量
  3. 在本目录下,点击菜单 文件 → \rightarrow 打开 Windows PowerShell® → \rightarrow 打开 Windows PowerShell® ,在命令行输入dakota -i calibration.in -o calibration.out > calibration.stdout,回车运行自动率定程序。

查看自动率定结果

  1. 运行结束后,以记事本打开calibration.out查看每次参数率定参数值及结果,文件最后为最优参数和整个率定所花费的时间。
  2. 以记事本打开calibration.stdout可查看每次率定的命令行输出,用于检查错误
  3. 以记事本打开dakota.err可查看Dakota运行错误日志
  4. 以记事本打开tabular.data,可查看每次评估的采样数据,包含参数值及输出
  5. dakota.rst为二进制重启(restart)文件,用于暂停后从暂停位置开始评估,具体用法暂不详
  6. 类似LHS.*文件为Dakota自动率定过程中采样生成的临时文件,都可以删除
  7. 打开workdir/文件夹,查看每次评估的新安江模型输入和输出文件

与SCE-UA算法对比

  • 从效率上讲,Dakota高于SCE-UA,同样是率定新安江模型的7个敏感参数,Dakota共调用模型136次,而SCE-UA则调用模型1240次,是Dakota的9.1倍。
  • 从质量上讲,SCE-UA高于Dakota,同样是率定新安江模型的7个敏感参数,SCE-UA的纳什效率系数为0.882869,Dakota的纳什效率系数为0.8677575,SCE-UA比Dakota高0.015,1.74%。
  • 从时间上讲,Dakota耗时81.068 s,SCE-UA耗时80.252 s,大致相同。

总的来讲,SCE-UA算法收敛效率明显低于Dakota,率定质量与Dakota大致相当,优先选择Dakota进行模型的参数率定。

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
Dakota是一个开源的软件工具包,用于执行不确定性量化分析。该工具包基于高性能的计算机仿真和优化技术,旨在帮助科学家和工程师在复杂系统中评估和解决不确定性问题。 不确定性量化分析是指通过统计和数学方法来描述和衡量系统中各种来源的不确定性的过程。这些不确定性可能来自于观测误差、未知参数、随机性和模型的不准确性等方面。通过对这些不确定性进行量化分析,可以为决策提供更准确的估计和预测,降低风险,并优化系统的性能。 Dakota主要提供了以下功能来进行不确定性量化分析: 1. 可靠性分析:通过建立模型和进行大量的数值模拟,评估系统在给定不确定性条件下的可靠性,即系统达到特定性能标准的概率。 2. 敏感性分析:通过分析系统输入参数对输出结果的影响程度,帮助确定哪些参数对系统的结果影响最大,以便在系统设计和优化中进行调整。 3. 参数估计:根据观测数据和模型假设,使用统计方法来估计未知参数的值和不确定性范围。 4. 不确定性传播:通过将参数和其他不确定性来源引入系统模型,并使用随机模拟方法,分析不确定性的传播方式和范围,以获得系统输出的概率分布。 使用Dakota进行不确定性量化分析,可以帮助科学家和工程师更好地理解和处理复杂系统中的不确定性问题。通过对不确定性进行准确的量化和分析,可以为决策提供更可靠的依据,优化系统的性能,并最大程度地降低风险。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卢家波

如果对你有帮助,请我喝杯茶吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值