版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
#ifndefSRDP_H#defineSRDP_HclassSRDP{private://1.階段變量stagevariablelongm_StageNum;doublem_Delta_t;doublem_DeltaHour;//2.決策變量decisionvariable//double**m_OptDeciVar_q;//3.狀態(tài)變量statevariablelong*m_StateNum;//double**m_StateV;//4.指標(biāo)函數(shù)targetfunctiondouble**m_TarFun;//5.目標(biāo)函數(shù)objectfunctiondoublem_ObjFun;〃最優(yōu)軌跡記錄數(shù)組long**m_OptArray;〃原始資料記錄數(shù)組double*m_RunoffArray;double*m_EvapArray;〃時(shí)間(年月)記錄數(shù)組long*m_YearArray;long*m_MonthArray;〃計(jì)算結(jié)果double*m_OptVolumnArray;double*m_OptNArray;double*m_OptAbandonQ;〃階段數(shù)存儲(chǔ)量〃時(shí)間間隔T=2626560s〃一個(gè)月的小時(shí)數(shù):h〃庫容離散點(diǎn)數(shù)〃庫容離散〃階段指標(biāo)函數(shù)//目標(biāo)函數(shù)〃長系列徑流〃蒸發(fā)量//最優(yōu)軌跡對應(yīng)庫容數(shù)據(jù)數(shù)組序列//最優(yōu)軌跡對應(yīng)出力數(shù)據(jù)數(shù)組序列//最優(yōu)軌跡對應(yīng)的棄水量序列double*m_OptUpWaterLevelArray;〃最優(yōu)軌跡對應(yīng)的水庫上游水位序列double*m_OptDownWaterLevelArray;//最優(yōu)軌跡對應(yīng)的水庫下游水位序列double*m_OptVarialbe_q;〃最優(yōu)軌跡對應(yīng)的發(fā)電流量序列〃最優(yōu)軌跡對應(yīng)的預(yù)想出力〃最優(yōu)軌跡中低于保證出力時(shí)的破壞深度//最優(yōu)軌跡對應(yīng)的保證率double*m_OptMeanWaterHeadArray;//〃最優(yōu)軌跡對應(yīng)的預(yù)想出力〃最優(yōu)軌跡中低于保證出力時(shí)的破壞深度//最優(yōu)軌跡對應(yīng)的保證率double*m_OptDamageDepth;doublem_OptReliability;doublem_OptGenerationProduction;〃發(fā)電量doublem_OptAnnualMaxPower;//ParametersofHydropowerStation//死水位//死水位m//死庫容.03億m3〃正常蓄水位835m〃汛期防洪限制水位m〃汛期最大庫容.03億m3doublem_DeadWaterLevel;doublem_DeadVolumn;doublem_NormalWaterLevel;doublem_FloodLimitLevel;doublem_FloodVmax;
〃非汛期最大庫容.37億〃非汛期最大庫容.37億m3〃機(jī)組臺(tái)數(shù)〃裝機(jī)容量*2MW//保證出力.2MWintm_UnitsNum;doublem_InstallCapacity;doublem_FirmCapacity_N;〃預(yù)想出力doublem_PotentialWaterLevel1;doublem_PotentialCapacity_N1;doublem_PotentialWaterLevel2;doublem_PotentialCapacity_N2;doublem_DesignAnnualGeneration;〃設(shè)計(jì)年發(fā)電量.99xkWeV);〃上游水位計(jì)算doubleDownWaterLevelCalculation(doubleq);〃下游水位計(jì)算voidReverseSearchCalculation();〃反向?qū)?yōu)計(jì)算voidTerminalOptionalResultCalculation();//最終結(jié)果計(jì)算};#endif〃類的實(shí)現(xiàn)//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(){〃原始資料〃長系列徑流數(shù)據(jù)//蒸發(fā)數(shù)據(jù)this->m_RunoffArray〃長系列徑流數(shù)據(jù)//蒸發(fā)數(shù)據(jù)this->m_EvapArray=NULL;////動(dòng)態(tài)規(guī)劃模型數(shù)據(jù)〃階段數(shù)〃時(shí)間間隔〃階段數(shù)〃時(shí)間間隔〃一個(gè)月的小時(shí)數(shù)//狀態(tài)數(shù)〃階段指標(biāo)//目標(biāo)函數(shù)〃時(shí)間(年)數(shù)組〃時(shí)間(月)數(shù)組//最優(yōu)軌跡記錄//最優(yōu)軌跡對應(yīng)的預(yù)想出力//最優(yōu)軌跡中低于保證出力時(shí)的破壞深度//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(){〃原始初始資料數(shù)據(jù)析構(gòu)delete[]this->m_RunoffArray;delete[]this->m_EvapArray;〃中間變量析構(gòu)delete[]this->m_StateNum;delete[]this->m_YearArray;delete[]this->m_MonthArray;〃計(jì)算結(jié)果數(shù)組析構(gòu)delete[]this->m_OptVolumnArray;delete[]this->m_OptNArray;delete[]this->m_OptAbandonQ;delete[]this->m_OptUpWaterLevelArray;//最優(yōu)軌跡對應(yīng)的水庫上游水位序列delete[]this->m_OptDownWaterLevelArray;〃最優(yōu)軌跡對應(yīng)的水庫上游水位序列delete[]this->m_OptVarialbe_q;//最優(yōu)軌跡對應(yīng)的發(fā)電流量序列//最優(yōu)軌跡對應(yīng)的預(yù)想出力//最優(yōu)軌跡中低于保證出力時(shí)的破壞深度delete//最優(yōu)軌跡對應(yīng)的預(yù)想出力//最優(yōu)軌跡中低于保證出力時(shí)的破壞深度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;}///////////////////////////////////////////////////////////////////////////////////////////////////數(shù)據(jù)初始化內(nèi)存分配/////////////////////////////////////////////////////////////////////////////////////////////////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;////獲取時(shí)間序列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;}//coutvvivv""<<this->m_YearArray[i]<<"-"<<this->m_MonthArray[i]<<endl;}//獲取狀態(tài)離散點(diǎn)數(shù)//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;//coutvvi+1vv"\t"vvthis->m_YearArray[i]vv"V"vvthis->m_MonthArray[i]vv"\t"vvthis->m_StateNum[i]vvendl;}//動(dòng)態(tài)分配內(nèi)存并初始化徑流資料、蒸發(fā)數(shù)據(jù)、狀態(tài)數(shù)據(jù)等//〃一維數(shù)組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];//最優(yōu)軌跡對應(yīng)的水庫上游水位序列this->m_OptDownWaterLevelArray=newdouble[this->m_StageNum+1];//最優(yōu)軌跡對應(yīng)的水庫上游水位序列this->m_OptVarialbe_q=newdouble[this->m_StageNum+1];//最優(yōu)軌跡對應(yīng)的發(fā)電流量序列this->m_OptMeanWaterHeadArray=newdouble[this->m_StageNum+1];this->m_OptNmaxArray=newdouble[this->m_StageNum+1];//最優(yōu)軌跡對應(yīng)的預(yù)想出力this->m_OptDamageDepth=newdouble[this->m_StageNum+1];//最優(yōu)軌跡中低于保證出力時(shí)的破壞深度//二維數(shù)組//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;〃最優(yōu)軌跡對應(yīng)的預(yù)想出力this->m_OptDamageDepth[i]=0;//最優(yōu)軌跡中低于保證出力時(shí)的破壞深度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);〃系統(tǒng)特性參數(shù)文件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();}/*cout<<”系統(tǒng)特性參數(shù)"<<endl;cout<<"|=======================================================|"<<endl;cout<<"|時(shí)段長度cout<<"|死水位cout<<"|死庫容cout<<"|正常蓄水位cout<<"|汛期防洪限制水位cout<<"|汛期最大庫容cout<<"|非汛期最大庫容cout<<"|系統(tǒng)裝機(jī)容量|Delta_T="<<this->m_Delta_t<<"s"<<endl;|DeadWaterLevel="<<this->m_DeadWaterLevel<<"m"<<endl;|DeadVolumn="<<this->m_DeadVolumn<<"億立方米"<<endl;|NormalWaterLevel="<<this->m_NormalWaterLevel<<"m"<<endl;|FloodLimitLevel="<<this->m_FloodLimitLevel<<"m"<<endl;|FloodPeriodVmax="<<this->m_FloodVmax<<"億立方米"<<endl;|NonFloodPeriodVmax="<<this->m_NFloodVmax<<‘億立方米"<<endl;|InstallCapacity="<<this->m_UnitsNum<<"x"<<this->m_InstallCapacity/2<<"MW"<<endl;cout<<"|系統(tǒng)保證出力|FirmCapacity="<<this->m_FirmCapacity_N<<"MW"<<endl;cout<<"|水電站預(yù)想出力|";cout<<"|水頭|"<<setw(6)<<this->m_PotentialWaterLevel1<<"m|"<<setw(4)<<this->m_PotentialWaterLevel2<<"m|"<<endl;cout<<"||"<<"|出力|"<<this->m_PotentialCapacity_N1<<"MW|"<<m_PotentialCapacity_N2<<"MW|"<<endl;cout<<"|設(shè)計(jì)年發(fā)電量|DesignAnnualGeneration="<<this->m_DesignAnnualGeneration<<"kW.h"<<endl;cout<<"|水電站出力系數(shù)cout<<"|水頭損失系數(shù)cout<<"|最大水頭損失|OutputCoefficient="<<this->m_CC<<endl;|HeadLossCoefficient="<<this->m_LHC<<endl;|HeadLossMax="<<this->m_LHmax<<endl;cout<<"|徑流系列起始年月|BeginTime="<<this->m_BeginYear<<"-0"<<this->m_BeginMonth<<endl;cout<<"|=========================================================|"<<endl;*/////Inputrunoffdatafromfile//////〃從文件中讀取長系列徑流數(shù)據(jù)myFileIn2.open(DataFile2);//徑流文件if(!myFileIn2){cout<<"CannotOpenRunoff_dataFile";exit(0);}else{while(myFileIn2.good()){for(inti=0;i<=this->m_StageNum;i++){myFileIn2>>m_RunoffArray[i];/*cout<<setiosflags(ios::left)<<setw(6)<<m_RunoffArray[i];if((i+1)%12==0)cout<<endl;*/}brea;}}myFileIn2.close();////Inputevaporationdatafromfile///從文件中讀取蒸發(fā)數(shù)據(jù)myFileIn3.open(DataFil/蒸發(fā)數(shù)據(jù)文件i(!myFileIn3){cout<<"CannotOpenEvaporation_dataFile"exit(0);}else{whil(myFileIn3.good()){foHinti=0;i<thi-〉m_StageNum;i++){myFileIn3〉〉thi-〉m_EvapArray[i];i(0==(i+1)%12){myFileIn3.close();myFileIn3.open(DataFile3);}}brea;}}myFileIn3.close();}///////////////////////////////////////////////////////////////////////////////////////////////////運(yùn)行計(jì)算/////////////////////////////////////////////////////////////////////////////////////////////////voidSRDP::RunningSRDP(){/反向逆推計(jì)算尋優(yōu)thi-〉ReverseSearchCalculation();/正向順推計(jì)算thi-〉TerminalOptionalResultCalculation();}///////////////////////////////////////////////////////////////////////////////////////////////////保存計(jì)算結(jié)果/////////////////////////////////////////////////////////////////////////////////////////////////voidSRDP::SaveCaluResultchar*FileName)ofstreammyFileOut;myFileOut.open(FileName);//FileName是保存數(shù)據(jù)的文件名myFileOut<<setiosflags(ios::fixed)<<setprecision(3);myFileOut<<"=================================================="<<endl;myFileOut<<setw(35)<<”系統(tǒng)特性參數(shù)"<<endl;myFileOut<<"================================================="<<endl;myFileOut<<"時(shí)段長度"<<this->m_Delta_t<<"s"<<endl;myFileOut<<"死水位"<<this->m_DeadWaterLevel<<"m"<<endl;myFileOut<<"死庫容"<<this->m_DeadVolumn<<"億立方米"<<endl;myFileOut<<"正常蓄水位"<<this->m_NormalWaterLevel<<"m"<<endl;myFileOut<<"汛期防洪限制水位"<<this->m_FloodLimitLevel<<"m"<<endl;myFileOut<<"汛期最大庫容”<<this->m_FloodVmax<<”億立方米"<<endl;myFileOut<<"非汛期最大庫容"<<this->m_NFloodVmax<<"億立方米"<<endl;myFileOut<<"系統(tǒng)裝機(jī)容量"<<this->m_UnitsNum<<"x"<<this->m_InstallCapacity/2<<"MW"<<endl;myFileOut<<"系統(tǒng)保證出力"<<this->m_FirmCapacity_N<<"MW"<<endl;myFileOut<<"水電站預(yù)想出力"<<"水頭(m)"<<setw(6)<<this->m_PotentialWaterLevel1<<setw(8)<<this->m_PotentialWaterLevel2<<endl;myFileOut<<""<<"出力(MW)"<<setw(7)<<this->m_PotentialCapacity_N1<<setw(6)<<m_PotentialCapacity_N2<<endl;myFileOut<<"設(shè)計(jì)年發(fā)電量"<<this->m_DesignAnnualGeneration<<"kW.h"<<endl;myFileOut<<"水電站出力系數(shù)"<<this->m_CC<<endl;myFileOut<<"水頭損失系數(shù)"<<this->m_LHC<<endl;myFileOut<<"最大水頭損失"<<this->m_LHmax<<endl;myFileOut<<"徑流系列起始年月"<<this->m_BeginYear<<"/0"<<this->m_BeginMonth<<endl;myFileOut<<"=============================================================="<<endl;myFileOut<<endl;myFileOut<<"================================================"<<endl;myFileOut<<setw(35)<<"最優(yōu)化計(jì)算結(jié)果"<<endl;myFileOut<<"================================================="<<endl;myFileOut<<endl;myFileOut<<setiosflags(ios::fixed)<<setprecision(2);myFileOut<<"總發(fā)電量:"<<this->m_OptGenerationProduction/100000000<<"億KW.h"<<endl;myFileOut<<"多年平均發(fā)電量:"<<this->m_OptGenerationProduction/43.0/100000000<<”億KW.h"<<endl;myFileOut<<"可靠保證率:"<<this->m_OptReliability*100<<"%"<<endl;myFileOut<<"年最大發(fā)電量:"<<this->m_OptAnnualMaxPower/100000000<<"億KW.h"<<endl;myFileOut<<endl;myFileOut<<setiosflags(ios::fixed)<<setiosflags(ios::right)<<setw(10)<<"時(shí)間(年/月)"<<setw(11)<<"來流量”<<setw(8)<<"蒸發(fā)量”<<setw(10)<<"初庫容”<<setw(10)<<"末庫容”<<setw(10)<<"初水位”<<setw(10)<<"末水位”<<setw(10)<<”下游水位”<<setw(10)<<"發(fā)電水頭”<<setw(10)<<"發(fā)電流量"<<setw(10)<<"棄水量”<<setw(10)<<"出力值”<<setw(13)<<"預(yù)想出力值”<<setw(11)<<”破壞深度”<<endl;for(inti=0;i<=this->m_StageNum-1;i++){〃時(shí)間(年/月)輸出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";〃數(shù)據(jù)輸出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();}////////////////////////////////////////////////////////////////////////////////////////////////////類的私有函數(shù)/////////////////////////////////////////////////////////////////////////////////////////////////doubleSRDP::UpWaterLevelCalculation(doubleV){〃根據(jù)庫容曲線求上游水位值//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){〃水位流量關(guān)系曲線求下游水位值//y=-4E-19x6+4E-15x5-2E-11x4+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--){〃對庫容進(jìn)行離散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);/*coutvvivvsetw(4)vvthis->m_MonthArray[i]vvsetw(10)vvDelta_V1vvsetw(4)vvthis->m_StateNum[i]vvsetw(10)vvthis->m_MonthArray[i+1]vvsetw(10)vvDelta_V2vvsetw(4)vvthis->m_StateNum[i+1]vvendl;*/〃進(jìn)行逆推迭代計(jì)算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;〃單位:億立方米〃水量平衡驗(yàn)算求出發(fā)電流量q=this->m_RunoffArray[i]-(V2-V1)*100000000/this->m_Delta_t-this->m_EvapArray[i];//單位:立方米/秒if(q<=0)//不滿足水量平衡方程{q=0;N=-1e+5;〃設(shè)置懲罰系數(shù)}else{〃根據(jù)庫容曲線求上游水位值Z_up=(this->UpWaterLevelCalculation(V1)+this->UpWaterLevelCalculation(V2))/2.0;〃水位流量關(guān)系曲線求下游水位值Z_down=this->DownWaterLevelCalculation(q);〃水頭損失計(jì)算和發(fā)電水頭計(jì)算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{〃最大出力值計(jì)算if(GWH<=52)Nmax=105.3;elseif(GWH>=57)Nmax=120.0;elseNmax=2.94*GWH-47.58;//cout<<setw(10)<<Nmax<<endl;〃階段出力計(jì)算N=this->m_CC*q*GWH/1000;if(N<this->m_FirmCapacity_N)//低于保證出力{N=N-2000*(this->m_FirmCapacity_N-N);}elseif(N>=Nmax)//大于最大出力限制時(shí)按最大出力計(jì)算N=Nmax;}}//cout<<i<<”\t”<<j<<”\t”<<k<<”\t”<<N<<endl;〃保存最優(yōu)路徑和相應(yīng)階段目標(biāo)函數(shù)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(){〃求最優(yōu)軌跡〃需要輸出的變量有第i時(shí)段的年月、來水量、蒸發(fā)量、月發(fā)電流量、月平均出力、月發(fā)電量、月末蓄水量、棄水量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]);〃對庫容進(jìn)行離散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;〃時(shí)段初末水位值計(jì)算Z1=this->UpWaterLevelCalculation(this->m_OptVolumnArray[i]);Z2=this->UpWaterLevelCalculation(this->m_OptVolumnArray[i+1]);〃水量平衡計(jì)算單位:立方米/秒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{//平均發(fā)電水頭計(jì)算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;〃預(yù)想出力值計(jì)算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;〃出力計(jì)算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;//預(yù)想出力值計(jì)算if(GWH<=52)Nmax=105.3;elseif(GWH>=57)Nmax=120.0;elseNmax=
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年生物毒性分析儀項(xiàng)目評估報(bào)告
- 2026年面部塑形儀項(xiàng)目可行性研究報(bào)告
- 社區(qū)專職網(wǎng)格員培訓(xùn)課件
- 《FZT 64040-2013縫編非織造粘合襯》專題研究報(bào)告
- 幼兒院幼兒教育與教學(xué)管理制度
- java課程設(shè)計(jì)汽車維修管理系統(tǒng)
- pe工具盒課程設(shè)計(jì)
- 小學(xué)生校園綠化制度
- 年度安全生產(chǎn)責(zé)任制度
- GB/T 43824-2024村鎮(zhèn)供水工程技術(shù)規(guī)范
- 心力衰竭藥物治療的經(jīng)濟(jì)評估與成本效益分析
- 道路綠化養(yǎng)護(hù)投標(biāo)方案(技術(shù)方案)
- QA出貨檢驗(yàn)日報(bào)表
- 校服采購?fù)稑?biāo)方案
- 中外建筑史課件
- 母嬰保健-助產(chǎn)技術(shù)理論考核試題題庫及答案
- dd5e人物卡可填充格式角色卡夜版
- ??怂箍禉C(jī)器操作說明書
- GB/T 6003.1-1997金屬絲編織網(wǎng)試驗(yàn)篩
- GB/T 24207-2009洗油酚含量的測定方法
評論
0/150
提交評論