Originally posted by: sanshui
Hi all,
I just completed an OPL coding, but I don't know why all the decision variables' value are null?
The data is attached and the coding is :
using CPLEX;
int T=96;
range k=1..T;
float Pw_pv_max=94.0100;
float Pload_max=993.8163;
float P_loadmax=902.7891;
float P_loadmin=897.4356;
float Price[k]=...;
float Pw_pv[k]=...; //从excel导入的数据
float Pload[k]=...; //联合系统的电网负荷预测出力,从excel导入的数据
float Pplan[k]=...; //联合系统的计划出力,从excel导入的数据
int Ns=8;
float e=0.1;
float w=0.45;
float Csu=15;
float Csd=1.5;
float efficiency=0.95;
float Psg_max=6; //蓄水储能发电最大值
float Psg_min=3;
float Psp_max=6; //蓄水储能抽水功率最大值
float Psp_min=3; //蓄水储能抽水最小值
float Esu_max=80; //蓄水储能上水池容量最大值
float Esu_min=10; //蓄水储能上水池容量最小值
float Esl_max=80; //蓄水储能下水池容量最大值
float Esl_min=10; //蓄水储能下水池容量最小值
dvar float+ Psg[k];
dvar float+ Psp[k];
dvar int+ Nup[k]; //开机数目
dvar int+ Ndp[k]; //停机数目
float Esu[k];
float Esl[k];
int Nus[k];
//***************目标函数
maximize
sum(m in k)(Price[m]*(Pw_pv[m]+Psg[m]-Psp[m])
- Csu*Nup[m]
- Csd*Ndp[m]
-w*Price[m]*(abs(Pw_pv[m]+Psg[m]-Psp[m]-Pplan[m])));
//**************************约束条件
subject to {
forall(m in 1..95)
ctBalance1: Esu
m+1==Esu[m]+efficiency*Psp
m+1-Psg
m+1;//上水位容量约束
forall(m in 1..95)
ctBalance2: Esl
m+1==Esl[m]-efficiency*Psp
m+1+Psg
m+1;//下水位容量约束
forall(m in k)
ctuCap: Esu_min<=Esu[m]<=Esu_max;//上水位容量不等式约束
forall(m in k)
ctlCap: Esl_min<=Esl[m]<=Esl_max;//上水位容量不等式约束
forall(m in k)
ctdemand:10<=Esu[T]-Esu[1]<=60; //上水位周期始末容量约束
forall(m in 2..T)
ctkaiji_number: Nus[m]==Nus
m-1+Nup[m]-Ndp[m];//抽水泵个数前后时段的关系
forall(m in k)
ctn: Nus[m]<=Ns; //抽水泵个数约束
forall(m in k)
ctsp: Nus[m]*Psp_min<=Psp[m]<=Nus[m]*Psp_max; //抽水功率约束
forall(m in 2..T)
ctsg:(Psg_min<=Psg[m]<=(Ns-Nus
m-1)*Psg_max)||(Psg[m]==0); //蓄水电站发电功率约束
forall(m in k)
ctnm: sum(m in k)(Nup[m]+Ndp[m])<=2*Ns; //抽水蓄能电站水泵机组的总启停次数约束
forall(m in k)
ctsum: sum(m in k)Nup[m]*Ndp[m]+Psp[m]*Psg[m]<=0;//抽水发电互斥约束
forall(m in k)
ct4:(1-e)*Pplan[m]<=Pw_pv[m]+Psg[m]-Psp[m]<=(1+e)*Pplan[m];//跟随计划出力约束
}
//*******************************************************
#DecisionOptimization#OPLusingCPLEXOptimizer