SWAT-CUP参数率定过程问题总结
大罐雪碧cc
2021年02月28日 14:02
收录于文集
共1篇

最近在学习使用SWAT-CUP对SWAT模型模拟的结果进行参数率定,过程中遇到不少问题,通过网络检索和交流群咨询得以解决,再次对于一些常见的问题进行总结,希望能给其他学习SWAT-CUP的朋友提供一些参考。在此强调,对于遇到同一问题的情况,造成的原因并不一定相同,本文主要提出我个人的原因和解决办法。

  1. 运行时提示“SWAT”不是内部命令,如下图问题分析:该问题为cup工程路径下缺少swat.exe的程序解决办法:将SWAT安装目录下的swat2012.exe文件复制到当前CUP所在的工程路径下,并重命名为“swat.exe”。为避免运行中出现此问题,可以在每次建立cup工程后,在运行前完成此工作。

图1

2.SWAT-CUP在完成simulation 1后不能继续往下进行,如下图

问题分析:该问题可能为cup前后设置存在矛盾

解决办法:检查CUP中输入的观测数据前后是否一致,模拟时间输入是否合理。如我的模拟期为2009.01.01-2014.01.01,则SUFT2_ extract rch. def中end year of simulation应为2013而非2014。beginning year of simulation not including the warm up period应为去除预热期后的起始年。若各项内容均没有矛盾,有时也可通过重建工程解决。

图2

3.error 65:floating invalid,如下图所示

原因分析:我遇到这个问题是因为率定选取参数的范围设置不合理,如部分参数的取值可能为负值,但设置的参数下界为0.

解决办法:根据网络教程,或其他相关文献调整参数范围。

图3

4.找不到 SUFI2.OUTbeh_*文件,如下图

原因分析与解决办法:首先可能与swat.exe损坏有关,可按照上述步骤替换swat.exe文件。其次,此处NS值为负,说明模拟结果与实测结果偏差较大,可能为实测径流数据输入有误(如把月总流量当作月平均流量、实测数据单位不一致等),可通过修正输入的实测数据解决。此外,还可能是模拟率定时段设置不合理。如我最初模拟的截止日期设置为2013/12/31,后改为2014/01/01(cup中File.Cio的Ending julian day of simulation由365改为1,SUFT2_ extract rch. def中end year of simulation仍为2013而非2014),虽然实际的预热期、率定期并未改变,但问题由此得到了解决。

图4

以上就是我遇到相关问题的原因和解决办法,对于同样的报错,也可能由其他原因导致。在此提供一种解决思路,也欢迎其他遇到同样问题的朋友分享其他可能导致的原因。