动态规划进行单库优化调度计算C++程序代码Word文档格式.docx
- 文档编号:4498043
- 上传时间:2023-05-03
- 格式:DOCX
- 页数:30
- 大小:22.82KB
动态规划进行单库优化调度计算C++程序代码Word文档格式.docx
《动态规划进行单库优化调度计算C++程序代码Word文档格式.docx》由会员分享,可在线阅读,更多相关《动态规划进行单库优化调度计算C++程序代码Word文档格式.docx(30页珍藏版)》请在冰点文库上搜索。
//计算结果
double*m_OptVolumnArray;
//最优轨迹对应库容数据数组序列
double*m_OptNArray;
//最优轨迹对应出力数据数组序列
double*m_OptAbandonQ;
//最优轨迹对应的弃水量序列
double*m_OptUpWaterLevelArray;
//最优轨迹对应的水库上游水位序列
double*m_OptDownWaterLevelArray;
//最优轨迹对应的水库下游水位序列
double*m_OptVarialbe_q;
//最优轨迹对应的发电流量序列
double*m_OptMeanWaterHeadArray;
//最优轨迹对应的平均发电水头
double*m_OptNmaxArray;
//最优轨迹对应的预想出力
double*m_OptDamageDepth;
//最优轨迹中低于保证出力时的破坏深度
doublem_OptReliability;
//最优轨迹对应的保证率
doublem_OptGenerationProduction;
//发电量
doublem_OptAnnualMaxPower;
//ParametersofHydropowerStation
//
doublem_DeadWaterLevel;
//死水位m
doublem_DeadVolumn;
//死库容.03亿m3
doublem_NormalWaterLevel;
//正常蓄水位835m
doublem_FloodLimitLevel;
//汛期防洪限制水位m
doublem_FloodVmax;
//汛期最大库容.03亿m3
doublem_NFloodVmax;
//非汛期最大库容.37亿m3
intm_UnitsNum;
//机组台数
doublem_InstallCapacity;
//装机容量*2MW
doublem_FirmCapacity_N;
//保证出力.2MW
//预想出力
doublem_PotentialWaterLevel1;
doublem_PotentialCapacity_N1;
doublem_PotentialWaterLevel2;
doublem_PotentialCapacity_N2;
doublem_DesignAnnualGeneration;
//设计年发电量.99×
kW•eV);
//上游水位计算
doubleDownWaterLevelCalculation(doubleq);
//下游水位计算
voidReverseSearchCalculation();
//反向寻优计算
voidTerminalOptionalResultCalculation();
//最终结果计算
};
#endif
//类的实现
//SRDP.cpp:
implementationoftheSRDPclass.
//
//////////////////////////////////////////////////////////////////////
#include"
stdafx.h"
SRDP.h"
#include<
math.h>
assert.h"
fstream"
iomanip"
iostream"
stdlib.h>
usingnamespacestd;
//Construction/Destruction
SRDP:
:
SRDP()
//原始资料
this->
m_RunoffArray=NULL;
//长系列径流数据
m_EvapArray=NULL;
//蒸发数据
////动态规划模型数据
//this->
m_StageNum=100;
//阶段数
m_Delta_t=2626560;
//时间间隔
m_DeltaHour=730;
//一个月的小时数
m_StateNum=NULL;
//状态数
m_TarFun=NULL;
//阶段指标
m_ObjFun=0.00;
//目标函数
m_YearArray=NULL;
//时间(年)数组
m_MonthArray=NULL;
//时间(月)数组
m_OptArray=NULL;
//最优轨迹记录
m_OptNmaxArray=NULL;
m_OptDamageDepth=NULL;
}
~SRDP()
//原始初始资料数据析构
delete[]this->
m_RunoffArray;
m_EvapArray;
//中间变量析构
m_StateNum;
m_YearArray;
m_MonthArray;
//计算结果数组析构
m_OptVolumnArray;
m_OptNArray;
m_OptAbandonQ;
m_OptUpWaterLevelArray;
m_OptDownWaterLevelArray;
m_OptVarialbe_q;
m_OptMeanWaterHeadArray;
m_OptNmaxArray;
m_OptDamageDepth;
for(inti=0;
i<
=this->
m_StageNum;
i++)
{
//delete[]this->
m_OptDeciVar_q[i];
m_StateV[i];
delete[]this->
m_OptArray[i];
m_TarFun[i];
}
//delete[]this->
m_OptDeciVar_q;
m_StateV;
m_OptArray;
m_TarFun;
/////////////////////////////////////////////////////////////////////////////////////////////////
//数据初始化内存分配
voidSRDP:
InitionalizingSRDP(char*DataFile1,char*DataFile2,char*DataFile3)
m_StageNum=516;
m_BeginMonth=6;
m_BeginYear=1957;
m_OptGenerationProduction=0.00;
m_OptAnnualMaxPower=0.00;
//---------------------------获取时间序列--------------------------------//
m_YearArray=newlong[this->
m_StageNum+1];
m_MonthArray=newlong[this->
m_StateNum=newlong[this->
this->
m_YearArray[i]=0;
m_MonthArray[i]=0;
m_StateNum[i]=10;
}
m_YearArray[0]=this->
m_BeginYear;
//水文年起始年份
m_MonthArray[0]=this->
m_BeginMonth;
//水文年起始月份
for(inti=1;
i++)
if((this->
m_MonthArray[i-1]+1)<
=12)
{
this->
m_MonthArray[i]=this->
m_MonthArray[i-1]+1;
m_YearArray[i]=this->
m_YearArray[i-1];
}
elseif((this->
m_MonthArray[i-1]+1)>
12)
m_MonthArray[i-1]-11;
m_YearArray[i-1]+1;
//cout<
<
"
"
this->
m_YearArray[i]<
-"
m_MonthArray[i]<
endl;
//---------------------获取状态离散点数---------------------------------//
if(this->
m_MonthArray[i]>
=6&
&
=10)
m_StateNum[i]=1;
else
m_StateNum[i]=51;
i+1<
\t"
\/"
m_StateNum[i]<
//----------动态分配内存并初始化径流资料、蒸发数据、状态数据等----------//
//一维数组
m_RunoffArray=newdouble[this->
m_EvapArray=newdouble[this->
m_OptVolumnArray=newdouble[this->
m_OptNArray=newdouble[this->
m_OptAbandonQ=newdouble[this->
m_OptUpWaterLevelArray=newdouble[this->
m_OptDownWaterLevelArray=newdouble[this->
m_OptVarialbe_q=newdouble[this->
m_OptMeanWaterHeadArray=newdouble[this->
m_OptNmaxArray=newdouble[this->
m_OptDamageDepth=newdouble[this->
//二维数组
m_OptDeciVar_q=newdouble*[this->
m_StateV=newdouble*[this->
m_OptArray=newlong*[this->
m_TarFun=newdouble*[this->
//this->
m_OptDeciVar_q[i]=newdouble[this->
m_StateNum[i]];
m_StateV[i]=newdouble[this->
m_OptArray[i]=newlong[this->
m_TarFun[i]=newdouble[this->
m_RunoffArray[i]=0.00;
m_EvapArray[i]=0.00;
m_OptVolumnArray[i]=0.00;
m_OptNArray[i]=0.00;
m_OptAbandonQ[i]=0.00;
m_OptUpWaterLevelArray[i]=0.00;
m_OptDownWaterLevelArray[i]=0.00;
m_OptVarialbe_q[i]=0.00;
m_OptMeanWaterHeadArray[i]=-1;
m_OptNmaxArray[i]=-1;
//最优轨迹对应的预想出力
m_OptDamageDepth[i]=0;
for(longj=0;
j<
m_StateNum[i];
j++)
//this->
m_OptDeciVar_q[i][j]=0.00;
m_StateV[i][j]=0.00;
m_OptArray[i][j]=0;
m_TarFun[i][j]=-1e+6;
//----------------//InputSystemParametetersfromfile//---------------//
ifstreammyFileIn1,myFileIn2,myFileIn3;
myFileIn1.open(DataFile1);
//系统特性参数文件
if(!
myFileIn1)
cout<
CannotOpenSystemParametersFile"
exit(0);
else
while(myFileIn1.good())
myFileIn1>
>
m_DeadWaterLevel>
m_DeadVolumn>
m_NormalWaterLevel
>
m_FloodLimitLevel>
m_FloodVmax>
m_NFloodVmax
m_UnitsNum>
m_InstallCapacity>
m_FirmCapacity_N
m_PotentialWaterLevel1>
m_PotentialCapacity_N1
m_PotentialWaterLevel2>
m_PotentialCapacity_N2
m_DesignAnnualGeneration>
m_CC>
m_LHC
m_LHmax>
m_Delta_t;
myFileIn1.close();
/*cout<
系统特性参数"
cout<
|=======================================================|"
|时段长度|Delta_T="
m_Delta_t<
s"
|死水位|DeadWaterLevel="
m_DeadWaterLevel<
m"
|死库容|DeadVolumn="
m_DeadVolumn<
亿立方米"
|正常蓄水位|NormalWaterLevel="
m_NormalWaterLevel<
|汛期防洪限制水位|FloodLimitLevel="
m_FloodLimitLevel<
|汛期最大库容|FloodPeriodVmax="
m_FloodVmax<
|非汛期最大库容|NonFloodPeriodVmax="
m_NFloodVmax<
|系统装机容量|InstallCapacity="
m_UnitsNum<
x"
m_InstallCapacity/2<
MW"
|系统保证出力|FirmCapacity="
m_FirmCapacity_N<
|水电站预想出力|"
;
|水头|"
setw(6)<
m_PotentialWaterLevel1<
m|"
setw(4)<
m_PotentialWaterLevel2<
||"
|出力|"
m_PotentialCapacity_N1<
MW|"
m_PotentialCapacity_N2<
|设计年发电量|DesignAnnualGeneration="
m_DesignAnnualGeneration<
kW.h"
|水电站出力系数|OutputCoefficient="
m_CC<
|水头损失系数|HeadLossCoefficient="
m_LHC<
|最大水头损失|HeadLossMax="
m_LHmax<
|径流系列起始年月|BeginTime="
m_BeginYear<
-0"
m_BeginMonth<
|=========================================================|"
*/
//-------------------------------//Inputrunoffdatafromfile//---------------------------//
//
//从文件中读取长系列径流数据
myFileIn2.open(DataFile2);
//径流文件
myFileIn2)
cou
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 动态 规划 进行 优化 调度 计算 C+ 程序代码