2.2. 变更日志

2.2.1. 1.0.0 版本

发布日期: 2023/10/12

更新摘要
  • 提供全新的 MindOpt SDK API 和相应的代码示例.

  • 新增 MILP 的 热启动(warm start)SOS约束Indicator约束.

  • 新增 MILP 的 IIS 求解功能,升级 LP 的 IIS 求解模块。

  • 新增回调函数功能 (Callback).

  • 输入文件增加支持 qps 格式。

  • 改进了并发优化方法 (concurrent optimization method) 的算法流程。

  • 提供了线性规划问题的 primal-dual feasible solution.

  • 算法性能提升与bug修复。

2.2.2. 0.25.0 版本

发布日期: 2023/08/08

更新摘要

  • 提高了内点法求解的性能和稳定性。

  • 提高了Python API性能。

  • 提高了IIS算法稳定性。

  • 新增了MILP IIS算法。

  • API 变更

    • 新增的错误码:

      • MDO_INVALID_ARGUMENT (-3), MDO_IIS_NUMERIC (-30000), MDO_IIS_NO_SOLN (-3004), MDO_IIS_FEASIBLE (-3005).

    • 新增的属性:

      • C API: MDO_INT_ATTR_ROW_IIS, MDO_INT_ATTR_COL_IIS.

      • C++ API: MDO_INT_ATTR::ROW_IIS, MDO_INT_ATTR::COL_IIS.

      • Python API: MDO_INT_PARAM.ROW_IIS, MDO_INT_ATTR.COL_IIS.

      • JAVA API: INT_ATTR::ROW_IIS, INT_ATTR::COL_IIS.

    • 更新 APIs:

      • C API: Mdo_computeIIS.

      • C++ API: MdoModel::computeIIS.

      • Python API: MdoModel.compute_iis.

      • JAVA API: MdoModel::computeIIS.

    • 新的整型参数:

      • C API: MDO_INT_PARAM_MIP_MAX_STALLING_NODES, MDO_INT_PARAM_MIP_MAX_SOLS, MDO_INT_PARAM_MIP_DETECT_DISCONNECTED_COMPONENTS, MDO_INT_PARAM_MIP_SOLUTION_POOL_SIZE, MDO_INT_PARAM_MIP_ALLOW_DUAL_PRESOLVE.

      • C++ API: MDO_INT_PARAM::MIP_MAX_STALLING_NODES, MDO_INT_PARAM_MIP_MAX_SOLS, MDO_INT_PARAM::MIP_DETECT_DISCONNECTED_COMPONENTS, MDO_INT_PARAM::MIP_SOLUTION_POOL_SIZE, MDO_INT_PARAM::MIP_ALLOW_DUAL_PRESOLVE.

      • Python API: MDO_INT_PARAM.MIP_MAX_STALLING_NODES, MDO_INT_PARAM.MIP_MAX_SOLS, MDO_INT_PARAM.MIP_DETECT_DISCONNECTED_COMPONENTS, MDO_INT_PARAM.MIP_SOLUTION_POOL_SIZE, MDO_INT_PARAM.MIP_ALLOW_DUAL_PRESOLVE.

      • JAVA API: INT_PARAM::MIP_MAX_STALLING_NODES, INT_PARAM_MIP_MAX_SOLS, INT_PARAM::MIP_DETECT_DISCONNECTED_COMPONENTS, INT_PARAM::MIP_SOLUTION_POOL_SIZE, INT_PARAM::MIP_ALLOW_DUAL_PRESOLVE.

    • 新的实数型参数:

      • C API: MDO_REAL_PARAM_MIP_LINEARIZATION_BIG_M, MDO_REAL_PARAM_MIP_CUTOFF.

      • C++ API: MDO_REAL_PARAM::MIP_LINEARIZATION_BIG_M, MDO_REAL_PARAM::MIP_CUTOFF.

      • Python API: MDO_REAL_PARAM.MIP_LINEARIZATION_BIG_M, MDO_REAL_PARAM.MIP_CUTOFF.

      • JAVA API: REAL_PARAM::MIP_LINEARIZATION_BIG_M, REAL_PARAM::MIP_CUTOFF.

  • Bug fixes

    • 修复了SDK相关问题。

    • 修复了删除约束的性能问题。

    • 修复了读Mps/Lpf的问题。

2.2.3. 0.24.1 版本

发布日期: 2023/04/23

更新摘要

2.2.4. 0.24.0 版本

发布日期: 2023/03/30

更新摘要

  • 提高了MILP求解器的性能。正式发行版本。云鉴权账号全部开放使用权限,无需再申请特殊License。

  • 提高了并发优化方法的性能。

  • 重新设计了IPM中的Cholesky因式分解代码。

  • API 变更

    • 新增一个命令行功能,用于数据脱敏,查看 数据脱敏 了解如何使用:

      • --desensitize 用来脱敏优化问题的模型文件。通过移除变量名约束名这些带有业务信息的数据,仅留下看不出业务场景的数值数据。

      • --sensitize 用来恢复脱敏的文件。

    • 新的整型参数:

      • C API: MDO_INT_PARAM_MIP_AUTO_CONFIGURATION.

      • C++ API: MDO_INT_PARAM::MIP_AUTO_CONFIGURATION.

      • Python API: MDO_INT_PARAM.MIP_AUTO_CONFIGURATION.

      • JAVA API: MDO_INT_PARAM::MIP_AUTO_CONFIGURATION.

    • 新增的错误码:

      • MDO_MODEL_INVALID_CHAR_ATTR (-2014), MDO_MODEL_INVALID_ATTR_NAME (-2019).

  • Bug fixes

    • 修复 Mdo_loadProb API 的bug。

    • 修复LP writer 和 MPS writer的bug,并修复写GZ/BZ2压缩格式的bug。

    • 修复一个关联 Mdo_copyMdl 的bug。

    • 修复一个AMPL 应用 (mindoptampl)的小bug。

2.2.5. 0.23.1 版本

发布日期: 2022/12/21

更新摘要

  • 新增适配Apple M1芯片的安装包

2.2.6. 0.23.0 版本

发布日期: 2022/11/25

更新摘要

  • 新增 半定规划(SDP) 相关的APIs,输入文件增加支持 dat-s 格式。

  • 文档增加 .nl 格式文档描述,安装包examples的ampl文件夹中有.nl文件示例,可以用 mindoptampl filename.nl 指令直接调用。

  • 修复一个 LPF reader 的小bug。

  • 修复MILP求解的一些bug。

  • API 修改

    • 更新 APIs:

      • C API: Mdo_loadModel, Mdo_addRows, Mdo_addCols, Mdo_setColNames, Mdo_setRowNames, Mdo_readProb.

      • C++ API: MdoModel::readProb.

      • Python API: MdoModel.read_prob.

      • JAVA API: MdoModel::readProb.

    • 新增 APIs:

      • C API: Mdo_addSymMat, Mdo_addSymMats, Mdo_replaceSymMatObjs, Mdo_replaceSymMatElements, Mdo_getRealAttrSymMat, Mdo_copyMdl.

      • C++ API: MdoModel::addSymMat, MdoModel::addSymMats, MdoModel::replaceSymMatObjs, MdoModel::replaceSymMatElements, MdoModel::getRealAttrSymMat, MdoModel::MdoModel.

      • Python API: MdoModel.add_sym_mat, MdoModel::add_sym_mats, MdoModel::replace_sym_mat_objs, MdoModel::replace_sym_mat_elements, MdoModel::get_real_attr_sym_mat, MdoModel::copy_model.

      • JAVA API: MdoModel::addSymMat, MdoModel::addSymMats, MdoModel::replaceSymMatObjs, MdoModel::replaceSymMatElements, MdoModel::getRealAttrSymMat, MdoModel::copyModel.

    • 新增错误码 error codes:

      • MDO_MODEL_INVALID_SYM_MAT_IDX (-2006), MDO_MODEL_INVALID_SYM_MAT_ROW_IDX (-2007), MDO_MODEL_INVALID_SYM_MAT_COL_IDX (-2008), MDO_MODEL_INVALID_REAL_ATTR_SYM_MAT (-2013).

    • 修改错误码 error codes:

      • MDO_LIB_FOLDER_NOT_FOUND (-12) is replaced by MDO_DLL_ERROR (-12)

    • 新增属性:

      • C API: MDO_REAL_ATTR_SYM_MAT_PRIMAL_SOLN, MDO_REAL_ATTR_MIP_GAP_ABS, MDO_REAL_ATTR_MIP_GAP_REL.

      • C++ API: MDO_REAL_ATTR::SYM_MAT_PRIMAL_SOLN, MDO_REAL_ATTR::MIP_GAP_ABS, MDO_REAL_ATTR::MIP_GAP_REL.

      • Python API: MDO_REAL_ATTR.SYM_MAT_PRIMAL_SOLN, MDO_REAL_ATTR.MIP_GAP_ABS, MDO_REAL_ATTR.MIP_GAP_REL.

      • JAVA API: REAL_ATTR_SYM_MAT_PRIMAL_SOLN, REAL_ATTR_MIP_GAP_ABS, REAL_ATTR_MIP_GAP_REL

2.2.7. 之前版本

2.2.7.1. 0.20.2 版本

发布日期: 2022/10/24

更新摘要

  • 修复一些bug。

2.2.7.2. 0.20.1 版本

发布日期: 2022/09/21

更新摘要

  • 优化混合整数线性规划问题(MILP)的求解算法。

  • 修复一些bug。

2.2.7.3. 0.20.0 版本

发布日期: 2022/08/31

更新摘要

  • 新增了用于求解 混合整数线性规划(MILP) 问题的分支定界算法(branch-and-cut solver)。

  • 新增对AMPL支持混合整数线性规划问题(MILP)的接口。

  • 优化License校验。新的鉴权逻辑修改:

    • 对于变量和约束数量均小于 300 的优化问题可以不需要License授权文件(mindopt.lic或fl_client.ini)即可求解;

    • 求解变量和约束数量大于 300 的LP、QP类型问题才需要License,已上线的License自助申请方式均可获取授权文件,请参考 许可证设置

    • 注意:MILP类型问题求解的License,暂只支持给我们发邮件申请,然后人工操作赋予权限,请参考 联系我们 中提供的联系方式。

  • 安装包优化:

    • Linux和macOS上安装脚本优化,运行时不需要加任何额外参数,脚本运行时会交互式确认安装路径,同时支持自定义路径,安装结束后自动配置环境变量,Windows重复安装会有提醒。

  • 修复下列Bug:

    • 优化了MdoEnv相关。

    • 修复一个目标最大化相互的QPS reader的bug。

    • 修复了一个objective scaling相关bug。

    • 修复了与内点法相关的(Interior point method)的一个小问题。

    • 修复一个对偶解输出的bug。

  • 新增下列 API:

    • C API: Mdo_relaxIntegrality .

    • C++ API: MdoModel::relaxIntegrality .

    • Python API: MdoModel.relax_integrality .

    • JAVA API: MdoModel.relaxIntegrality .

  • 新的优化异常返回码:

    • MDO_ABORT_NODE_LIMIT (-9003), MDO_ABORT_STALLING_NODE_LIMIT (-9004), MDO_ABORT_SOLVER_NOT_AVAILABLE (-9012)。

    • 并且修改了一个返回码 MDO_ABORT_INVALID_METHOD 的码值从 -9003 改为 -9011。

  • 新的整数型参数:

    • String: MIP/MaxNodes, MIP/RootParallelism

    • C API: MDO_INT_PARAM_MIP_MAX_NODES, MDO_INT_PARAM_MIP_ROOT_PARALLELISM.

    • C++ API: MDO_INT_PARAM::MIP_MAX_NODES, MDO_INT_PARAM::MIP_ROOT_PARALLELISM.

    • Python API: MDO_INT_PARAM.MIP_MAX_NODES, MDO_INT_PARAM.MIP_ROOT_PARALLELISM.

    • JAVA API: MDO.INT_PARAM_MIP_MAX_NODES, MDO.INT_PARAM_MIP_ROOT_PARALLELISM.

  • 新的实数型参数:

    • String: MIP/IntegerTolerance, MIP/ObjectiveTolerance, MIP/GapAbs, MIP/GapRel

    • C API: MDO_REAL_PARAM_MIP_INTEGER_TOLERANCE, MDO_REAL_PARAM_MIP_OBJECTIVE_TOLERANCE, MDO_REAL_PARAM_MIP_GAP_ABS, MDO_REAL_PARAM_MIP_GAP_REL

    • C++ API: MDO_REAL_PARAM::MIP_INTEGER_TOLERANCE, MDO_REAL_PARAM::MIP_OBJECTIVE_TOLERANCE, MDO_REAL_PARAM::MIP_GAP_ABS, MDO_REAL_PARAM::MIP_GAP_REL.

    • Python API: MDO_REAL_PARAM.MIP_INTEGER_TOLERANCE, MDO_REAL_PARAM.MIP_OBJECTIVE_TOLERANCE, MDO_REAL_PARAM.MIP_GAP_ABS, MDO_REAL_PARAM.MIP_GAP_REL.

    • JAVA API: MDO.REAL_PARAM_MIP_INTEGER_TOLERANCE, MDO.REAL_PARAM_MIP_OBJECTIVE_TOLERANCE, MDO.REAL_PARAM_MIP_GAP_ABS, MDO.REAL_PARAM_MIP_GAP_REL

  • AMPL接口中新的参数:

    • Integer parameters: mip_max_nodes, mip_root_parallelism.

    • Real parameters: mip_gap_abs, mip_gap_rel, mip_integer_tolerance, mip_objective_tolerance.

  • 命令行工具的指令变化:

    • 更新了指令: - -disable_file_output (or -d) : 关闭求解器的解的输出( .bas and .sol files)。

    • 新增了指令: - -relax (or -r) : 松弛问题中所有的整数性要求。

2.2.7.4. 0.19.0 版本

发布日期: 2022/04/10

更新摘要

  • 单纯形法和内点法稳定性提升。

  • 重新设计了 license 管理器。

  • 对 AMPL interface 进行升级以支持 convex QP 问题。

  • 修复下列Bug:

    • 修复了一个与单纯形法有关的小问题。

    • 修复了与并发优化方法 (concurrent optimization method) 有关的错误。

  • 新增下列 API:

    • C API: Mdo_createEnv, Mdo_freeEnv, Mdo_createMdlWithEnv, Mdo_deleteAllElements, Mdo_deleteAllQuadraticElements.

    • C++ API: MdoModel::deleteAllElements, MdoModel::deleteAllQuadraticElements.

    • Python API: MdoModel.delete_all_elements, MdoModel.delete_all_quadratic_elements.

    • JAVA API: MdoModel.deleteAllElements, MdoModel.deleteAllQuadraticElements.

    • 新增 C++/Python/JAVA 的类 MdoEnv 来保存 MindOpt 的全局环境。这不是必要的,但如果创建了这个全局环境,那么它必须作为构造函数参数的一部分传递给 MdoModel

2.2.7.5. 0.16.0 版本

发布日期: 2022/01/30

更新摘要

  • 单纯形法和内点法稳定性提升。

  • 新增凸 二次规划(QP) (Convex QP)内点法。

  • 修复API中的一些 bug (Mdo_setElements)。

  • 新增下列 API:

    • C API: Mdo_setQuadraticElements, Mdo_getQuadraticElements, Mdo_deleteQuadraticElements.

    • C++ API: MdoModel::setQuadraticElements, MdoModel::getQuadraticElements, MdoModel::deleteQuadraticElements.

    • Python API: MdoModel.set_quadratic_elements, MdoModel.get_quadratic_elements, MdoModel.delete_quadratic_elements.

    • JAVA API: MdoModel.setQuadraticElements, MdoModel.getQuadraticElements, MdoModel.deleteQuadraticElements.

  • 新增参数名和属性名,如:

    • C API: MDO_INT_PARAM_METHOD, MDO_INT_ATTR_MIN_SENSE 等。

    • C++ API: MDO_INT_PARAM::METHOD, MDO_INT_ATTR::MIN_SENSE 等。

    • Python API: MDO_STR_PARAM.METHOD, MDO_INT_ATTR.MIN_SENSE 等。

    • JAVA API: MDO.INT_PARAM_METHOD, MDO.INT_ATTR_MIN_SENSE 等。

2.2.7.6. 0.15.1 版本

发布日期: 2021/10/30

更新摘要

  • 修复网络流单纯形法中的一些 bug。

  • 支持Python 3.10。

2.2.7.7. 0.15.0 版本

发布日期: 2021/09/30

更新摘要

  • 新增网络流单纯形法和多线程单纯形法。

  • 单纯形法和内点法稳定性提升。

  • 优化数据读取模块。

API 变更

  • 新增下列 API:
    • C API: Mdo_setStrAttr, Mdo_getStrAttr.

    • C++ API: MdoModel::setStrAttr, MdoModel::getStrAttr.

    • Python API: MdoModel.set_str_attr, MdoModel.get_str_attr.

  • 新增下列整型参数:EnableNetworkFlowSPX/PrimalPricingSPX/DualPricing

  • 变更下列整型参数:PresolveMethod

  • 新增模型属性:ProbName

  • 新增返回错误码:MDO_HOME_ENV_NOT_FOUNDMDO_LIB_FOLDER_NOT_FOUND

2.2.7.8. 0.14.0 版本

发布日期: 2021/08/30

更新摘要

  • Simplex 和 IPM 算法性能提升。

  • 新增 C/CPP/Python 的 IIS API(试用)。

  • 新增对 Floating License 的支持(试用)。

  • 新增 Python quicksum API,并优化 Python API 的设计。

  • 新增 AMPL/Pyomo 建模语言的接口和应用,以及相应的例子。

  • 新增对 Java API 的支持。

错误修复

  • API bug 修复。

2.2.7.9. 0.13.0 版本

发布日期: 2021/03/15

更新摘要

  • 提升API功能,如:批次增加行与列等。

  • 提升了单纯形法和内点法的性能和数值稳定性。

  • 支持建模语言 PuLP

  • 支持使用者自定义环境变量来指定许可证(license)文件的存放目录。

API 变更

  • 添加了下列整数型参数:"SPX/CrashStart"

  • 变更了下列整数型属性:"Spx/NumIters" 改为 "SPX/NumIters"

2.2.7.10. 0.12.1 版本

发布日期: 2021/01/11

更新摘要

  • 改进Python安装步骤。

  • 支持Python 3.9。

  • 改进内点法求解效率。

2.2.7.11. 0.12.0 版本

发布日期: 2020/12/15

更新摘要

  • 支持远程计算服务。

2.2.7.12. 0.11.1 版本

发布日期: 2020/12/08

更新摘要

  • 更新了输出方式并修复了一些小问题。

2.2.7.13. 0.11.0 版本

发布日期: 2020/11/30

更新摘要

  • 加入新的 C++ API 和 Python API。

  • 加入了新的内点法和并发优化方法。

  • 提升了单纯形法的性能和数值稳定性。

错误修复

  • 修复了与输出解相关的错误。

  • 修复了 LP reader 中的错误。

API 变更

  • 添加了下列整数型參數:”IPM/MaxIterations”。

  • 添加了下列实数型參數:”SolutionTime”、”IPM/PrimalTolerance”、”IPM/DualTolerance”、和”IPM/GapTolerance”。

2.2.7.14. 0.10.0 版本

发布日期: 2020/09/02

更新摘要

  • 改进了单纯形算法。

  • 添加了新的 API 以将解和基输出到文件。

  • 当使用命令行工具时将解和基输出到文件。

2.2.7.15. 0.9.1 版本

发布日期: 2020/08/26

更新摘要

  • 修复了与调试消息有关的错误。

  • 修复了符号问题。

  • 改进了许可证管理器。

2.2.7.16. 0.9.0 版本

发布日期: 2020/08/14

更新摘要

  • 这是 MindOpt 的第一个公开版本。