Python 3.x Anaconda中的pyomo解算器(与命令行不同的结果)
我正在运行PDF第64页的rosenbrock.py示例,它类似于pyomo\u examples\doc\pyomobook\ch\rosenPython 3.x Anaconda中的pyomo解算器(与命令行不同的结果),python-3.x,pyomo,Python 3.x,Pyomo,我正在运行PDF第64页的rosenbrock.py示例,它类似于pyomo\u examples\doc\pyomobook\ch\rosen from pyomo.environ import * model = ConcreteModel() model.x = Var(initialize=-1.2, bounds=(-2, 2)) model.y = Var(initialize=1.0, bounds=(-2, 2)) model.obj = Objective(expr=(1-mo
from pyomo.environ import *
model = ConcreteModel()
model.x = Var(initialize=-1.2, bounds=(-2, 2))
model.y = Var(initialize=1.0, bounds=(-2, 2))
model.obj = Objective(expr=(1-model.x)**2 +
100*(model.y-model.x**2)**2,sense=minimize)
我在Windows1064位下将Anaconda与Python3.6结合使用,并且在路径中安装了GLPK和IPOPT(IPOPT是SolverStudio安装的一部分)。我可以从命令行运行示例,并得到以下Abbrevated结果:
>pyomo solve rosen.py --solver=ipopt --summary
Number of solutions: 1
Solution Information
Gap: None
Status: optimal
Function Value: 2.9895642187051186e-17
Solution Summary
Variables:
x : Value: 0.9999999945428673
y : Value: 0.9999999890517721
Objectives: Value: 2.9895642187051186e-17
Constraints: None
如果我在IPython/Anaconda中使用SolverFactory运行相同的模型:
opt = SolverFactory("ipopt", executable=
"E:\\SolverStudio\\SolverStudio\\Solvers\\64bit\\ipopt.exe")
results = opt.solve(model)
print(results)
我得到了一个“终止条件:最优”的结果,但解表示“解的数量:0”
结果表明,问题不是有界的,意义是未知的。我可以在py中使用与命令行相同的模型吗?当然,我需要以某种方式更改它吗?我希望在命令行和IPython/Anaconda中使用相同的Python脚本。pyomo命令做了一些额外的工作,以人类可读的形式输出结果。基本步骤是:
如果希望Pyomo将solution对象保留在results对象上,则应将
load\u solutions=False
传递给solve方法。然后,在检查状态并验证结果对象是否包含解决方案(len(results.solution)>0
)后,您可以使用model.solutions.load\u from(results)
将解决方案手动加载到模型中。谢谢你的回复
Problem:
Lower bound: -inf
Upper bound: inf
Number of objectives: 1
Number of constraints: 0
Number of variables: 2
Sense: unknown
Solver:
Status: ok
Message: Ipopt 3.12.1\x3a Optimal Solution Found
Termination condition: optimal
Id: 0
Error rc: 0
Time: 0.5311787128448486
Solution:
number of solutions: 0
number of solutions displayed: 0