Как получить файл `nl` из `pyomo` из решателя сценариев `pyomo`?

Я строю много моделей, используя pyomo, и, насколько я понимаю, pyomo переформулирует модели перед их решением.

Я хочу точно знать, как выглядит модель, когда она передается в файлы решателя ipopt и couenne.

Из того, что я вижу здесь, мне непонятно, как чтобы получить файл nl из скрипта (но я вижу, как получить его из командной строки).

Вот как я решаю модели в pyomo:

ipopt_solver = SolverFactory('ipopt')
ipopt_results_solver = ipopt_solver.solve(my_model, tee=True)
print ipopt_results_solver

couenne_solver = SolverFactory('couenne')
couenne_results_solver = couenne_solver.solve(my_model, tee=True)
print couenne_results_solver

Как получить файл nl непосредственно перед решением? (и я предполагаю, что так же легко выдать другой формат, кроме nl).


person makansij    schedule 11.06.2017    source источник


Ответы (1)


Если вам нужен только файл NL, вы можете вызвать метод write для модели с именем файла, которое заканчивается на .nl (например, my_model.write('junk.nl').

Если вы хотите указать объекту решателя не удалять временные файлы решателя, чтобы вы могли получить к ним доступ после решения, вы должны добавить keepfiles=True к вызову решения. Это распечатает расположение временных файлов решателя. Если вам нужно получить к ним доступ из скрипта, я полагаю, что имя файла NL можно найти как одну из записей в атрибуте списка _problem_files объекта решателя. Имя файла журнала хранится в атрибуте _log_file.

person Gabe Hackebeil    schedule 11.06.2017