2024-04-29 03:17:55 发布
网友
我已经用python3编写了我的代码,并使用Gekko解算器解决了它
在10000次迭代之后,我得到了错误的最大迭代次数,并且没有找到解决方案。 那么,在第10000次迭代之后,我可以得到决策变量的值吗? 我的意思是,即使达到最大迭代次数,解算器在最后一次迭代中也必须有一个决策变量值。所以我想访问这些值。我该怎么做
问题: 1) 我正在用APOPT Solver解决一个MINLP问题。我的决策变量定义为整数。我已按照您的建议检索到第10000次迭代的结果。但是决策变量的值是非整数的。那么为什么APOPT Solver要计算非整数解呢
答复: 有一个选项可以选择什么是整数。默认公差为整数值0.05范围内的任何数字。 您可以通过以下方式进行更改: m、 解算器\u选项=['minlp\u整数\u tol 1']
2)我正在运行“m.options.MAX_ITER=100”的代码,并使用m=GEKKO()即使用远程服务器。但我的代码仍在运行10000次迭代
答:您可以通过以下方式进行选择: m、 解算器_选项=['minlp_最大迭代次数100']
非常感谢John Hedengren教授的及时回复
调用solve时,可以通过设置debug=0来访问解决方案:
solve
debug=0
m.solve(debug=0)
默认值为debug=1,当出现错误(如达到最大迭代次数)时引发异常。下面是一个通常在5次迭代中求解的示例。使用m.options.max_iter=4,它在达到成功解决方案之前达到最大迭代次数
debug=1
m.options.max_iter=4
from gekko import GEKKO m = GEKKO(remote=False) # create GEKKO model x = m.Var(value=0) # define new variable, initial value=0 y = m.Var(value=1) # define new variable, initial value=1 m.Equations([x + 2*y==0, x**2+y**2==1]) # equations m.options.MAX_ITER=4 m.solve(debug=0) # solve print([x.value[0],y.value[0]]) # print solution
使用debug=0,在迭代4中,当解算器几乎完成解时,返回错误的答案
[-0.89473125735, 0.44736562868]
如果您需要有关初始化问题的建议以帮助您找到成功的解决方案,我建议您阅读本文:
问题: 1) 我正在用APOPT Solver解决一个MINLP问题。我的决策变量定义为整数。我已按照您的建议检索到第10000次迭代的结果。但是决策变量的值是非整数的。那么为什么APOPT Solver要计算非整数解呢
答复: 有一个选项可以选择什么是整数。默认公差为整数值0.05范围内的任何数字。 您可以通过以下方式进行更改: m、 解算器\u选项=['minlp\u整数\u tol 1']
2)我正在运行“m.options.MAX_ITER=100”的代码,并使用m=GEKKO()即使用远程服务器。但我的代码仍在运行10000次迭代
答:您可以通过以下方式进行选择: m、 解算器_选项=['minlp_最大迭代次数100']
非常感谢John Hedengren教授的及时回复
盖柯
调用
solve
时,可以通过设置debug=0
来访问解决方案:默认值为
debug=1
,当出现错误(如达到最大迭代次数)时引发异常。下面是一个通常在5次迭代中求解的示例。使用m.options.max_iter=4
,它在达到成功解决方案之前达到最大迭代次数使用
debug=0
,在迭代4中,当解算器几乎完成解时,返回错误的答案如果您需要有关初始化问题的建议以帮助您找到成功的解决方案,我建议您阅读本文:
相关问题 更多 >
编程相关推荐