||
写在前面的
SWAT模型构建过程初次学习可能很困难,必须坚持一步步来,有问题琢磨,琢磨不透就问,总能解决。
注意问题:
S1:SWAT2012更新说明在安装目录下“D:\软件\Arcswat\ArcSWATHelp”
S2:SWAT自带案例,可按《ArcSWAT2009用户指南》自学
S3:本教程可能出现部分附件,附件主要为数据集或者部分处理好的数据或者索引表,可加QQ群获取
QQ群:790411341 (Terrestrial hydrological cycle)如有问题或相关交流亦可加群
(本节所有需要调整的参数皆粗体,斜体,标红处理)
参数率定与校准需要下载SWAT-CUP,在官网下载即可【见附件10】。最新版SWAT-CUP2019的阶面与老版不同,本说明为2019最新版。
a.将SWAT的TxtInOut导入SWAT-CUP;
b.SWAT Version为2012,64-bit;
c.选择算法,并创建工程,选择工程位置。
(注意不同算法对应的操作界面可能有所不同,以第一个算法SUFI2为例)
算法有这么几种:SUFI2(连续不确定率定法V2);PSO(粒子群算法);GLUE(广义最大似然不确定估计);ParaSol(参数优化方法);MCMC(蒙特卡罗过程)。
设置参数的个数与模拟的次数,如果提示参数较少,可以通过 Add a new parameter 按钮新增参数。
V、a、r的意思代表修改参数的方法,分别为赋值、加减、乘以。
可以在Text View 里面更新参数,而不用在Form View视图中挨个调。
注意1:swatcup中的Sol_BD和ALPHA_BNK两个参数不在swat中的自带调参工具中。
注意2:.bsn为后缀的参数,是全流域性质的参数,因此不可以按子流域修改,手动调参的时候不能指定某各子流域改参数,因此在此处填写的时候,不用选流域。
分别输入起始与终止的模拟次数,分别为1与n。
需要修改这几项数据。分别为:模拟的年数(11);模拟的起始年(1961);起始日的年积日(1);结束日的年积日(365,此项如果模拟最终年份为闰年,被4整除,则此项为366,输错可能引起错误)
该项一般不做修改。
输入观测数据需要只需要激活rch即可,激活需要点击上方的Rch按钮。
Number of observed variables,指观测变量个数,如果同时校准多个rch的流量,这里填的是rch的个数。
例如>>如果要校正5个出口的流量,这里就写5;
>>如果校正2个流量,2个泥沙,这里就写4。
FLOW_OUT_1,需改后边的数字,改为每个rch的Gis代码。
141,为rch1的实测数据的个数,如果为月值,2年的数据,个数填24。
如果rch个数多,则需要对每个实测数据进行输入,可在EXCEL进行整理,第一列为序号,第二列为名称,第三列为流量值,输入的时候注意单位,output的月值单位为cms,实测值应该与其对应。
如果有这种情况,水文站位于rch5与rch6汇流的地方,rch5和rch6汇合成rch7。那水文站实测的流量就不能用rch5与rch6的Flow_Out,机智的我发现,用rch7的Flow_In不就可以了?当然rch7的Flow_In与rch5&6的Flow_Out之和有误差,但是绝对可以忽略。【通常,在定义子流域的时候,我们已经会在水文站处设置流域出口了】
此处为所选的变量,需将6)中输入的进行整理过来。
2,变量个数,不是rch的个数,而是变量的种类,不同的rch都输出为flowout,因此变量个数为1;
但是如果同时校正流量和泥沙,不管矫正多少个出口,这里都为2.
【总结:variables和 observed variables的区别】
【variables:单独的variables意味着变量的种类,种类为流量、泥沙、N含量,是指的类别】
【observed variables:是指观测的变量,为流域出口的各种变量的和,一个出口的3种变量则为3,3个出口的1个变量,也为3】
7___18,变量所在swat输出文件的列,如果为流量,填7即可,中间隔3个空格;特别注意,这个列数,不是看在Arcgis中数据库的那个!经过本人研究发现,两者列数差1列。真正的Output的列数与其对应的项目在下边列出。
流域的总数量,根据实际情填写;
3,第一个变量,Flow_out,用到的子流域个数,如果选择4个子流域的Flow_out,则填4;
1__3__7,第一变量的子流域的代码,有多个出口,则需在中间隔2个空格;
【注意】:这里填写子流域代码时,必须从小到大填写!不按照上下游的顺序!
1,使用第二个变量的子流域个数,如果没有第二个变量,则删除该行与下一行;
7,第二个变量所在的子流域代码,没有则删除;
1990,包括预热期在内的模拟起始年份;
2001,模拟结束年份;
2,模拟的时间步长,1日,2月,3年。
4,观测变量的个数,根据出口个数来填写,n个出口填n个观测变量个数;
5,目标函数类型,选NS系数即可;
0.5,目标函数的阈值,一般NS选择0.5,但是可以试试更高;
1,如果目标函数为修正的NS系数,输入p值;
FLOW_OUT_1,修正每个观测变量的变量名;
1,-1,-1,1,1,可以不做修改;
10为测量值的误差百分比,可以适当调低;
141,该出口变量的观测值个数;
依次修改每一个出口变量的参数及实测值,注意单位CMS。
再次输入每个子流域变量名
【注意】:这里填写子流域代码时,必须从小到大填写!不按照上下游的顺序!
(注意,如果填错一个选项,都不行!!!)
点开最后两个,看看是不是有对号。
第一个界面输入Y(大写)后,点一下回车。接下来点确定就行了。
A. 在swatcup中进行Validation时,只需要改变“Observed_rch.txt”“SUFI2_extract_rch.def”“Observed.txt”三个文件,将径流数据改为验证期的数据(率定期的数据删掉,重新编号;验证期的数据不可以过长),模拟年份也改为验证期的年份,然后Calibration。其他的数据和参数不用改,swatcup可记住率定参数和率定期的数据。(以与校准运行相同的仿真次数执行迭代)
B. 推荐在Swat中Manual Calibration中进行模型验证,不要在swatcup运行。如果参数不在swat的Manual Calibration里面,就在数据库中修改,但是要点击rewrite input。
C. 打开Manual Calibration,选择参数与变化方式。如果是r,表示百分比变化,例如r参数=0.1,则在swat中选择Multiply By (1+r),参数增加10%的意思。如果为v,直接在swat中repalce填上v的值即可。
D. 然后选择相应的HRU即可。
最后读取验证期的结果,与实测值进行对比。注意output的值为日均流量,单位为cms。
E.更新了参数后,在运行,会出现新的情景,新情景的参数是刚更改的参数;但是如果不运行,需要再需改参数,只需要将当前的情景设置为default sim即可,刚修正的参数就会不会更新。
F.计算R2的时候,在excel中用correl函数得到的是r。
通常需要先分析参数敏感性,再确定需要率定的参数,但是这里是同时进行的。
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-11-28 15:45
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社