Передача параметров CPLEX в CVXPY
Как передать допуски и другие параметры через CVXPY при использовании решателя CPLEX?
from cvxpy import Problem, Minimize
from cvxpy.settings import CPLEX
costs = ...
constraints = ...
prob = Problem(Minimize(costs), constraints)
prob.solve(solver=CPLEX, ...)
Я вижу страницу параметров CPLEX, хотя неясно, какие из них применимы к моей квадратичной задаче. Кроме того, в документации CVXPY есть опции для других решателей, но не для CPLEX.
1 ответ
Это изменится в будущем (см. Этот запрос извлечения), но с помощью cvxpy 1.0.6 вы можете сделать следующее (ПРИМЕЧАНИЕ: это недокументированное поведение; подробнее см. Ниже):
prob.solve(solver=CPLEX, advance=0)
advance=0
отключит параметр расширенного пуска. Итак, если имя параметра parameters.advance
в CPLEX Python API, вы будете передавать в части после parameters.
(То есть, advance
) и значение в качестве ключевого аргумента. Любые дополнительные аргументы ключевых слов, которые передаются в метод решения, интерпретируются таким образом. Для отладки вы должны установить verbose=True
(один из стандартных аргументов ключевого слова solve
) включить логи двигателя; настройки параметров будут отображаться в верхней части журнала.
Это поведение не было задокументировано по уважительной причине. Он не позволяет устанавливать такие параметры, как проверка согласованности данных и помощь в моделировании. Имя этого параметра в CPLEX Python API parameters.read.datacheck
но read.datacheck
не может использоваться в качестве аргумента ключевого слова в Python (это приведет к синтаксической ошибке).
В качестве обходного пути рассмотрите возможность использования ILOG_CPLEX_PARAMETER_FILE
переменная окружения, которая задокументирована здесь.