正如标题所说,我试图找出GEKKO中使用的线性求解器,用于解决remote=True和remote=False的问题。我也很好奇是否有可能改变这一点,就像在Pyomo中一样。我无法在Gekko文档(https://gekko.readthedocs.io/en/latest/)或APMonitor文档(https://apmonitor.com/wiki/)中找到对此的任何参考。
有人熟悉Gekko的内部吗?我是怎么知道的?
谢谢!
Gekko中的所有解都是非线性规划(NLP)或混合整数非线性规划(MINLP)。非线性规划求解器使用线性求解器迭代求解直线搜索问题。公共服务器(remote=True
)使用MA57,而本地分发的版本(remote=False
)使用可分发的称为MUMPS的线性求解器。然而,目前还没有直接求解lp的线性规划求解器。MINLP求解器可以解决LP、QP、QPQC、MILP、NLP和MINLP问题。下面是在IPOPT中指定MA57求解器的示例代码。
from gekko import GEKKO
m = GEKKO(remote=True)
m.options.SOLVER=3
m.solver_options = ['linear_solver ma57']
来自文档:
SOLVER选择要使用的求解器来尝试找到一个解。有免费的求解器:1:APOPT, 2: BPOPT, 3: IPOPT随软件的公共版本分发。公共版本中没有包含其他解决方案,需要商业许可。IPOPT通常最适合具有大量自由度的问题,或者在没有良好的初始猜测的情况下开始。APOPT通常在从先前的解决方案热启动或当自由度(变量数-方程数)少于2000时是最好的。APOPT也是处理混合整数问题的唯一求解器。使用选项0比较所有可用的求解器。