将 CPLEX 参数传递给 CVXPY
Passing CPLEX Parameters to CVXPY
使用 CPLEX 求解器时如何通过 CVXPY 传递公差和其他参数?
from cvxpy import Problem, Minimize
from cvxpy.settings import CPLEX
costs = ...
constraints = ...
prob = Problem(Minimize(costs), constraints)
prob.solve(solver=CPLEX, ...)
我看到 CPLEX Parameters though it is unclear which ones apply to my quadratic problem. Also, the CVXPY documentation 的一个页面已经通过其他求解器的选项,但不是 CPLEX。
这将在未来改变(参见 this 拉取请求),但使用 cvxpy 1.0.6,您可以执行以下操作(注意:这是未记录的行为;更多信息请参见下文):
prob.solve(solver=CPLEX, advance=0)
advance=0
将转 "off" advanced start switch parameter. So, if the parameter name is parameters.advance
in the CPLEX Python API, you would pass in the part after parameters.
(i.e., advance
) and the value as a keyword argument. Any extra keyword arguments that are passed to the solve 方法都是这样解释的。对于调试,您可能应该设置 verbose=True
(solve
的标准关键字参数之一)以打开引擎日志;参数设置将显示在日志的顶部。
没有记录这种行为是有充分理由的。它不允许您设置 data consistency checking and modeling assistance 之类的参数。 CPLEX Python API 中的参数名称是 parameters.read.datacheck
但 read.datacheck
不能用作 Python 中的关键字参数(这会导致语法错误) .
作为解决方法,请考虑使用 ILOG_CPLEX_PARAMETER_FILE
环境变量,该变量记录在 here.
编辑:cvxpy 1.0.8 不再需要上述解决方法。也就是说,您现在应该能够设置所有参数,而不管它们在参数层次结构中的什么位置。不过,您需要使用可选的 cplex_params
参数。把它和 verbose=True
结合起来很好,这样你就可以在引擎日志中看到参数设置。例如:
prob.solve(solver=cvxpy.CPLEX,
verbose=True,
cplex_params={"mip.tolerances.absmipgap": 1e-07,
"benders.strategy": 3})
使用 CPLEX 求解器时如何通过 CVXPY 传递公差和其他参数?
from cvxpy import Problem, Minimize
from cvxpy.settings import CPLEX
costs = ...
constraints = ...
prob = Problem(Minimize(costs), constraints)
prob.solve(solver=CPLEX, ...)
我看到 CPLEX Parameters though it is unclear which ones apply to my quadratic problem. Also, the CVXPY documentation 的一个页面已经通过其他求解器的选项,但不是 CPLEX。
这将在未来改变(参见 this 拉取请求),但使用 cvxpy 1.0.6,您可以执行以下操作(注意:这是未记录的行为;更多信息请参见下文):
prob.solve(solver=CPLEX, advance=0)
advance=0
将转 "off" advanced start switch parameter. So, if the parameter name is parameters.advance
in the CPLEX Python API, you would pass in the part after parameters.
(i.e., advance
) and the value as a keyword argument. Any extra keyword arguments that are passed to the solve 方法都是这样解释的。对于调试,您可能应该设置 verbose=True
(solve
的标准关键字参数之一)以打开引擎日志;参数设置将显示在日志的顶部。
没有记录这种行为是有充分理由的。它不允许您设置 data consistency checking and modeling assistance 之类的参数。 CPLEX Python API 中的参数名称是 parameters.read.datacheck
但 read.datacheck
不能用作 Python 中的关键字参数(这会导致语法错误) .
作为解决方法,请考虑使用 ILOG_CPLEX_PARAMETER_FILE
环境变量,该变量记录在 here.
编辑:cvxpy 1.0.8 不再需要上述解决方法。也就是说,您现在应该能够设置所有参数,而不管它们在参数层次结构中的什么位置。不过,您需要使用可选的 cplex_params
参数。把它和 verbose=True
结合起来很好,这样你就可以在引擎日志中看到参数设置。例如:
prob.solve(solver=cvxpy.CPLEX,
verbose=True,
cplex_params={"mip.tolerances.absmipgap": 1e-07,
"benders.strategy": 3})