【问题标题】:How to deal with numBest(solver status) in cplex如何处理 cplex 中的 numBest(求解器状态)
【发布时间】:2020-07-07 17:49:00
【问题描述】:

Cplex 给了我 numBest 的错误。我以为和时间限制有关,但是调用cplex.setParam(IloCplex::Param::TimeLimit, 36000)后,这个问题还是存在。

客观意义:最小化

变量:78 [框:78,Qobj:60]

客观非零:30

Objective Q 非零:116

线性约束:48 [等于:48]

非零:168

RHS 非零:33

变量:最小 LB:-300.0000 最大 UB:300.0000

目标非零:最小值:2.200000 最大值:8.000000

Objective Q 非零值:最小值:0.1800000 最大值:3.200000

线性约束:非零:最小值:0.02990608 最大值:1.000000

RHS 非零值:最小值:0.01013009 最大值:1.544200

这是显示概率统计的结果。有什么问题吗?非常感谢!

@Daniel Junglas

感谢您的帮助! 我尝试将 CPX_PARAM_NUMERICALEMPHASIS 设置为 1,但问题仍然存在。 ''' cplex.setParam(IloCplex::Param::Emphasis::Numerical, 1); '''

当我将 CPX_PARAM_DATACHECK 设置为 2 时,它会给我一些警告,

CPLEX 警告 1036:约束“dynamicConstr_2_0”中变量“u_1_0”的系数的小数部分在单精度下看起来像 9/52。

【问题讨论】:

    标签: cplex


    【解决方案1】:

    这通常与数字问题有关。检查您的问题数据。例如,将模型导出为SAV文件,然后在交互中做

    CPLEX> disp prob stats
    

    这将显示模型数据的统计信息。在那里,您可以发现非常小或大的数字以及大范围的系数。

    您可能还希望通过将 CPX_PARAM_DATACHECK 设置为 2 来启用建模辅助。

    如果您的数据是干净的,那么您可以通过将 CPX_PARAM_NUMERICALEMPHASIS 设置为 1 来要求 CPLEX 对数字非常小心。

    【讨论】:

    • 谢谢!我已经发布了我的统计结果,你能帮我看看吗?
    • 您应该编辑原始问题并在此处添加统计信息,而不是将您的统计信息作为新答案发布。无论如何,您的统计数据看起来不错,并且您收到的警告似乎可以忽略不计。您是否尝试设置 CPX_PARAM_NUMERICALEMPHASIS?
    • 是的,我尝试设置 CPX_PARAM_NUMERICALEMPHASIS,但它仍然存在。
    【解决方案2】:

    即使问题统计数据正常,有些问题在数值上也可能很困难。您提到警告 1036,您只有其中一个还是多个?不确定它是否会有所帮助,但例如将 CPX_PARAM_DEPIND 设置为 3 可能值得一试。

    你正在解决一个 qp。默认情况下,障碍算法用于此,数字可能比单纯形更具挑战性。如果将 CPX_PARAM_BARCROSSALG 设置为 1 或 2,cplex 将在屏障后执行交叉。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-21
      • 2015-09-21
      • 1970-01-01
      相关资源
      最近更新 更多