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

求用于测试并行单纯形算法的大型数据集及MPS解析器

解决方案:并行单纯形算法的测试数据集与MPS解析器推荐

嘿,我刚好在做线性规划并行算法的时候踩过类似的坑,给你分享几个实用的解决方案!

一、直接可用的A/b/c格式数据集

如果你不想折腾MPS文件,这些现成的结构化数据集可以直接拿来测试:

  • NETLIB LP预处理数据集:很多开发者已经把NETLIB经典LP问题(比如afiro、adlittle这类小型问题,或是scagr7、scfxm1这类大型问题)转换成了NumPy数组或稀疏矩阵格式。你可以在GitHub上搜索「NETLIB LP matrices」找到不少公开仓库,里面的文件通常是.npy或.npz格式,直接用numpy.load()就能加载出A、b、c。
  • 学术项目公开数据集:一些优化领域的学术项目会发布预处理好的LP数据集,以CSV、Parquet或二进制矩阵格式存储,适合快速导入到Python/C的程序中。
  • lp_solve测试集:lp_solve的官方测试库中有部分问题已经导出为结构化文本格式,你可以直接读取其中的约束矩阵、右端项和目标系数。

二、各语言易用的MPS解析器推荐

如果还是需要处理MPS格式的文件,这些工具能帮你快速提取A、b、c:

Python

  • pymps:轻量级专门解析库,API极简,返回Scipy稀疏矩阵(刚好适配大型数据集的内存需求),安装和使用都很方便:
    from pymps import read_mps
    lp_problem = read_mps("your_lp_problem.mps")
    # 获取稀疏矩阵A,向量b、c
    A = lp_problem['A']
    b = lp_problem['b']
    c = lp_problem['c']
    
  • scipy.optimize.read_mps:Scipy自带的工具,无需额外安装,适合已经在用Scipy生态的场景:
    from scipy.optimize import read_mps
    result = read_mps("your_file.mps")
    A = result['A']
    b = result['b']
    c = result['c']
    
  • mpsreader:对复杂MPS变体支持更好,处理大文件效率较高,执行pip install mpsreader即可安装使用。

C语言

  • MPSlib:轻量级独立库,代码简洁,容易集成到你的并行算法中,直接返回稀疏矩阵的行、列、值数组以及b、c向量,没有多余依赖。
  • CLP(Coin-or Linear Programming):虽然是完整的LP求解器,但它的MPS解析模块非常成熟,你可以单独提取解析部分,或者调用其API读取MPS文件并获取所需的矩阵和向量,兼容性拉满,适合工业级大型数据集。

Java

  • Apache Commons Math:官方提供的MpsParser类,稳定性高,文档齐全,能直接读取MPS文件并返回线性规划问题对象,轻松提取A、b、c。
  • OsiJava(Coin-or Java绑定):适合需要和求解器集成的场景,解析效率出色,支持各种MPS格式。

JavaScript

  • mps-parser:npm上的轻量级包,在Node.js或浏览器环境都能使用,解析后返回JSON格式的问题数据,包含A的稀疏表示和b、c向量,执行npm install mps-parser即可快速上手。

小提示

处理大型数据集时,优先选择返回稀疏矩阵的解析器,不仅能节省内存,还能更好地适配并行单纯形算法的稀疏运算逻辑。

内容的提问来源于stack exchange,提问作者Lou K.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:54:56