Я пытаюсь решить проблему MINLP с помощью решателя ANTIGONE (лицензированного в GAMS), и у меня возникают трудности с изменением дополнительных настроек решателя.
Сначала я вызываю решатель из Pyomo следующим образом.
solver = pe.SolverFactory('gams')
solver.options['mtype']= "minlp"
solution = solver.solve(model, solver = 'antigone')
Эта часть работает так, как должна, однако ANTIGONE не может закрыть пробел в оптимальности, поэтому я хотел бы изменить некоторые из более продвинутых параметров, представленных здесь https://www.gams.com/latest/docs/S_ANTIGONE.html.
Поэтому я сначала попытался изменить вызов решателя на следующую строку.
solution = solver.solve(model, solver='antigone', add_options=['option number_of_partitions 2;'])
Однако похоже, что add_options
предназначен только для встроенных опций GAMS, а не для специфичных для решателя.
В качестве примечания: при использовании этих расширенных параметров решателя в GAMS стандартной процедурой является создание файла параметров (т.е. antigone.opt
), в котором мы указываем желаемые параметры.
number_of_partitions 2
antigone.opt
сохраняется в том же каталоге, и файл .gms
вызывает этот файл со строкой GAMS_MODEL.optfile;
.
Возвращаясь к моей проблеме, при изменении этой опции из Pyomo я попробовал
solution = solver.solve(model, solver='antigone', add_options=['GAMS_MODEL.optfile;'])
но проблема в том, что Pyomo создает временный файл для решения проблемы, и, следовательно, я не могу добавить файл antigone.opt
до того, как он начнет решать.
Поэтому я вижу два варианта: (i) я могу найти способ создать файл antigone.opt
во временном файле через Pyomo до того, как решатель начнет решение (менее желательно, но он должен работать), или (ii) я должен напрямую изменить параметр из Pyomo (предпочтительно).
Любая помощь будет принята с благодарностью и заранее спасибо за ваше время!