Изменение параметров Bonmin (линейный решатель IPOPT) в Pyomo - PullRequest
1 голос
/ 20 апреля 2020

Я использую Bonmin через Pyomo / Python, на машине Windows. Bonmin использует через двоичные файлы, а также решатели HSL. Я мог бы изменить солвер по умолчанию для Bonmin, но IPOPT все еще использует MUMPS в качестве линейного решателя.

Я попытался включить файл bonmin.opt в папки (исполняемый файл Bonmin или файл .py), но он Pyomo не интерпретируется.

Для назначения линейного решателя Bonmin я использую следующую командную строку:

solver.options ['linear_solver'] = 'ma27'

Для назначения линейного решателя для IPOPT в Bonmin я пробовал много разных команд, но не смог найти ни одной, которая работала. Примеры:

solver.options ['ipopt.linear_solver'] = 'ma27'

solver.options ['ipopt_linear_solver'] = 'ma27'

А также многие другие различные синтаксис. Я искал руководства Bonmin и IPOPT, но все равно получаю то же предупреждение, если синтаксис принят:

ПРИМЕЧАНИЕ. По умолчанию вы используете Ipopt с линейным решателем MUMPS. Другие линейные решатели могут быть более эффективными (см. Документацию Ipopt).

В противном случае синтаксис даже не принимается.

У вас есть предложения?

1 Ответ

0 голосов
/ 20 апреля 2020

Согласно документации BONMIN здесь , если вы хотите установить параметры для Ipopt (при использовании внутри BONMIN), вы должны установить их в файле bonmin.opt.

Что-то вроде это может, хоп

import pyomo.opt
with pyomo.opt.SolverFactory("bonmin") as solver:
    solver.options.option_file_name = "bonmin.opt"
    with open("bonmin.opt", "w") as f:
        # f.write() # Here you can specify options for BONMIN using the "bonmin." prefix
        f.write("linear_solver ma27\n") # This is the IPOPT option
    solver.solve(model)

Более подробную информацию о файлах опций для IPOPT можно найти здесь .

...