Python 对Gekko整数变量求平方时的解决方案不正确
如果将布尔变量初始化为0,则会得到错误的解决方案(0)。如果我将其初始化为1,则得到正确的解决方案(1) 返回:Python 对Gekko整数变量求平方时的解决方案不正确,python,gekko,Python,Gekko,如果将布尔变量初始化为0,则会得到错误的解决方案(0)。如果我将其初始化为1,则得到正确的解决方案(1) 返回: Successful solution Objective: 0. 使用b:[0] 这是前一个问题()的后续问题,该问题涉及两个gekko数组与gekko整数变量的矩阵乘法模型。我相信我已经找到了这个问题的根源。试试这个: 从gekko导入gekko m=GEKKO() b=m.Var(值=0,整数=True) m、 方程(b>=0) m、 方程式(bAPOPT解算器是一个局部极
Successful solution
Objective: 0.
使用b:[0]
这是前一个问题()的后续问题,该问题涉及两个gekko数组与gekko整数变量的矩阵乘法模型。我相信我已经找到了这个问题的根源。试试这个:
从gekko导入gekko
m=GEKKO()
b=m.Var(值=0,整数=True)
m、 方程(b>=0)
m、 方程式(bAPOPT
解算器是一个局部极小值,它假设只有一个局部极小值。它也不检查二阶导数,以区分x=0
处的局部极小值和局部极大值。Hernán Alarcón给出了一个潜在的解决方案,其中不等式约束也得到了解决。这导致解算器无法执行st接受最初的猜测作为解决方案,但要开始搜索并意识到有更好的解决方案。至少还有两种方法可以找到正确的解决方案
用x>=1e-3初始化
不要在x=0
处初始化,而是尝试在任何不符合条件的值处初始化x
从gekko导入gekko
m=GEKKO(远程=False)
b=m.Var(lb=0,ub=1,integer=True,value=1e-3)
m、 最大化(b**2)
m、 选项。解算器=1
m、 求解(disp=False)
打印(-m.options.OBJFCNVAL)
切换解算器
这是一个整数优化问题,但非线性规划(NLP)解算器(如IPOPT
)也可以解决value=0
的问题
从gekko导入gekko
m=GEKKO(远程=False)
b=m.Var(lb=0,ub=1,integer=True,value=0)
m、 最大化(b**2)
m、 选项。解算器=3
m、 求解(disp=False)
打印(-m.options.OBJFCNVAL)
Successful solution
Objective: 0.
[1.0]