电力系统优化方向小白,安装 Yalmip Gurobi Cplex 之后,开始学习复现一些论文…
问题描述
今天在复现论文《考虑阶梯式碳交易机制与电制氢的综合能源系统热电优化》时,用 gurobi 求解遇到报错:
>> test_carbon Linear matrix variable 1x5 (full, real, 5 variables) Coefficient range: 1 to 1 Warning: Solver not applicable (gurobi does not support signomial constraints) 错误使用 test_carbon (line 286) 求解出错
意思是求解器不适用 (gurobi不支持符号约束)
虽然只是警告,但是出不了结果,只好检查程序中的约束部分
用 Cplex 求解同样出现报错:
>> test_carbon Linear matrix variable 1x5 (full, real, 5 variables) Coefficient range: 1 to 1 错误使用 sdpsettings (line 370) Verbosity level should be an non-negative integer. 出错 test_carbon (line 278) ops=sdpsettings('solver','cplex','verbose','2','usex0','0');
但这个报错的原因似乎不一样。
问题原因
对应论文部分:
我的代码部分:
C=[C, P_CHP_e==eta_CHP_e*P_g_CHP, % CHP转换电能 P_CHP_h==eta_CHP_h*P_g_CHP, % CHP转换热能 P_g_CHP_min<=P_g_CHP<=P_g_CHP_max, % 输入CHP天然气上下限 delta_P_g_CHP_min<=P_g_CHP(2:24)-P_g_CHP(1:23)<=delta_P_g_CHP_max, % CHP爬坡上下限 k_CHP_min<=(P_CHP_h./P_CHP_e)<=k_CHP_max, % 热电比上下限 ]; C=[C, P_HFC_e==eta_HFC_e*P_H2_HFC, % HFC转换电能 P_HFC_h==eta_HFC_h*P_H2_HFC, % HFC转换热能 P_H2_HFC_min<=P_H2_HFC<=P_H2_HFC_max, % 输入HFC氢能上下限 delta_P_H2_HFC_min<=P_H2_HFC(2:24)-P_H2_HFC(1:23)<=delta_P_H2_HFC_max, % HFC爬坡上下限 k_HFC_min<=(P_HFC_h./P_HFC_e)<=k_HFC_max, % 热电比上下限 ];
这部分代码是定义 CHP(热电联产)和 HFC(氢燃料电池)的一些约束,其余部分的约束更加简短,盲猜是热电比上下限部分的代码出了问题,因为出现了 (P_CHP_h./P_CHP_e) 和 (P_HFC_h./P_HFC_e) ,而 P_CHP_h、P_CHP_h、P_HFC_h、P_HFC_e 在前面定义过,都是单独的变量:
P_CHP_e=sdpvar(1,24); % CHP输出电能 P_CHP_h=sdpvar(1,24); % CHP输出热能 P_HFC_e=sdpvar(1,24); % HFC输出电能 P_HFC_h=sdpvar(1,24); % HFC输出热能
由此约束部分出现了两个变量。
问题解决
将不等式拆成两个:
C=[C, P_CHP_e==eta_CHP_e*P_g_CHP, % CHP转换电能 P_CHP_h==eta_CHP_h*P_g_CHP, % CHP转换热能 P_g_CHP_min<=P_g_CHP<=P_g_CHP_max, % 输入CHP天然气上下限 delta_P_g_CHP_min<=P_g_CHP(2:24)-P_g_CHP(1:23)<=delta_P_g_CHP_max, % CHP爬坡上下限 0.5*P_CHP_e<=P_CHP_h, %热电比上下限 P_CHP_h<=2.1*P_CHP_e, %热电比上下限 ]; C=[C, P_HFC_e==eta_HFC_e*P_H2_HFC, % HFC转换电能 P_HFC_h==eta_HFC_h*P_H2_HFC, % HFC转换热能 P_H2_HFC_min<=P_H2_HFC<=P_H2_HFC_max, % 输入HFC氢能上下限 delta_P_H2_HFC_min<=P_H2_HFC(2:24)-P_H2_HFC(1:23)<=delta_P_H2_HFC_max, % HFC爬坡上下限 0.5*P_HFC_e<=P_HFC_h, %HFC的热电比上下限 P_HFC_h<=2.1*P_HFC_e, %HFC的热电比上下限 ];
保证每个约束里面只有一个变量。
另外,上述代码在加了热电比上下限的约束之后,热电比仍然不可调(一直都是1),需要把下述代码注释之后热电比才有变化:
P_CHP_h==eta_CHP_h*P_g_CHP, % CHP转换热能 P_HFC_h==eta_HFC_h*P_H2_HFC, % HFC转换热能
论文:[1]陈锦鹏,胡志坚,陈颖光等.考虑阶梯式碳交易机制与电制氢的综合能源系统热电优化[J].电力自动化设备,2021,41(09):48-55.DOI:10.16081/j.epae.202109032.