Установка оптимального целевого параметра в python для cplex solver pyomo - PullRequest
1 голос
/ 28 июня 2019

Я пытаюсь оптимизировать квадратичную целевую функцию в pyomo с помощью cplex solver, и я получаю эту ошибку CPLEX 5002: цель не выпуклая.QP с неопределенной целью может быть решена для локальной оптимальности с целью оптимальности 2 или для глобальной оптимальности с целью оптимальности 3. Из руководства IBM я узнал, что мы должны установить параметр optimitytarget в python, у меня есть этот globalqpex1.py и теперь как я могуустановить параметр может кто-нибудь объяснить, как настроить этот параметр

дано, что я могу запустить python globalqpex1.py g global optim, но у меня нет файлов .sav или .lp, и я не знаю, что это такое... далее я обнаружил в руководстве, что я могу решить эту проблему, установив параметры .optimalitytarget в python, как и где я должен добавить c.parameters.optimalitytarget.set (1)

это ошибка, которую яполучить CPLEX Ошибка 5002: цель не выпуклая.QP с неопределенной целью может быть решена для локальной оптимальности с целью оптимальности 2 или для глобальной оптимальности с целью оптимальности 3. Время разрешения = 0,00 сек.(0,00 тиков) Барьерное время = 0,00 сек.(0,00 тиков)

Ошибка завершения, CPLEX Ошибка 5002. Время решения = 0,00 сек.Детерминированное время = 0,00 тиков (0,49 т / сек)

CPLEX> CPLEX Ошибка 1217: Решение не существует.Файл не написан.CPLEX> [0,05] Pyomo Finished ERROR: непредвиденное исключение при загрузке модели: невозможно загрузить объект SolverResults с плохим состоянием: ошибка

1 Ответ

1 голос
/ 28 июня 2019

В pyomo есть два разных интерфейса CPLEX.Одна из них предназначена для интерактивного взаимодействия с CPLEX (cplex), а другая использует API-интерфейс CPLEX Python (cplex_direct).В некоторых случаях установка параметров выглядит немного по-разному для двух интерфейсов (например, когда параметр находится в иерархии более чем на один уровень).Как правило, вы устанавливаете параметр, используя метод, описанный здесь .

В любом случае для целевого параметра оптимальности вы должны использовать следующее:

solver = SolverFactory('cplex')
solver.options['optimalitytarget'] = 3

Вот пример, в котором мы устанавливаем параметр абсолютный допуск на разрыв MIP , а синтаксис между двумя интерфейсами CPLEX немного отличается:

# Using the CPLEX interactive interface
solver = SolverFactory('cplex')
solver.options['mip tolerances absmipgap'] = 3

# Using the CPLEX Python API interface (i.e., use underscores)
solver = SolverFactory('cplex_direct')
solver.options['mip_tolerances_absmipgap'] = 3
...