You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用Mosek的getSolverIntInfo获取约束数返回0的问题咨询

Mosek获取约束数量返回0的问题原因及解决方法

核心原因

你调用的getSolverIntInfo("anaProNumCon")是求解器运行完分析/求解流程后才会赋值的内部统计字段,你在构造完模型后直接读取该字段,此时求解器还未对模型进行编译、预处理、分析操作,对应字段未被初始化,因此返回0。

修复方案

你可以根据使用场景选择两种解决方案:

  • 方案1:先触发求解流程,再读取求解器内部统计值
    只需要在调用getSolverIntInfo前添加求解触发代码即可:
    // 原有模型构建代码不变
    M->objective("obj", ObjectiveSense::Minimize, Expr::sum(y));
    // 新增:触发求解,完成模型分析流程
    M->solve();
    int anaProNumCon = M->getSolverIntInfo("anaProNumCon");
    
    运行后anaProNumCon就会返回求解器分析后的有效约束数量。
  • 方案2:无需求解,直接读取模型原生约束计数
    如果你不需要运行求解,只需要统计自己主动添加的约束总数,直接调用Model类原生的计数接口即可:
    int conNum = M->getNumConstraints();
    
    该接口不需要触发求解流程,模型构建完成后即可直接调用,会返回你添加的1个线性约束+2个锥约束的总计数3,符合你的预期。

补充说明

anaProNumCon统计的是求解器预处理后的内部约束数,可能和你主动添加的约束数存在细微差异:比如部分冗余约束被预处理合并、变量域约束被转为隐含约束等。如果仅需要统计用户显式添加的约束,优先使用getNumConstraints接口即可。


内容的提问来源于stack exchange,提问作者kstn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 13:45:03