【Gurobi报错解决】Solver not applicable (gurobi does not support signomial constraints)

简介: 【Gurobi报错解决】Solver not applicable (gurobi does not support signomial constraints)

电力系统优化方向小白,安装 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.

相关文章
|
16天前
|
算法 数据挖掘 数据处理
文献解读-Sentieon DNAscope LongRead – A highly Accurate, Fast, and Efficient Pipeline for Germline Variant Calling from PacBio HiFi reads
PacBio® HiFi 测序是第一种提供经济、高精度长读数测序的技术,其平均读数长度超过 10kb,平均碱基准确率达到 99.8% 。在该研究中,研究者介绍了一种准确、高效的 DNAscope LongRead 管道,用于从 PacBio® HiFi 读数中调用胚系变异。DNAscope LongRead 是对 Sentieon 的 DNAscope 工具的修改和扩展,该工具曾获美国食品药品管理局(FDA)精密变异调用奖。
23 2
文献解读-Sentieon DNAscope LongRead – A highly Accurate, Fast, and Efficient Pipeline for Germline Variant Calling from PacBio HiFi reads
|
1天前
|
机器学习/深度学习 测试技术
文献解读-DNAscope: High accuracy small variant calling using machine learning
在这项研究中,研究组证明了DNAscope在不同样本和不同覆盖度水平下都能达到比DNAseq更高的准确性。使用GA4GH分层区域进行的分层分析,能够确认DNAscope在大多数分层区域中都具有高准确性,并突显了DNAscope在插入缺失(indels)和包含变异检测较困难的基因组区域的分层中具有更高的准确性。DNAscope结合了GATK's HaplotypeCaller中使用的成熟数学和统计模型,以及用于变异基因型分析的机器学习方法,在保持计算效率的同时实现了卓越的准确性。
10 3
|
3月前
|
机器学习/深度学习 算法
【文献学习】Channel Estimation Method Based on Transformer in High Dynamic Environment
一种基于CNN和Transformer的信道估计方法,用于在高度动态环境中跟踪信道变化特征,并通过实验结果展示了其相比传统方法的性能提升。
56 0
|
PyTorch 算法框架/工具
Pytorch中Trying to backward through the graph和one of the variables needed for gradient错误解决方案
Pytorch中Trying to backward through the graph和one of the variables needed for gradient错误解决方案
2076 0
Pytorch中Trying to backward through the graph和one of the variables needed for gradient错误解决方案
ORB_SLAM2_CUDA : Make failed - Compiling examples - Undefined References
ORB_SLAM2_CUDA : Make failed - Compiling examples - Undefined References
105 0
|
机器学习/深度学习 存储 数据挖掘
Global Constraints with Prompting for Zero-Shot Event Argument Classification 论文解读
确定事件论元的角色是事件抽取的关键子任务。大多数以前的监督模型都利用了昂贵的标注,这对于开放域应用程序是不实际的。
72 0
|
算法 Java BI
【论文阅读】(2013)A goal-driven approach to the 2D bin packing and variable-sized bin packing problems
【论文阅读】(2013)A goal-driven approach to the 2D bin packing and variable-sized bin packing problems
164 0
【论文阅读】(2013)A goal-driven approach to the 2D bin packing and variable-sized bin packing problems
|
存储 算法 测试技术
【论文阅读】(2022)A goal-driven ruin and recreate heuristic for the 2D variable-sized bin packing prob...
【论文阅读】(2022)A goal-driven ruin and recreate heuristic for the 2D variable-sized bin packing prob...
126 0
【论文阅读】(2022)A goal-driven ruin and recreate heuristic for the 2D variable-sized bin packing prob...
|
机器学习/深度学习 计算机视觉
Re14:读论文 ILLSI Interpretable Low-Resource Legal Decision Making
Re14:读论文 ILLSI Interpretable Low-Resource Legal Decision Making
Re14:读论文 ILLSI Interpretable Low-Resource Legal Decision Making
|
Ubuntu Java Linux
开源线性规划求解器(Linear Programming solver)LP_Solve和CLP的PK
开源线性规划求解器(Linear Programming solver)LP_Solve和CLP的PK
2253 0
开源线性规划求解器(Linear Programming solver)LP_Solve和CLP的PK