python-3.x - 在python中为cplex求解器pyomo设置optimalitytarget参数

标签 python-3.x parameters cplex pyomo quadratic-programming

我正在尝试使用 cplex 求解器优化 pyomo 中的二次目标函数,并且得到此 CPLEX 错误 5002:目标不是凸的。具有不定目标的 QP 可以用最优目标 2 求解局部最优,或者用最优目标 3 求解全局最优。从 IBM 手册中我知道我们应该在 python 中设置 optimizationtarget 参数我有这个 globalqpex1.py ,现在我怎样才能设置参数有人能解释一下如何设置这个参数

假设我可以运行 python globalqpex1.py g 全局最优,但我没有任何 .sav 或 .lp 文件,而且我不知道它们是什么......进一步我在手册中发现我可以解决这个问题通过在python中设置parameters.optimalitytarget来解决问题 我应该如何以及在哪里添加 c.parameters.optimalitytarget.set(1)

这是我得到的错误 CPLEX 错误 5002:目标不是凸的。 可以解决目标不明确的QP 达到最优目标 2 的局部最优, 或具有最优目标 3 的全局最优。 预求解时间 = 0.00 秒。 (0.00 刻度) 屏障时间 = 0.00 秒。 (0.00 刻度)

错误终止,CPLEX 错误 5002。 求解时间 = 0.00 秒。 确定性时间 = 0.00 刻度(0.49 刻度/秒)

CPLEX> CPLEX 错误 1217:不存在解决方案。 没有写入文件。 CPLEX> [ 0.05] Pyomo 已完成 错误:加载模型时出现意外异常: 无法加载状态错误的 SolverResults 对象:错误

最佳答案

pyomo 中有两个不同的 CPLEX 接口(interface)。其中一种是使用 CPLEX 交互式 (cplex),另一种是利用 CPLEX Python API (cplex_direct)。在某些情况下,两个接口(interface)之间的参数设置看起来略有不同(例如,当参数在层次结构中的深度超过一级时)。通常,您可以使用 here 中描述的技术来设置参数。 .

无论哪种情况,对于optimality target parameter ,您应该能够使用以下内容:

solver = SolverFactory('cplex')
solver.options['optimalitytarget'] = 3

下面是我们设置 absolute MIP gap tolerance 的示例两个 CPLEX 接口(interface)之间的参数和语法略有不同:

# 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

关于python-3.x - 在python中为cplex求解器pyomo设置optimalitytarget参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56812526/

相关文章:

c# - 什么时候使用 C# ref 关键字是个好主意?

c - C 中参数名中有两个空值是什么意思?

c++ - 如何在 Visual Studio 调试器中访问 IloIntArray 元素?

c++ - CPLEX - 访问解决方案 C++ 时出错

python - 创建元组列表(以更优雅的方式)

python - 如何在 Python 3.3 中加密/解密字典?

python - 在列表理解中使用就地列表方法的替代方法?

python - 给定输入值时从列表列表中返回列表

javascript - 在javascript中传递函数

mathematical-optimization - cplex boolVarArray 给出 double 值