Получение значений из IPOPT Display Pyomo - PullRequest
0 голосов
/ 13 декабря 2018

Вот мой код для Конкретной модели Розенброка.

from pyomo.environ import *
from pyomo.opt import SolverFactory
import numpy as np
import math
import statistics
import time

m = ConcreteModel()

m.x = Var()
m.y = Var()
m.z = Var()

def rosenbrock(model):
    return (1.0-m.x)2 + 100.0*(m.y - m.x2)2 + (1.0-m.y)2 + 100.0*(m.z - m.y2)2

m.obj = Objective(rule=rosenbrock, sense=minimize)

dist = 0.0
xval = yval = zval = error = times = []
for i in range(50):
    m.x = np.random.uniform(low=-5.0, high=5.0)
    m.y = np.random.uniform(low=-5.0, high=5.0)
    m.z = np.random.uniform(low=-5.0, high=5.0)
    solver = SolverFactory('ipopt')
    t1 = time.time()
    results = solver.solve(m, tee=True)

Строка solver.solve при прохождении тройника = True выводит на экран эту прекрасную демонстрацию всех видов приятной информации.Я хочу получить доступ к этой информации из распечатки и изучил документацию по Pyomo и IPOPT и не могу понять, как получить доступ к значениям, которые выводятся на экран.Я также включил короткий пример распечатки, я хочу сохранять значения из каждого прогона, чтобы я мог выполнять итерацию и собирать статистику по всему диапазону.

Number of nonzeros in equality constraint Jacobian...:        0
Number of nonzeros in inequality constraint Jacobian.:        0
Number of nonzeros in Lagrangian Hessian.............:        5

Total number of variables............................:        3
                     variables with only lower bounds:        0
                variables with lower and upper bounds:        0
                     variables with only upper bounds:        0
Total number of equality constraints.................:        0
Total number of inequality constraints...............:        0
        inequality constraints with only lower bounds:        0
   inequality constraints with lower and upper bounds:        0
        inequality constraints with only upper bounds:        0

**** Пропущено ****

Number of objective function evaluations             = 45
Number of objective gradient evaluations             = 23
Number of equality constraint evaluations            = 0
Number of inequality constraint evaluations          = 0
Number of equality constraint Jacobian evaluations   = 0
Number of inequality constraint Jacobian evaluations = 0
Number of Lagrangian Hessian evaluations             = 22
Total CPU secs in IPOPT (w/o function evaluations)   =      0.020
Total CPU secs in NLP function evaluations           =      0.000

Мне нужны некоторые из этих значений, но я не вижу подходящего интерфейса для доступа к ним из моего поиска документации, какие-нибудь мастера знают, как это сделать?Благодарю.

1 Ответ

0 голосов
/ 13 декабря 2018

См. Эту оболочку Ipopt solver, которая была добавлена ​​в Pyomo.По сути, это парсер для выходного журнала Ipopt, и вы должны иметь возможность обобщать / расширять его для сбора любых значений, которые в данный момент не собраны.

https://github.com/Pyomo/pyomo/blob/master/pyomo/contrib/parmest/ipopt_solver_wrapper.py

...