Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Gekko解算器不满足约束,给出错误的解_Python_Python 3.x_Optimization_Nonlinear Optimization_Gekko - Fatal编程技术网

Python Gekko解算器不满足约束,给出错误的解

Python Gekko解算器不满足约束,给出错误的解,python,python-3.x,optimization,nonlinear-optimization,gekko,Python,Python 3.x,Optimization,Nonlinear Optimization,Gekko,我使用了Gekko解算器来优化函数,但它给出了错误的解决方案,即使在简单的问题中,它也不能满足给定的约束条件 从gekko导入gekko m=GEKKO(远程=False) a=m.Var(值=0,整数=True) b=m.Var(值=0,整数=True) #约束条件 m、 方程([a+b>7,a**2+b**2和=和 2.0 6.0 224.0 a+b>7 8.0 a^2+b^2<40 40.0 a=3.0 b=5.0 Objective: 152.0 a+b>=8 w

我使用了Gekko解算器来优化函数,但它给出了错误的解决方案,即使在简单的问题中,它也不能满足给定的约束条件

从gekko导入gekko
m=GEKKO(远程=False)
a=m.Var(值=0,整数=True)
b=m.Var(值=0,整数=True)
#约束条件
m、 方程([a+b>7,a**2+b**2<40])
#目标函数
m、 最大化(a**3+b**3)
m、 求解(disp=False)
打印(a.value[0])
打印(b.值[0])
最大值=a.值[0]**3+b.值[0]**3
打印(最大值)
输出:

2.0
6
224

在末尾添加检查显示Gekko在请求的公差范围内找到了正确的解决方案,尽管默认解算器是IPOPT,即使请求
integer=True
也能找到连续的解决方案

a = a.value[0]; b = b.value[0]
print('a+b>7',a+b)
print('a^2+b^2<40',a**2+b**2)

# 0.71611780666
# 6.2838821838
# 248.50000026418317
# a+b>7 6.99999999046
# a^2+b^2<40 40.00000001289459
如果数学意义上的
不允许7和40,则在约束条件上上移或下移一个整数,例如to
=8
=8\
a**2+b**2=8,a+b=8.0(满足约束条件)
a^2+b^2==7\

a**2+b**2考虑到我有多懒,你能提供预期的输出吗?预期的输出应该不是解决方案。我怀疑>和=和
2.0
6.0
224.0
a+b>7 8.0
a^2+b^2<40 40.0
a=3.0  b=5.0  Objective: 152.0
a+b>=8 with a+b=8.0 (constraint satisfied)
a^2+b^2=<39 with a^2+b^2=34.0 (constraint satisfied)