Передача параметров 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 переменная окружения, которая задокументирована здесь.

Другие вопросы по тегам