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

如何为COSMO求解器设置无限下界且无需额外定义下界矩阵l

COSMO求解器无穷边界设置方法

COSMO求解器的COSMO.Box约束原生支持无穷值作为边界参数,和你之前用lb=[-inf, -inf, -inf]的设置逻辑完全一致,无需提前定义下界矩阵l即可运行,具体操作如下:

实现方法

你只需要在构造Box约束时,将下界参数直接设置为和上界h维度匹配的全-Inf数组即可,不需要读取npz文件中的l矩阵。

修改后的代码示例

@time begin 
    using COSMO, SparseArrays, LinearAlgebra 
    using NPZ

    Matrix10 = npzread("C:/Users/skqkr/Desktop/Semesterarbeit/Chiwan_Q1.npz") 
    q = Matrix10["p"]; 
    P = sparse(Matrix10["Q"]);
    A = sparse(Matrix10["G"]);
    h = Matrix10["h"]; 
    # 无需读取l矩阵,删掉该行即可

    settings = COSMO.Settings(verbose=true); 

    # 直接构造无下界的Box约束
    constraint1 = COSMO.Constraint(A, zeros(size(h)), COSMO.Box(-Inf * ones(size(h)), h));
    model = COSMO.Model(); 
    assemble!(model, P, q, constraint1, settings = settings); 
    res_box = COSMO.optimize!(model);
end

补充说明

  • 如果是部分维度需要设置下界、部分维度无下界,可手动构造下界数组,无需下界的对应位置填入-Inf即可,例如lb = [2.5, -Inf, 1.0]的混合写法也可正常运行
  • 无穷边界设置不会额外增加求解开销,和常规边界设置的运行效率一致,不影响跨求解器的效率对比测试

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 18:30:01