gpt4 book ai didi

python - 将 CPLEX 参数传递给 CVXPY

转载 作者:行者123 更新时间:2023-12-05 07:31:29 27 4
gpt4 key购买 nike

使用 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 的页面尽管不清楚哪些适用于我的二次问题。此外,CVXPY documentation已通过其他求解器但未通过 CPLEX 的选项。

最佳答案

这将在未来发生变化(参见 this 拉取请求),但使用 cvxpy 1.0.6,您可以执行以下操作(注意:这是未记录的行为;更多信息请参见下文):

prob.solve(solver=CPLEX, advance=0)

advance=0 将“关闭”advanced start switch范围。因此,如果 CPLEX Python API 中的参数名称是 parameters.advance,您将传入 parameters. 之后的部分(即,advance ) 和值作为关键字参数。传递给 solve 的任何额外关键字参数方法以这种方式解释。对于调试,您可能应该设置 verbose=True(solve 的标准关键字参数之一)以打开引擎日志;参数设置将显示在日志的顶部。

这种行为没有被记录在案是有充分理由的。它不允许您设置类似 data consistency checking and modeling assistance 的参数. CPLEX Python API 中的参数名称是 parameters.read.datacheckread.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})

关于python - 将 CPLEX 参数传递给 CVXPY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51772382/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com