Я использую Pyomo 5.6.8 и пытаюсь решить проблему нелинейной оптимизации, используя MindtPySolver
.
У меня нет проблем на моей локальной машине, я просто вызываю метод solve
с этими аргументами:
SolverFactory('mindtpy').solve(model, mip_solver='cbc', nlp_solver='ipopt')
Однако, когда я go облако на Azure, Pyomo не получает пути к решателям CB C и IPOPT. Когда мне нужно решить линейную проблему, я могу обойти эту проблему, используя следующую команду, добавив аргумент executable
при создании экземпляра SolverFactory
с помощью решателя LP:
SolverFactory("cbc", executable="/path/to/my/virtual/env/bin/cbc")
В моем не- случай линейного программирования, MindtpySolver
не принимает дополнительный аргумент. Я посмотрел на исходный код do c & и не смог найти опцию для указания пути решения, которая, к сожалению, не распознается по умолчанию в моей среде Azure.
Я попытался передать опции, используя " Параметры solver_args "найдены в исходном коде следующим образом:
SolverFactory('mindtpy').solve(
model,
nlp_solver_args={
"executable": "/path/to/my/virtual/env/bin/ipopt"
},
mip_solver_args={
"executable": "/path/to/my/virtual/env/bin/cbc"
},
mip_solver='cbc', nlp_solver='ipopt',
)
Но я все еще получаю" ВНИМАНИЕ: Не удалось найти исполняемый файл 'ipopt', который требуется для solver", например ошибки. Я настаиваю на том, что все решатели (здесь cb c и ipopt) можно найти в моей виртуальной среде. Есть ли способ указать путь решателя, используя MindtPySolver
?