如何确定哪些约束或变量边界使GAMS模型不可行?

时间:2017-05-25 02:05:55

标签: optimization nonlinear-optimization gams-math

我的GAMS模型(NLP)中的求解摘要返回以下内容:

y.lo = 0, y.up = 0.15

我的一个变量的界限是:

y.lo = 0, y.up = 0.12

如果我将界限更改为:

**** SOLVER STATUS     1 Normal Completion         
**** MODEL STATUS      2 Locally Optimal           
**** OBJECTIVE VALUE         66013164.0000

模型然后收敛并给出以下内容:

y.l = 0.12

事实证明,最终的变量级别是

{{1}}

即使解(0.12)在搜索空间内,GAMS如何确定模型在第一种情况下是不可行的(上限= 0.15)? (顺便说一下,我正在使用ANTIGONE解算器)

此外,是否有任何有条不紊的方法来确定哪些约束/变量边界导致模型不可行?

为了找到这个(看似不合逻辑的)错误,我不得不花费数小时猜测并检查模型中的任意细节,没有押韵或理由。必须有更好的方法,对吧?

1 个答案:

答案 0 :(得分:0)

该问题不是GAMS错误,而是您正在使用的解算器。你试过CONOPT吗?

您可以在lst文件中看到不可行的约束。一些方程应该有(*** INFES)标记

另外,为了解决您的问题,我会尝试为NLP解算器提供一个初始解决方案,该解决方案在某种程度上足够接近最优解决方案,或者至少是可行的。

我还会尝试检查您正在使用的解算器的选项,以便以可行的起点启动解决方案过程。

非凸优化并不容易。

我希望这会有所帮助。