基于遗传算法的新安江模型参数优化率定(四)

4.3  C++程序代码

4.3.1  新安江三水源模型

//新安江三水源模型.h

#include <fstream>

#include <iostream>

#include <iomanip>

#include <cmath>

 

const intVariableNum = 11, //待率定参数个数

              M = 485,//其为降雨起止间时段数(应该为)

              Mq = 14;//单位线中q[i]的个数,此课设中为

const double  F = 686, dt = 6;//面积、系列数据的时间间隔

const double FE =0.8;

const int  Days[4] = {30, 31, 30, 31}; //四至七月份每月天数

const doubleAveE[2][4] = {1.57, 2.29, 2.65, 3.41,0.97, 1.49, 1.71,     2.34};//四至七月份每月的多年平均日蒸发量

double K, WUM, WLM, C, //蒸发(蒸散发能力折算系数、分层蓄水容量、深层蒸散发系数)

        WM, b,    //产流(蓄水容量、蓄水容量曲线指数)

       SM,  EX, KI,   //水源划分(自由水蓄水容量、自由水蓄水容量曲线指数、自由水蓄水库出流系数)

        KKI, KKG;             //汇流(壤中流、地下径流消退系数)

 doubleP[M], Ep[M], EU[M], EL[M], ED[M], E[M], PE[M], WU[M + 1], WL[M + 1], WD[M + 1],W[M], a[M], R[M];

 doubleaf[M];//af[i]指产流面积比率(%),三水源划分中需要的数据

 doubleP1[M], P2[M], P3[M], Qo[ M ];     //三个雨量站实测雨量,实测流域流量

 doubleS[M], AU[M], RS[M], RI[M], RG[M];

 doubleq[Mq], QS[Mq + M - 1],Qs[Mq + M - 1][M];

 doubleQ[Mq + M - 1], QI[Mq + M - 1], QG[Mq + M - 1];

 doubleSumQo, AveQo, S1, S2;

 doubleU = F/3.6/dt;//折算系数

 doubleDC;//确定性系数

 

void inputQ();//读入原始数据

double FuntionDC(doubleCanshu[]);//计算确定性系数

void outputQ(doubleCanshu[]);//输出模拟流量

 

//**********读入原始数据(函数)************   

void inputQ()

{

       usingnamespace std;

        ifstream infile;//读人三个雨量站实测流域流量

        infile.open("infile_3P_Qo.txt");

        for(int i = 0; i < M; i++)

               infile>>P1[i]>>P2[i]>>P3[i]>>Qo[i];

 

       SumQo = 0, AveQo;

        for (int i = 0; i < M; i++)  

              SumQo += Qo[i];

       AveQo = SumQo/M;

        S2 = 0;

        for (int i = 0; i < M; i++)  

              S2 += pow(Qo[i] -AveQo, 2);

       infile.close();

 

        infile.open("infile_q.txt");

        for (int i = 0; i < Mq; i++)  

        { //读人时段单位线数据

               infile>>q[i];

        }

        infile.close();

}

 

//**********计算确定性系数(函数)************      

 doubleFuntionDC(double Canshu[])

 {

       usingnamespace std;

       K = Canshu[10]; WM =Canshu[0]; WUM = Canshu[1]; WLM = Canshu[2]; C = Canshu[3];

       b = Canshu[4];

       SM = Canshu[5]; EX = Canshu[6];KI = Canshu[7];             

       KKI = Canshu[8]; KKG  = Canshu[9];     

 

 

   //******三层蒸发模式下的蓄满产流模型(开始)

        double WDM =WM - WUM - WLM, KG = 0.7 - KI;

        double WMM =WM*(1 + b);

        WU[0] = FE*WUM;

        WL[0] = FE*WLM;

        WD[0] = FE*WDM;

 

       //********计算蒸发能力

       intSumTime1 = 0, SumTime2 = 0;

       for(int j = 0; j < 4; j++)

       {

              SumTime1 =  SumTime2;

              SumTime2+=4*Days[j];

              if(SumTime2 > M) SumTime2 = M;

               for(int i = SumTime1; i < SumTime2; i++)

               {

                      P[i] = (P1[i]+P2[i]+P3[i])/3;

                     if(P[i] < 3)  Ep[i] = AveE[0][j] * K;

                     else   Ep[i] =AveE[1][j] * K;

               }

       }

        for (int i = 0; i < M; i++)

        {

               W[i] = WU[i] + WL[i]+ WD[

  • 7
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
新安江模型是一种用于水文模拟的模型,可以用于湿润地区和半湿润地区的湿润季节。该模型根据流域面积的大小,采用集总模型或分块模型。集总模型将整个流域视为一个单一的单元,而分块模型将流域分为多个单元流域,并对每个单元流域进行产汇流计算,最后将每个单元流域的出流过程相加得到整个流域的总出流过程。\[2\] 新安江模型的结构反映了客观的水文规律,参数代表了流域的水文特征。它采用三层蒸散发模式计算流域的蒸散发,按照蓄满产流概念计算降雨产生的总径流量,并考虑了下垫面的不均匀性对产流面积变化的影响。在径流成分划分方面,根据山坡水文学的产流理论,使用一个具有有限容积和测孔、底孔的自由水蓄水库将总径流划分为饱和地面径流、壤水径流和地下水径流。在汇流计算方面,地面径流采用单位线法,壤水径流和地下水径流采用线性水库法。\[2\] 如果您想使用MATLAB实现新安江模型,您需要下载并安装相应版本的MATLAB Runtime运行库。您可以从MATLAB官网下载适用于您的版本的运行库,并按照安装说明进行安装。安装完成后,您可以使用MATLAB编写的新安江模型,并将其编译成可执行程序进行使用。\[3\] #### 引用[.reference_title] - *1* *2* [MATLAB实现基于遗传算法/引力搜索算法优化新安江水文模型](https://blog.csdn.net/qq_44246618/article/details/125649158)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [【PEST++】02 新安江模型参数自动率定](https://blog.csdn.net/weixin_43012724/article/details/103968567)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值