MATLAB实现基于遗传算法/引力搜索算法优化新安江水文模型

1 新安江模型

1.1 新安江模型结构

新安江模型是分散性模型,可用于湿润地区与半湿润地区的湿润季节。当流域面积较小时,新安江模型采用集总模型,当面积较大时,采用分块模型。它把全流域分为许多块单元流域,对每个单元流域作产汇流计算,得出单元流域的出口流量过程。再进行出口以下的河道洪水演算,求得流域出口的流量过程。把每个单元流域的出流过程相加,就求得了流域的总出流过程。
该模型按照三层蒸散发模式计算流域蒸散发,按蓄满产流概念计算降雨产生的总径流量,采用流域蓄水曲线考虑下垫面不均匀对产流面积变化的影响。在径流成分划分方面,对三水源情况,按“山坡水文学”产流理论用一个具有有限容积和测孔、底孔的自由水蓄水库把总径流划分成饱和地面径流、壤中水径流和地下水径流。在汇流计算方面,单元面积的地面径流汇流一般采用单位线法,壤中水径流和地下水径流的汇流则采用线性水库法
概念性模型的结构应该反映客观水文规律,参数应该代表流域的水文特征,把模型设计成为分散性的,主要是为了考虑降雨分布不均的影响,其次也便于考虑下垫面条件的不同及其变化。降雨分布不均,不但对汇流产生明显的影响,而且对产流也产生明显的影响。如果采用集总性模型,应用面平均雨量来进行计算,误差可能很大, 而且是系统性的。本次计算采用的降雨即为平均雨量。
新安江模型的流程图如图1所示。图中输入为实测降雨P和实测蒸散发能力,输出为流域出口断面流量Q和流域蒸散发量 E。方框内是状态变量,方框外是常数常量。模型主要由四部分组成,即蒸散发计算、产流量计算、水源划分和汇流计算。
图1 三水源新安江模型结构图
新安江模型可以用于湿润和半湿润地区,当流域面积较小时,新安江模型采用集总模型,面积较大时,采用分单元模型。分单元模型把流域分成若干个单元面积,对每个单元用马斯京根汇流模型计算到达流域出口断面的流量过程。

1.2 模型参数种类及意义

在这里插入图片描述

2 新安江模型优化参数

新安江模型把全流域分成若干单元流域, 对每个单元流域分别作产汇流计算, 得出各个单元流域的出口流量过程, 再分别将出口以下的河道洪水演算至流域出口断面, 把同时刻的流量相加即求得流域出口的流量过程。
若忽略河网汇流过程,则需对三水源新安江水文模型的12个参数进行优化率定,可分为四个层次:

  • 蒸散发参数: KC、WUM、WLM、C
  • 产流量参数: WM、B
  • 水源划分参数: SM、EX、 KSS、KG
  • 坡地汇流参数:KKSS、KKG

2.1 蒸散发参数: KC、WUM、WLM、C

参数解释
蒸散发能力折算系数KC流域蒸散发能力与实测水面蒸发值之比。此参数控制着总水量平衡,因此,对水量计算是十分重要的。
上层蓄水容量WUM包括植物截留量。在植被与土壤比较发育的流域,约为20mm; 在植被与土壤颇差的流域,约为5~6mm。
下层蓄水容量WLM可取60~90mm。注意:因WDM=WM-WUM-WLM,故WDM不再是一个独立的参数。
深层蒸散发系数C决定于深根植物占流域面积的比数,同时也与WUM+WLM值有关,此值越大,深层蒸散发越困难。一般经验,在江南湿润地区C值约为0.15-0.20左右,而在华北半湿润地区则在0.09-0.12左右。

2.2 产流量参数: WM、B

参数解释
流域蓄水容量WM流域干湿程度的指标。一般分为上层WUM、下层WLM和深层WDM,约为120~ 180mm。
蓄水容量曲线指数B反映流域上蓄水容量分布的不均匀性。一般经验,流域越大,各种地质地形配置越多样,B值也越大。在山丘区域,很小面积(几平方公里)的B值为0.1左右,中等面积(300平方公里以内)的B值为0.2-0.3左右,较大面积(数千平方公里)的B值为0.3-0.4左右。

2.3 水源划分参数: SM、EX、KSS、KG

参数解释
流域平均自由水蓄水容量SM参数受降雨资料时段均化的影响,当以日为计算时段长时,一般流域的SM值约为10~50mm,当所选取的计算时段长较小时,SM要增大,这个参数对地面径流的多少起着决定性作用,因此十分重要。
自由水蓄水容量曲线指数EX表示自由水容量分布不均匀性。通常EX取值在1~1.5之间。
自由水蓄水库对壤中流的出流系数KSS一般取值为0.01~0.7。
自由水蓄水库对地下径流出流系数KG一般取值为0.01~0.7。KSS和KG两个出流系数是并联的,其和代表着自由水出流的快慢。一般来说,KSS+KG=0.7,相当于从雨止到壤中流止的时间为3天。

2.4 坡地汇流参数:KKSS、KKG

参数解释
壤中流的消退系数KKSS如无深层壤中流时,此值趋于0;当壤中流很丰富时,此值趋于0.9,相当于汇流时间为10天。
地下水的日消退系数KKG如以日为计算时段长,此值一般为0.98-0.998,相当于汇流时间为50-500天。

3 模型目标函数

目标函数用来评价实测流量与模拟流量过程的吻合程度, 不同的目标函数用来评价水文过程的不同的特征, 目标函数的选择对优选结果至关重要。一般可采用水量平衡、全流量过程均方误差、高水流量过程均方误差和枯水流量过程均方误差作为目标函数。

4 代码

主函数代码如下:

%% 清空环境变量
clc;
close all;
clear;
%% 程序与数据说明
%本程序利用新安江模型进行洪水预报演算,数据由源代码文件下目录提供
%E87-90.DAT.dat提供蒸发皿日蒸发量数据
%P87-90.DAT.dat提供雨量计日降雨量数据
%Q87-90.DAT.dat提供水文站日均流量数据
%F.DAT提供洪号、实测流量起涨时间、实测流量退水时间 
%% 将原始的流域统计资料进行赋值存储
Pfile = fopen('P87-90.DAT','rt');  %降雨
Pcell = textscan(Pfile,'%s %f');
fclose(Pfile);
Qfile = fopen('Q87-90.DAT','rt');  %流量
Qcell = textscan(Qfile,'%s %f');
fclose(Qfile);
Efile = fopen('E87-90.DAT','rt');  %蒸发
Ecell = textscan(Efile,'%s %f');
fclose(Efile);
DATE = Pcell{1}';
P = cell2mat(Pcell(:,2));
Q = cell2mat(Qcell(:,2));
E0 = cell2mat(Ecell(:,2));        %蒸发皿测得多年平均蒸发量
FDATE_FILE = fopen('F.DAT','rt');
FDATE_cell = textscan(FDATE_FILE,'%d %s %s');
fclose(FDATE_FILE);

FNUM=FDATE_cell{1};             %FNUM    洪号
FDATES=FDATE_cell{2};           %FDATES  实测流量起涨时间
FDATEE=FDATE_cell{3};           %FDATEE  实测流量退水时间
%% 将给定的参数进行赋值存储
WM = 126;            %流域平均蓄水容量
WUM = 63;            %流域上层土壤含水容量
WLM = 13;            %流域下层土壤含水容量
WDM = 50;            %流域深层土壤含水容量
KC = 0.71;              %流域蒸发折算系数
C = 0.17;               %蒸发扩散系数
B = 3;                     %流域蓄水容量曲线指数
IMP = 0.001;          %流域不透水面积比重
FE = 0.8;                %初始土壤含水容量折算系数 
SM = 36;              %流域平均自由水蓄水容量
EX = 0.46;             %自由水蓄水容量曲线的指数
KG = 0.05;             %自由水对地下水的日出流系数
K = 48;                  %蓄泄系数,单位h(小时)
KKG = 0.995;         %地下水消退系数
KSS = 0.06;           %自由水对壤中流的日出流系数
KKSS = 0.83;         %壤中流消退系数
F = 6448;              %流域面积单位为km^2     
 
%将给定的单位线进行赋值存储
load('q.mat')      %24h10min单位线
UH=q;              %单位线
%初始数据处理
EP=KC.*E0;          %水面蒸发乘系数KC转换成流域蒸发
S_0=SM*FE;          %初始自由水蓄量
WU_0=FE*WUM;
WL_0=FE*WLM;
WD_0=FE*WDM;        %初始土壤含水量
%% 函数调用及计算

%场次洪水统计
[PO,RCE,DATE_CE,QCE,RCE1] = Datastatistics(DATE,P,Q,F,K,FNUM,FDATES,FDATEE);

% 模型运算
[R,E,PE,W,WMM,WU,WL,WD,a] = runoffgenerate(P,EP,WM,WUM,WLM,WDM,WU_0,WL_0,WD_0,C,B,IMP);
[RS,RI,RG,FR,AU,S] = three_water_sources_division(P,EP,PE,W,WM,B,EX,KG,KSS,S_0,SM,R,IMP);
[QRS,QRI,QRG,Q_all,R_all] = confluence(UH,F,RS,RI,RG,KKG,KKSS);

% 预报评价
[Rmo,ERabs,ERrel,acceptrateR ]= EVALUATE_R(DATE,FDATES,FDATEE,R_all,RCE);
[Qmo,EQabs,EQrel,acceptrateQ,Date_savestart,Date_saveend,Date_save,Q_save,Qmo_save,P_save] = EVALUATE_Q(DATE,FDATES,FDATEE,Q_all,QCE,P,Q);
[DATEmo,EDabs,acceptrateD,LIM]=EVALUATE_D(DATE,FDATES,FDATEE,Q_all,DATE_CE);
[DC,DC_all ]=EVALUATE_DC(DATE,FDATES,FDATEE,Q_all,Q);
数据及完整代码请关注作者并私聊获取

5 案例

5.1 场次洪水资料

向家坪水文站控制集水面积6448km2,流域内有太平站、沙沟站、东江口、黄金站等28 个雨量站,各站均有较长期的实测雨量资料(1980-1990)。在洪水预报方案的研制中,已经将1980-1986 年资料作为模型率定期,选出了25 场暴雨与旬河同期实测流量资料作为优选产流参数和汇流过程的依据。
现需要将预留的1987-1990 年资料进行整理,为模型产汇流方案检验提供场次洪水资料。资料的整理和数据文件的组织都已通过编制的软件由计算机完成,1987-1990 年旬河流域面平均时段雨量数据,由数据文件P87-90.DAT 给出(设面平均雨量可采用算术平均法计算);旬河1987-1990 年流量过程由数据文件Q87-90.DAT 提供。

5.2 模型结果

模拟流量与实测流量过程对比图:
请添加图片描述

参考

  • 7
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
### 回答1: MATLAB是一种常用的科学计算软件,它拥有丰富的工具箱和函数库,能够方便地进行各种数据分析和建模工作。其中包括了遗传算法和神经网络的功能。 遗传算法是一种模拟自然进化过程的计算方法,通过对一个问题的多个解进行评估、选择和变异,最终找到一个较优解。而BP神经网络是一种常用的人工神经网络,具有多层连接的结构,能够通过反向传播算法进行学习和训练。 在MATLAB中,我们可以结合遗传算法和BP神经网络,建立多输入多输出的预测模型。首先,我们需要定义一个适应度函数,用来衡量神经网络的性能。适应度函数可以根据预测误差、分类准确率等指标来评估模型的优劣。 然后,我们使用遗传算法搜索神经网络的参数空间,通过变异、交叉和选择等操作来生成新的神经网络模型。在每一代的进化过程中,根据适应度函数对模型进行评估和选择,优秀的模型可以得到更高的生存概率,从而在下一代中继续进化。 最后,我们可以使用优化得到的神经网络模型进行预测。将原始输入数据输入到优化后的神经网络中,即可得到多输出的预测结果。 综上所述,MATLAB可以通过遗传算法优化BP神经网络的多输入多输出预测模型。这种方法能够利用遗传算法的优势,全局搜索参数空间,找到更优的神经网络模型,从而提高预测的准确性和性能。 ### 回答2: MATLAB可以通过遗传算法优化BP神经网络的多输入多输出预测模型。首先,我们需要定义神经网络的架构,包括输入层、隐藏层和输出层的节点数。然后,我们可以利用BP神经网络模型进行训练,通过调整权重和偏置值来最小化预测误差。在训练过程中,我们可以使用遗传算法优化BP神经网络的参数。 遗传算法是一种模拟自然选择和遗传机制的优化方法。它模拟了生物进化的过程,通过选择、交叉和变异等操作来搜索最优解。在优化BP神经网络中,遗传算法可以搜索最佳的权重和偏置值组合,以提高预测模型的准确性和性能。 具体而言,遗传算法通过以下步骤来优化BP神经网络的参数。首先,我们需要定义适应度函数,用于评估每个个体的适应度。适应度函数可以使用预测误差或其他性能指标来衡量个体的质量。然后,我们初始化一个种群,其中每个个体都代表了一组权重和偏置值。接下来,通过选择操作,我们选择适应度最高的个体作为父代,并通过交叉和变异操作生成新的个体。交叉操作将两个父代的基因组合成新的个体,而变异操作则对个体的基因进行随机的变化。通过多代进化,种群的适应度将逐渐提高。最终,我们可以选择适应度最高的个体作为优化后的权重和偏置值组合,用于多输入多输出预测模型的训练和预测。 通过基于遗传算法优化BP神经网络的预测模型,我们可以提高预测的准确性和鲁棒性。同时,遗传算法还提供了一种自动寻找最优参数组合的方法,减少了手动调整参数的工作量。因此,MATLAB的基于遗传算法优化BP神经网络的多输入多输出预测模型是一种高效且可行的方法。 ### 回答3: 基于遗传算法优化BP神经网络多输入多输出预测模型是一种结合遗传算法和神经网络的优化方法。遗传算法是一种模拟自然界遗传和进化过程的优化算法,通过不断迭代和进化来寻找最优解,而BP神经网络是一种基于误差反向传播算法的人工神经网络,可以用于数据的预测和分类。 首先,需要确定BP神经网络的结构,包括输入层、隐藏层和输出层的神经元节点数。然后,利用遗传算法初始化BP神经网络的权值和阈值,并设置适应度函数,用于评估每个个体的适应度。适应度函数可以选取预测误差、均方根误差等指标作为衡量标准。 接下来,通过遗传算法的选择、交叉和变异操作,对神经网络的权值和阈值进行优化。选择操作使得适应度高的个体更有可能被选中,交叉操作将两个个体的染色体进行交叉组合,变异操作对某些个体的染色体进行随机变异。 在每一代的遗传算法迭代中,根据适应度函数的评估结果,选择适应度较高的个体进行交叉和变异操作,不断迭代优化权值和阈值,直到达到预先设定的停止迭代条件。 最后,根据优化后的BP神经网络模型,可以进行多输入多输出的数据预测。将新的输入数据输入神经网络,经过前向传播计算得到输出结果。根据输出结果和实际值之间的误差,可以进一步优化和调整神经网络的参数,提高预测模型的准确性。 综上所述,基于遗传算法优化BP神经网络多输入多输出预测模型可以通过不断的优化权值和阈值,提高神经网络的泛化能力和预测准确性,适用于多输入多输出的预测问题。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

WW、forever

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值