我的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解算器)
此外,是否有任何有条不紊的方法来确定哪些约束/变量边界导致模型不可行?
为了找到这个(看似不合逻辑的)错误,我不得不花费数小时猜测并检查模型中的任意细节,没有押韵或理由。必须有更好的方法,对吧?
答案 0 :(得分:0)
该问题不是GAMS错误,而是您正在使用的解算器。你试过CONOPT吗?
您可以在lst文件中看到不可行的约束。一些方程应该有(*** INFES)标记
另外,为了解决您的问题,我会尝试为NLP解算器提供一个初始解决方案,该解决方案在某种程度上足够接近最优解决方案,或者至少是可行的。
我还会尝试检查您正在使用的解算器的选项,以便以可行的起点启动解决方案过程。
非凸优化并不容易。
我希望这会有所帮助。