在 python 中为 cplex 求解器 pyomo 设置 optimalitytarget 参数
Setting optimalitytarget parameter in python for cplex solver pyomo
我正在尝试使用 cplex 求解器优化 pyomo 中的二次 objective 函数,但我收到此 CPLEX 错误 5002:objective 不是凸函数。具有不确定 objective 的 QP 可以通过最优目标 2 求解到局部最优,或者通过最优目标 3 求解到全局最优。从 IBM 手册中我知道我们应该在 python 中设置 optimalitytarget 参数我有这个 globalqpex1.py 现在我该如何设置参数 谁能解释一下如何设置这个参数
据说我可以 运行 python globalqpex1.py g 全局最优,但我没有任何 .sav 或 .lp 文件,我也不知道它们是什么...我在手册中进一步发现,我可以通过在 python 中设置 parameters.optimalitytarget 来解决这个问题
我应该如何以及在哪里添加
c.parameters.optimalitytarget.set(1)
这是我得到的错误
CPLEX 错误 5002:objective 不是凸的。
QP不定objective可以解
到最优目标为 2 的局部最优,
或具有最优目标 3 的全局最优。
预求解时间 = 0.00 秒。 (0.00 刻度)
屏障时间 = 0.00 秒。 (0.00 个刻度)
错误终止,CPLEX 错误 5002。
求解时间 = 0.00 秒。
确定性时间 = 0.00 个刻度 (0.49 ticks/sec)
CPLEX> CPLEX 错误 1217:不存在解决方案。
没有写入文件。
CPLEX> [ 0.05] Pyomo 完成
错误:加载模型时发生意外异常:
无法加载状态错误的 SolverResults 对象:错误
pyomo 中有两个不同的 CPLEX 界面。有一种是针对 CPLEX 交互式的 (cplex
),还有一种是利用 CPLEX Python API (cplex_direct
)。在某些情况下,两个接口之间的设置参数看起来略有不同(例如,当参数在层次结构中超过一层时)。通常,您使用 here.
中描述的技术设置参数
无论哪种情况,对于 optimality target parameter,您应该能够使用以下内容:
solver = SolverFactory('cplex')
solver.options['optimalitytarget'] = 3
这是我们设置 absolute MIP gap tolerance 参数的示例,两个 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
我正在尝试使用 cplex 求解器优化 pyomo 中的二次 objective 函数,但我收到此 CPLEX 错误 5002:objective 不是凸函数。具有不确定 objective 的 QP 可以通过最优目标 2 求解到局部最优,或者通过最优目标 3 求解到全局最优。从 IBM 手册中我知道我们应该在 python 中设置 optimalitytarget 参数我有这个 globalqpex1.py 现在我该如何设置参数 谁能解释一下如何设置这个参数
据说我可以 运行 python globalqpex1.py g 全局最优,但我没有任何 .sav 或 .lp 文件,我也不知道它们是什么...我在手册中进一步发现,我可以通过在 python 中设置 parameters.optimalitytarget 来解决这个问题 我应该如何以及在哪里添加 c.parameters.optimalitytarget.set(1)
这是我得到的错误 CPLEX 错误 5002:objective 不是凸的。 QP不定objective可以解 到最优目标为 2 的局部最优, 或具有最优目标 3 的全局最优。 预求解时间 = 0.00 秒。 (0.00 刻度) 屏障时间 = 0.00 秒。 (0.00 个刻度)
错误终止,CPLEX 错误 5002。 求解时间 = 0.00 秒。 确定性时间 = 0.00 个刻度 (0.49 ticks/sec)
CPLEX> CPLEX 错误 1217:不存在解决方案。 没有写入文件。 CPLEX> [ 0.05] Pyomo 完成 错误:加载模型时发生意外异常: 无法加载状态错误的 SolverResults 对象:错误
pyomo 中有两个不同的 CPLEX 界面。有一种是针对 CPLEX 交互式的 (cplex
),还有一种是利用 CPLEX Python API (cplex_direct
)。在某些情况下,两个接口之间的设置参数看起来略有不同(例如,当参数在层次结构中超过一层时)。通常,您使用 here.
无论哪种情况,对于 optimality target parameter,您应该能够使用以下内容:
solver = SolverFactory('cplex')
solver.options['optimalitytarget'] = 3
这是我们设置 absolute MIP gap tolerance 参数的示例,两个 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