Python 3.x Anaconda中的pyomo解算器(与命令行不同的结果)

Python 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

我正在运行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-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命令做了一些额外的工作,以人类可读的形式输出结果。基本步骤是:

  • 建立模型
  • 调用求解(结果将自动加载)
  • 使用人类可读的名称从模型中提取解决方案
  • 打印结果
  • 在步骤2中,“结果自动加载”表示取下存储在结果对象上的解决方案对象并将其加载到模型中。这会导致在脚本中打印结果对象时出现令人困惑的“解决方案数:0”输出


    如果希望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