解混合互补模型时的错误

时间:2018-08-15 04:38:18

标签: python-3.x pyomo

直接使用PATH解算器,我无法解决以下问题。原始问题来自https://prod.sandia.gov/techlib-noauth/access-control.cgi/2015/155584.pdf,似乎声称问题已解决。使用非线性形式可以解决。

这是否是pyomo或PATH中的版本控制问题,很难分辨。 我正在运行pyomo 5.5.x和来自http://pages.cs.wisc.edu/~ferris/path.html

的pathampl
from pyomo.environ import *
from pyomo.mpec import *
model = ConcreteModel()
model.x1 = Var()
model.x2 = Var()
model.x3 = Var()
model.f1 = Complementarity(expr=complements(model.x1 >= 0,model.x1 + 2*model.x2 + 3*model.x3 >= 1))
model.f2 = Complementarity(expr=complements(model.x2 >= 0,model.x2 - model.x3 >= -1))

model.f3 = Complementarity(expr=complements(model.x3 >= 0,model.x1 + model.x2 >= -1))

from pyomo.opt import SolverFactory

opt = SolverFactory("pathampl")

results = opt.solve(model, load_solutions=True, tee=True)
#sends results to stdout
results.write()

相应的错误消息:

 *** EXIT - infeasible.

Major Iterations. . . . 0
Minor Iterations. . . . 0
Restarts. . . . . . . . 0
Crash Iterations. . . . 0
Gradient Steps. . . . . 0
Function Evaluations. . 0
Gradient Evaluations. . 0
Basis Time. . . . . . . 0.000000
Total Time. . . . . . . 0.000000
Residual. . . . . . . . inf
WARNING: Loading a SolverResults object with a warning status into
    model=unknown;
        message from solver=Path 4.7.01\x3a Infeasible.; 0 iterations (0 for
        crash); 0 pivots.; 0 function, 0 gradient evaluations.
# ==========================================================
# = Solver Results                                         =
# ==========================================================
# ----------------------------------------------------------
#   Problem Information
# ----------------------------------------------------------
Problem: 
- Lower bound: -inf
  Upper bound: inf
  Number of objectives: 1
  Number of constraints: 0
  Number of variables: 6
  Sense: unknown
# ----------------------------------------------------------
#   Solver Information
# ----------------------------------------------------------
Solver: 
- Status: warning
  Message: Path 4.7.01\x3a Infeasible.; 0 iterations (0 for crash); 0 pivots.; 0 function, 0 gradient evaluations.
  Termination condition: infeasible
  Id: 201
  Error rc: 0
  Time: 0.37000012397766113
# ----------------------------------------------------------
#   Solution Information
# ----------------------------------------------------------
Solution: 
- number of solutions: 0
  number of solutions displayed: 0

Displaying Solution

2 个答案:

答案 0 :(得分:1)

在没有人写出更好答案的情况下,您可以尝试使用SolverFactory('mpec_nlp').solve(model)来查看会发生什么。

如果您喜欢阅读*.nl文件,也可以model.write('tmp.nl')查看通过AMPL界面生成的内容。

答案 1 :(得分:0)

根据上述Bethany Nicholson的帖子,使用PATH 4.7.04将解决此问题。由于某些原因4.7.01返回错误。

Qi Chen的答复将解决问题,但不使用PATH。