版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
//类的定义#ifndefSRDP_H#defineSRDP_HclassSRDP{private:111.阶段变量111.阶段变量stagevariablelongm_StageNum;doublem_Delta_t;doublem_DeltaHour;//阶段数存储量〃时间间隔T=2626560s〃一个月的小时数:h〃2.决策变量decisionvariable//double**m_OptDeciVar_q;〃3.状态变量statevariablelong〃2.决策变量decisionvariable//double**m_OptDeciVar_q;〃3.状态变量statevariablelong*m_StateNum;//double**m_StateV;//库容离散点数//库容离散〃4.指标函数targetfunctiondouble**m_TarFun;//阶段指标函数〃5.目标函数objectfunctiondoublem_ObjFun; //目标函数//最优轨迹记录数组long**m_OptArray;//原始资料记录数组double*m_RunoffArray;double*m_EvapArray;//时间(年月)记录数组long*m_YearArray;long*m_MonthArray;//长系列径流//蒸发量//计算结果//计算结果double*m_OptVolumnArray;double*m_OptNArray;double*m_OptAbandonQ;double*m_OptUpWaterLevelArray;//最优轨迹对应库容数据数组序列//最优轨迹对应出力数据数组序列//最优轨迹对应的弃水量序列//最优轨迹对应的水库上游水位序列double*m_OptDownWaterLevelArray;〃最优轨迹对应的水库下游水位序列double*m_OptVarialbe_q;double*m_OptVarialbe_q;//最优轨迹对应的发电流量序列double*m_OptMeanWaterHeadArray;//最优轨迹对应的平均发电水头double*m_OptNmaxArray; //最优轨迹对应的预想出力double*m_OptDamageDepth; //最优轨迹中低于保证出力时的破坏深度doublem_OptReliability; //最优轨迹对应的保证率doublem_OptGenerationProduction;//发电量doublem_OptAnnualMaxPower;//ParametersofHydropowerStation//double//doublem_DeadWaterLevel;doublem_DeadVolumn;doublem_NormalWaterLevel;doublem_FloodLimitLevel;doublem_FloodVmax;doublem_NFloodVmax;intm_UnitsNum;doublem_InstallCapacity;doublem_FirmCapacity_N;〃死水位m〃死库容.03亿m3//正常蓄水位835m〃汛期防洪限制水位m〃汛期最大库容.03亿m3〃非汛期最大库容.37亿m3//机组台数〃装机容量*2MW〃保证出力.2MW//预想出力doublem_PotentialWaterLevel1;doublem_PotentialCapacity_N1;doublem_PotentialWaterLevel2;doublem_PotentialCapacity_N2;doublem_DesignAnnualGeneration; 〃设计年发电量.99xkWeV); 〃上游水位计算doubleDownWaterLevelCalculation(doubleq);〃下游水位计算voidReverseSearchCalculation(); //反向寻优计算voidTerminalOptionalResultCalculation(); //最终结果计算};#endif//类的实现//SRDP.cpp:implementationoftheSRDPclass.////////////////////////////////////////////////////////////////////////#include"stdafx.h"#include"SRDP.h"#include<math.h>#include"assert.h"
#include"fstream"#include"iomanip"#include"iostream"#include<stdlib.h>usingnamespacestd;////////////////////////////////////////////////////////////////////////Construction/Destruction//////////////////////////////////////////////////////////////////////SRDP::SRDP(){//原始资料this->m_RunoffArray=this->m_RunoffArray=NULL;this->m_EvapArray=NULL;////动态规划模型数据//this->m_StageNum=100;//this->m_Delta_t=2626560;//this->m_DeltaHour=730;this->m_StateNum=NULL;this->m_TarFun=NULL;//this->m_ObjFun=0.00;this->m_YearArray=NULL;this->m_MonthArray=NULL;this->m_OptArray=NULL;this->m_OptNmaxArray=NULL;this->m_OptDamageDepth=NULL;度}SRDP::~SRDP(){//原始初始资料数据析构delete[]this->m_RunoffArray;delete[]this->m_EvapArray;//中间变量析构delete[]this->m_StateNum;delete[]this->m_YearArray;delete[]this->m_MonthArray;//长系列径流数据//蒸发数据//阶段数//时间间隔//一个月的小时数//状态数//阶段指标//目标函数//时间(年)数组//时间(月)数组//最优轨迹记录//最优轨迹对应的预想出力//最优轨迹中低于保证出力时的破坏深//计算结果数组析构delete[]this->m_OptVolumnArray;delete[]this->m_OptNArray;delete[]this->m_OptAbandonQ;delete[]this->m_OptUpWaterLevelArray;//最优轨迹对应的水库上游水位序列delete[]this->m_OptDownWaterLevelArray;//最优轨迹对应的水库上游水位序列delete[]this->m_OptVarialbe_q; //最优轨迹对应的发电流量序列delete[]this->m_OptMeanWaterHeadArray;delete[]this->m_OptNmaxArray; //最优轨迹对应的预想出力delete[]this->m_OptDamageDepth; //最优轨迹中低于保证出力时的破坏深度for(inti=0;i<=this->m_StageNum;i++){//delete[]this->m_OptDeciVar_q[i];//delete[]this->m_StateV[i];delete[]this->m_OptArray[i];delete[]this->m_TarFun[i];}//delete[]this->m_OptDeciVar_q;//delete[]this->m_StateV;delete[]this->m_OptArray;delete[]this->m_TarFun;}///////////////////////////////////////////////////////////////////////////////////////////////////数据初始化内存分配/////////////////////////////////////////////////////////////////////////////////////////////////voidSRDP::InitionalizingSRDP(char*DataFile1,char*DataFile2,char*DataFile3){this->m_StageNum=516;this->m_BeginMonth=6;this->m_BeginYear=1957;this->m_OptGenerationProduction=0.00;this->m_OptAnnualMaxPower=0.00;this->m_DeltaHour=730;// 获取时间序列 //this->m_YearArray=newlong[this->m_StageNum+1];this->m_MonthArray=newlong[this->m_StageNum+1];this->m_StateNum=newlong[this->m_StageNum+1];for(inti=0;i<=this->m_StageNum;i++){this->m_YearArray[i]=0;this->m_MonthArray[i]=0;this->m_StateNum[i]=10;}this->m_YearArray[0]=this->m_BeginYear; //水文年起始年份this->m_MonthArray[0]=this->m_BeginMonth; //水文年起始月份for(inti=1;i<=this->m_StageNum;i++){if((this->m_MonthArray[i-1]+1)<=12){this->m_MonthArray[i]=this->m_MonthArray[i-1]+1;this->m_YearArray[i]=this->m_YearArray[i-1];}elseif((this->m_MonthArray[i-1]+1)>12){this->m_MonthArray[i]=this->m_MonthArray[i-1]-11;this->m_YearArray[i]=this->m_YearArray[i-1]+1;}//cout<<i<<""<<this->m_YearArray[i]<<"-"<<this->m_MonthArray[i]<<endl;}// 获取状态离散点数 //for(inti=0;i<=this->m_StageNum;i++){if(this->m_MonthArray[i]>=6&&this->m_MonthArray[i]<=10)this->m_StateNum[i]=1;elsethis->m_StateNum[i]=51;//cout<<i+1<<"\t"<<this->m_YearArray[i]<<"\/"<<this->m_MonthArray[i]<<"\t"<<this->m_StateNum[i]<<endl;}// 动态分配内存并初始化径流资料、蒸发数据、状态数据等 ////一维数组this->m_RunoffArray=newdouble[this->m_StageNum+1];this->m_EvapArray=newdouble[this->m_StageNum+1];//this->m_OptVolumnArray=newdouble[this->m_StageNum+1];this->m_OptNArray=newdouble[this->m_StageNum+1];this->m_OptAbandonQ=newdouble[this->m_StageNum+1];this->m_OptUpWaterLevelArray=newdouble[this->m_StageNum+1];//最优轨迹对应的水库上游水位序列this->m_OptDownWaterLevelArray=newdouble[this->m_StageNum+1];//最优轨迹对应的水库上游水位序列this->m_OptVarialbe_q=newdouble[this->m_StageNum+1]; //最优轨迹对应的发电流量序列this->m_OptMeanWaterHeadArray=newdouble[this->m_StageNum+1];this->m_OptNmaxArray=newdouble[this->m_StageNum+1]; //最优轨迹对应的预想出力this->m_OptDamageDepth=newdouble[this->m_StageNum+1]; //最优轨迹中低于保证出力时的破坏深度//二维数组//this->m_OptDeciVar_q=newdouble*[this->m_StageNum+1];//this->m_StateV=newdouble*[this->m_StageNum+1];this->m_OptArray=newlong*[this->m_StageNum+1];this->m_TarFun=newdouble*[this->m_StageNum+1];for(inti=0;i<=this->m_StageNum;i++){//this->m_OptDeciVar_q[i]=newdouble[this->m_StateNum[i]];//this->m_StateV[i]=newdouble[this->m_StateNum[i]];this->m_OptArray[i]=newlong[this->m_StateNum[i]];this->m_TarFun[i]=newdouble[this->m_StateNum[i]];}for(inti=0;i<=this->m_StageNum;i++){this->m_RunoffArray[i]=0.00;this->m_EvapArray[i]=0.00;this->m_OptVolumnArray[i]=0.00;this->m_OptNArray[i]=0.00;this->m_OptAbandonQ[i]=0.00;this->m_OptUpWaterLevelArray[i]=0.00;this->m_OptDownWaterLevelArray[i]=0.00;this->m_OptVarialbe_q[i]=0.00;this->m_OptMeanWaterHeadArray[i]=-1;this->m_OptNmaxArray[i]=-1; //最优轨迹对应的预想出力this->m_OptDamageDepth[i]=0; //最优轨迹中低于保证出力时的破坏深度for(longj=0;j<this->m_StateNum[i];j++){//this->m_OptDeciVar_q[i][j]=0.00;//this->m_StateV[i][j]=0.00;this->m_OptArray[i][j]=0;this->m_TarFun[i][j]=-1e+6;// //InputSystemParametetersfromfile// ////ifstreammyFileIn1,myFileIn2,myFileIn3;myFileIn1.open(DataFile1); //系统特性参数文件if(!myFileIn1){cout<<"CannotOpenSystemParametersFile"<<endl;exit(0);}else{while(myFileIn1.good()){myFileIn1>>this->m_DeadWaterLevel>>this->m_DeadVolumn>>this->m_NormalWaterLevel>>this->m_FloodLimitLevel>>this->m_FloodVmax>>this->m_NFloodVmax>>this->m_UnitsNum>>this->m_InstallCapacity>>this->m_FirmCapacity_N>>this->m_PotentialWaterLevel1>>this->m_PotentialCapacity_N1>>this->m_PotentialWaterLevel2>>this->m_PotentialCapacity_N2>>this->m_DesignAnnualGeneration>>this->m_CC>>this->m_LHC>>this->m_LHmax>>this->m_Delta_t;}myFileIn1.close();}/*coutvv"系统特性参数"vvendl;cout<<"|=======================================================|"<vendl;coutvv"I时段长度 丨Delta_T="vvthis->m_Delta_tvv"s"vvendl;coutvv"I死水位 IDeadWaterLevel="vvthis->m_DeadWaterLevelvv"m"vvendl;cout<<"|死库容 |。68宀》0山山口="<<血3->口_。68宀》0山口口<<"亿立方米"vvendl;cout<<"|正常蓄水位 INormalWaterLevel="vvthis->m_NormalWaterLevelvv"m"vvendl;coutvv"I汛期防洪限制水位 IFloodLimitLevel="vvthis->m_FloodLimitLevelvv"m"vvendl;coutvv"I汛期最大库容 IFloodPeriodVmax="vvthis->m_FloodVmaxvv"亿立方米"vvendl;coutvv"I非汛期最大库容 丨NonFloodPeriodVmax="vvthis->m_NFloodVmaxvv"亿立方米"vvendl;coutvv"I系统装机容量 IInstallCapacity="vvthis->m_UnitsNumvv"x"vvthis->m_InstallCapacity/2vv"MW"vvendl;cout<<"|系统保证出力 |FirmCapacity="vvthis->m_FirmCapacity_Nvv"MW"vvendl;coutvv"水电站预想出力 r:cout<<"|水头I"vvsetw(6)vvthis->m_PotentialWaterLevel1vv"mI"vvsetw(4)vvthis->m_PotentialWaterLevel2vv"mI"vvendl;coutvv"I I"vv"I出力I"vvthis->m_PotentialCapacity_N1vv"MWI"vvm_PotentialCapacity_N2vv"MWI"vvendl;coutvv"I设计年发电量 IDesignAnnualGeneration="vvthis->m_DesignAnnualGenerationvv"kW.h"vvendl;coutvv"I水电站出力系数coutvv"I水电站出力系数coutvv"I水头损失系数coutvv"I最大水头损失coutvv"I径流系列起始年月IHeadLossCoefficient="vvthis->m_LHCvvendl;IHeadLossMax="vvthis->m_LHmaxvvendl;IBeginTime="vvthis->m_BeginYearvv"-0"vvthis->m_BeginMonthvvendl;coutvv"I========================================================="vvendl;*/// //Inputrunoffdatafromfile// //////从文件中读取长系列径流数据myFileIn2.open(DataFile2);〃径流文件if(!myFileIn2){coutvv"CannotOpenRunoff_dataFile";exit(0);}else{while(myFileIn2.good()){for(inti=0;iv=this->m_StageNum;i++){myFileIn2>>m_RunoffArray[i];/*coutvvsetiosflags(ios::left)vvsetw(6)vvm_RunoffArray[i];if((i+1)%12==0)coutvvendl;*/}break;}myFileIn2.close();// //Inputevaporationdatafromfile// ////从文件中读取蒸发数据myFileIn3.open(DataFile3);〃蒸发数据文件if(!myFileIn3){cout<<"CannotOpenEvaporation_dataFile";exit(0);}else{while(myFileIn3.good()){for(inti=0;i<=this->m_StageNum;i++){myFileIn3>>this->m_EvapArray[i];if(0==(i+1)%12){myFileIn3.close();myFileIn3.open(DataFile3);}}break;}}myFileIn3.close();}///////////////////////////////////////////////////////////////////////////////////////////////////运行计算/////////////////////////////////////////////////////////////////////////////////////////////////voidSRDP::RunningSRDP(){//反向逆推计算寻优this->ReverseSearchCalculation();//正向顺推计算this->TerminalOptionalResultCalculation();}///////////////////////////////////////////////////////////////////////////////////////////////////保存计算结果
/////////////////////////////////////////////////////////////////////////////////////////////////voidSRDP::SaveCaluResults(char*FileName){ofstreammyFileOut;myFileOut.open(FileName); //FileName是保存数据的文件名myFileOut<<setiosflags(ios::fixed)<<setprecision(3);myFileOut<<"=================================================="<<endl;myFileOutvvsetw(35)vv"系统特性参数"vvendl;myFileOut<<"================================================="<<endl;myFileOutvv" 时段长度myFileOutvv" 时段长度myFileOutvv" 死水位"vvthis->m_DeadWaterLevelvv"m"vvendl;myFileOutvv" 死库容"vvendl;myFileOutvv" 正常蓄水位"vvthis->m_NormalWaterLevelvv"m"vvendl;myFileOutvv" 汛期防洪限制水位"vvthis->m_FloodLimitLevelvv"m"vvendl;myFileOutvv" 汛期最大库容"vvendl;myFileOutvv" 非汛期最大库容"vvendl;myFileOutvv" 系统装机容量"vvthis->m_Delta_tvv"s"vvendl;"wthisom—DeadVolumnw"亿立方米"vvthis->m_FloodVmaxvv"亿立方米"vvthis->m_NFloodVmaxvv"亿立方米"vvthis->m_UnitsNumvv"x"vvthis->m_InstallCapacity/2vv"MW"vvendl;myFileOutvv"系统保证出力"vvthis->m_FirmCapacity_Nvv"MW"vvendl;myFileOutvv" 水电站预想出力 "<<"水头(m)"vvsetw(6)vvthis->m_PotentialWaterLevel1vvsetw(8)vvthis->m_PotentialWaterLevel2vvendl;myFileOutvv" "<<"出力(MW)"vvsetw(7)vvthis->m_PotentialCapacity_N1vvsetw(6)vvm_PotentialCapacity_N2vvendl;myFileOutvv"设计年发电量"vvthis->m_DesignAnnualGenerationvv"kW.h"vvendl;"vvthis->m_CCvvendl;"vvthis->m_CCvvendl;"vvthis->m_LHCvvendl;"vvthis->m_LHmaxvvendl;myFileOutvv" 水头损失系数myFileOutvv" 最大水头损失myFileOutvv" 径流系列起始年月"vvthis->m_BeginYearvv"/0"vvthis->m_BeginMonthvvendl;myFileOutvv"=============================================================="vvendl;myFileOut<<endl;myFileOut<<"================================================"<<endl;myFileOutvvsetw(35)vv"最优化计算结果"vvendl;myFileOut<<"================================================="<<endl;myFileOutvvendl;myFileOutvvsetiosflags(ios::fixed)vvsetprecision(2);myFileOutvv"总发电量:"vvthis->m_OptGenerationProduction/100000000vv"亿KW.h"vvendl;myFileOutvv"多年平均发电量:"<<血3->口_0卩166皿皿“0口卩『0宀山“0口/43.0/100000000<<"亿KW.h"vvendl;myFileOutvv"可靠保证率:"vvthis->m_OptReliability*100vv"%"vvendl;myFileOutvv"年最大发电量:"vvthis->m_OptAnnualMaxPower/100000000vv"亿KW.h"vvendl;myFileOutvvendl;myFileOutvvsetiosflags(ios::fixed)vvsetiosflags(ios::right)vvsetw(10)vv"时间(年/月)"vvsetw(11)vv"来流量"vvsetw⑻vv"蒸发量"vvsetw(10)vv"初库容"vvsetw(10)vv"末库容"vvsetw(10)vv"初水位"vvsetw(10)vv"末水位"vvsetw(10)vv"下游水位"vvsetw(10)vv"发电水头"vvsetw(10)vv"发电流量"vvsetw(10)vv"弃水量"vvsetw(10)vv"出力值"vvsetw(13)vv"预想出力值"vvsetw(11)vv"破坏深度"vvendl;for(inti=0;iv=this->m_StageNum-1;i++){//时间(年/月)输出myFileOutvvsetw(5)vvthis->m_YearArray[i]vv"/";if(this->m_MonthArray[i]v10)myFileOutvv"0"vvthis->m_MonthArray[i]vv"\t";elsemyFileOut<<this->m_MonthArray[i]<<"\t";//数据输出myFileOut<<setiosflags(ios::fixed)<<setprecision(2)<<setw(6)<<this->m_RunoffArray[i]<<setw(7)<<this->m_EvapArray[i];myFileOut<<setiosflags(ios::fixed)<<setprecision(3)<<setiosflags(ios::right)<<setw(11)<<this->m_OptVolumnArray[i]<<setw(10)<<this->m_OptVolumnArray[i+1]<<setw(10)<<this->m_OptUpWaterLevelArray[i]<<setw(10)<<this->m_OptUpWaterLevelArray[i+1]<<setw(10)<<this->m_OptDownWaterLevelArray[i]<<setw(10)<<this->m_OptMeanWaterHeadArray[i]<<setw(10)<<this->m_OptVarialbe_q[i]<<setw(10)<<this->m_OptAbandonQ[i]<<setw(10)<<this->m_OptNArray[i]<<setw(12)<<this->m_OptNmaxArray[i]<<setw(10)<<this->m_OptDamageDepth[i];myFileOut<<setw(5)<<this->m_YearArray[i]<<"/";if(this->m_MonthArray[i]<10)myFileOut<<"0"<<this->m_MonthArray[i];elsemyFileOut<<this->m_MonthArray[i];myFileOut<<endl;}myFileOut.close();ofstreammyfileout;myfileout.open("WaterLevel.txt");for(inti=0;i<=this->m_StageNum-1;i++){myfileout<<setw(5)<<this->m_YearArray[i]<<"/";if(this->m_MonthArray[i]<10)myfileout<<"0"<<this->m_MonthArray[i]<<"\t";elsemyfileout<<this->m_MonthArray[i]<<"\t";myfileout<<this->m_OptUpWaterLevelArray[i]<<endl;}myfileout.close();}////////////////////////////////////////////////////////////////////////////////////////////////////类的私有函数/////////////////////////////////////////////////////////////////////////////////////////////////doubleSRDP::UpWaterLevelCalculation(doubleV){//根据库容曲线求上游水位值//y=-0.9727x6+12.826x5-64.982x4+159.2x3-196.68x2+129.82x+777.35return-0.9727*pow(V,6)+12.826*pow(V,5)-64.982*pow(V,4)+159.2*pow(V,3)-196.68*pow(V,2)+129.82*V+777.35; //单位:米}doubleSRDP::DownWaterLevelCalculation(doubleq){//水位流量关系曲线求下游水位值〃y=-4E-19x6+4E-15x5-2E-llx4+3E-08x3-3E-05x2+0.0186x+753.68R2=0.9978doublea6,a5,a4,a3,a2,a1,a0;a6=-4e-19;a5=4e-15;a4=-2e-11;a3=3e-8;a2=-3e-05;a1=0.0186;a0=753.68;returna6*pow(q,6)+a5*pow(q,5)+a4*pow(q,4)+a3*pow(q,3)+a2*pow(q,2)+a1*q+a0;//单位:米}voidSRDP::ReverseSearchCalculation(){doubleq;doubleDelta_V1,Delta_V2,V1,V2/*,V*/;doubleZ_up,/*Z_up1,Z_up2,*/Z_down;doubleHeadLoss,GWH;doubleN,Nmax;doubletempTarFun;this->m_TarFun[this->m_StageNum][0]=0.00;for(inti=this->m_StageNum-1;i>=0;i--)//对库容进行离散if(1==this->m_StateNum[i])Delta_V1=this->m_FloodVmax-this->m_DeadVolumn;elseDelta_V1=(this->m_NFloodVmax-this->m_DeadVolumn)/(this->m_StateNum[i]-1);if(1==this->m_StateNum[i+1])Delta_V2=this->m_FloodVmax-this->m_DeadVolumn;elseDelta_V2=(this->m_NFloodVmax-this->m_DeadVolumn)/(this->m_StateNum[i+1]-1);/*cout<<i<<setw(4)<<this->m_MonthArray[i]<<setw(10)<<Delta_V1<<setw(4)<<this->m_StateNum[i]<<setw(10)<<this->m_MonthArray[i+1]<<setw(10)<<Delta_V2<<setw(4)<<this->m_StateNum[i+1]<<endl;*///进行逆推迭代计算for(intj=0;j<this->m_StateNum[i];j++){V1=this->m_DeadVolumn+j*Delta_V1; //单位:亿立方米for(intk=0;k<this->m_StateNum[i+1];k++){V2=this->m_DeadVolumn+k*Delta_V2; //单位:亿立方米//水量平衡验算求出发电流量q=this->m_RunoffArray[i]-(V2-Vl)*100000000/this->m_Delta_t-this->m_EvapArray[i];〃单位:立方米/秒if(q<=0) //不满足水量平衡方程{q=0;N=-1e+5; //设置惩罚系数}else{//根据库容曲线求上游水位值Z_up=(this->UpWaterLevelCalculation(V1)+this->UpWaterLevelCalculation(V2))/2.0;//水位流量关系曲线求下游水位值Z_down=this->DownWaterLevelCalculation(q);//水头损失计算和发电水头计算HeadLoss=this->m_LHC*q*q;if(HeadLoss>this->m_LHmax)HeadLoss=this->m_LHmax;GWH=Z_up-Z_down-HeadLoss;if(GWH<=0)N=0.00;else{//最大出力值计算if(GWH<=52)Nmax=105.3;elseif(GWH>=57)Nmax=120.0;elseNmax=2.94*GWH-47.58;//cout<<setw(10)<<Nmax<<endl;//阶段出力计算N=this->m_CC*q*GWH/1000;if(N<this->m_FirmCapacity_N) //低于保证出力{N=N-2000*(this->m_FirmCapacity_N-N);}elseif(N>=Nmax) //大于最大出力限制时按最大出力计N=Nmax;}}//cout<<i<<"\t"<<j<<"\t"<<k<<"\t"<<N<<endl;//保存最优路径和相应阶段目标函数tempTarFun=N+this->m_TarFun[i+1][k];if(tempTarFun>=this->m_TarFun[i][j]){this->m_TarFun[i][j]=tempTarFun;this->m_OptArray[i][j]=k;}this->m_ObjFun=this->m_TarFun[0][0];//cout<<this->m_ObjFun<<endl;}voidSRDP::TerminalOptionalResultCalculation(){//求最优轨迹〃需要输出的变量有第i时段的年月、来水量、蒸发量、月发电流量、月平均出力、月发电量、月末蓄水量、弃水量doubleDelta_V;doubleZ1,Z2,Z_up,Z_down;doubleDelta_H,GWH;doubleq;doubleN,Nmax;intm=0;longcount=0;this->m_OptVolumnArray[0]=this->m_DeadVolumn;for(inti=0;i<this->m_StageNum;i++){this->m_OptUpWaterLevelArray[i]=this->UpWaterLevelCalculation(this->m_OptVolumnArray[i]);//对库容进行离散if(1==this->m_StateNum[i+1])Delta_V=this->m_FloodVmax-this->m_DeadVolumn;elseDelta_V=(this->m_NFloodVmax-this->m_DeadVolumn)/(this->m_StateNum[i+1]-1);m=this->m_OptArray[i][m];this->m_OptVolumnArray[i+1]=this->m_DeadVolumn+m*Delta_V;//时段初末水位值计算Z1=this->UpWaterLevelCalculation(this->m_OptVolumnArray[i]);Z2=this->UpWaterLevelCalculation(this->m_OptVolumnArray[i+1]);//水量平衡计算单位:立方米/秒q=this->m_RunoffArray[i]-this->m_EvapArray[i]-(this->m_OptVolumnArray[i+1]-this->m_OptVolumnArray[i])*100000000/this->m_Delta_t;if(q<=0){this->m_OptNArray[i]=0.00;this->m_OptVarialbe_q[i]=0.00;this->m_OptAbandonQ[i]=0.00;this->m_OptDamageDepth[i]=-10000;count++;}else{//平均发电水头计算Z_up=(Z1+Z2)/2;Z_down=this->DownWaterLevelCalculation(q);Delta_H=this->m_LHC*q*q;if(Delta_H>5.59)Delta_H=5.59;GWH=Z_up-Z_down-Delta_H;//预想出力值计算if(GWH<=52)Nmax=105.3;elseif(GWH>=57)Nmax=120.0;elseNmax=2.94*GWH-47.58;N=this->m_CC*q*GWH/1000;//出力计算if(N>Nmax)//出力大于最大出力{doubleq0,q1,q2;q0=q;q1=0.00;q2=q;while(abs(N-Nmax)>0.0001){q=(q1+q2)/2;Z_down=this->DownWaterLevelCalculation(q);Delta_H=this->m_LHC*q*q;if(Delta_H>5.59)Delta_H=5.59;GWH=Z_up-Z_down-Delta_H;
//预想出力值计算if(GWH<=52)N
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 店长岗位职责奖惩制度
- 小餐厅员工管理奖惩制度
- 废水站设备管理奖惩制度
- 乡镇耕地保护奖惩制度
- 导游vip服务奖惩制度
- 公司个人证件奖惩制度
- 加油站生产安全奖惩制度
- 急诊科手卫生奖惩制度
- 义务巡防队建设奖惩制度
- 幼儿园安全奖惩制度制度
- 聚氨酯地坪施工方案及工艺要求
- 常压储罐完整性管理系统:构建、应用与展望
- 电力线路巡检报告模板
- 劳务合同2026年合同协议
- 2025年高职(金融科技应用)金融科技基础专项测试试题及答案
- 理疗店应急预案(3篇)
- 2026年新疆生产建设兵团兴新职业技术学院单招职业技能测试题库及答案详解一套
- 鼾症科普宣传课件
- 义务教育《英语课程标准》(2025年修订版)原版核心框架+深度解读+测试题及答案
- 配电箱设备防护维护技术方案
- 2026年苏州工业职业技术学院单招综合素质考试题库附答案
评论
0/150
提交评论