2.2. Change Log

2.2.1. 1.0.0 version

  • Released: 2023/10/12

  • Introduce a new MindOpt SDK API and corresponding code examples

  • Add features like MILP’s warm start, SOS constraints and Indicator constraints

  • Add IIS solving functionality, and upgrade LP’s IIS solving module

  • Add Callback functionality

  • Add support for qps format for input files

  • Improve pipeline of concurrent optimization methods

  • Providing primal-dual feasible solution for LP

  • Algorithm performance improvements and bug fixes

2.2.2. 0.25.0 version

Release date: 2023/08/08

  • Improved the performance and the numerical stability of the interior point solver.

  • Improved the performance of Python API.

  • Improved the stability of the IIS algorithm.

  • Intorudced new IIS algorithm for MILP.

  • API changes

    • New error codes:

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

    • New attributes:

      • 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.

    • Updated APIs:

      • C API: Mdo_computeIIS.

      • C++ API: MdoModel::computeIIS.

      • Python API: MdoModel.compute_iis.

      • JAVA API: MdoModel::computeIIS.

    • New integer parameters:

      • 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.

    • New real parameters:

      • 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

    • Fixed an API bug related to SDP.

    • Fixed a performance issue related to row deletion.

    • Fixed a few bugs in MPS reader and LPF reader.

2.2.3. 0.24.1 version

2.2.4. 0.24.0 version

  • Released: 2023/03/30

  • Improve performance of the MILP solver. Official release version. All cloud authentication accounts are open to use, and there is no need to apply for a special license

  • Improve performance of concurrency optimization methods

  • Redesign code in IPM’s Cholesky factorization

  • API changes

    • Add a new command line function for data desensitization, see Data Desensitization for details:

      • --desensitize is used to desensitize the model file of the optimization problem. By removing the data with business information such as variable names and constraint names, only the numerical data that cannot see the business scenario is left

      • --sensitize is used to restore sensitized files

    • New integer parameters:

      • 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

    • Added error code:

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

  • Bug fixes

    • Fix the bug of Mdo_loadProb API

    • Fix the bug of LP writer and MPS writer, and fix the bug of writing GZ/BZ2 compression format

    • Fix a bug related to Mdo_copyMdl

    • Fix a minor bug in the AMPL application (mindoptampl)

2.2.5. 0.23.1 version

  • Released: 2022/12/21

  • Add an installation package for the Apple M1 chip

2.2.6. 0.23.0 version

  • Released: 2022/11/25

  • Add Semi-Definite Programming (SDP) related APIs, add support for dat-s format for input files

  • Add the .nl format documentation description. There are .nl file examples in the ampl folder of the installation package examples, which can be directly invoked with the mindoptampl filename.nl command

  • Fix a small bug in LPF reader

  • Fix some bugs in MILP solution

  • API changes

    • Update 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

    • Add 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

    • Add 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)

    • Change error codes:

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

    • Add properties:

      • 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. Previous version

2.2.7.1. 0.20.2 version (Released: 2022/10/24)

  • Fix some bugs

2.2.7.2. 0.20.1 version (Released: 2022/09/21)

  • Optimize algorithms for solving mixed integer linear programming problems (MILP)

  • Fix some bugs

2.2.7.3. 0.20.0 version (Released: 2022/08/31)

  • Add a branch-and-cut solver for solving Mixed-Integer Linear Programming (MILP) problems.

  • Add support for Mixed Integer Linear Programming (MILP) interfaces to AMPL.

  • Optimize license verification. New authentication logic modification:

    • For optimization problems with less than 300 variables and constraints, it can be solved without a license authorization file (mindopt.lic or fl_client.ini).

    • A license is only required to solve LP and QP problems with more than 300 variables and constraints. The license self-service application method that has been launched can obtain the authorization file. Please refer to License.

    • Note: For the license of MILP-type problem solving, it is only supported to send us an email application, and then manually grant permissions. Please refer to the contact information provided in Contact Us.

  • Optimize installation package:

    • The installation script on Linux and macOS is optimized. No additional parameters are required when running the script. The installation path will be confirmed interactively when the script is running. It also supports custom paths. Environment variables are automatically configured after the installation is complete. Repeated Windows installations will remind you.

  • Fix the following bugs:

    • Optimize MdoEnv related

    • Fix a bug where the objective maximized mutual QPS readers

    • Fix a bug related to objective scaling

    • Fix a minor bug related to the Interior point method

    • Fix a bug in dual solution output

  • Add the following APIs:

    • C API: Mdo_relaxIntegrality

    • C++ API: MdoModel::relaxIntegrality

    • Python API: MdoModel.relax_integrality

    • JAVA API: MdoModel.relaxIntegrality

  • Add new exception return codes:

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

    • And modify the code value of a return code MDO_ABORT_INVALID_METHOD from -9003 to -9011

  • New integer parameters:

    • 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

  • New real parameter:

    • 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

  • New parameters in the AMPL interface:

    • Integer parameters: mip_max_nodes, mip_root_parallelism

    • Real parameters: mip_gap_abs, mip_gap_rel, mip_integer_tolerance, mip_objective_tolerance

  • Command changes for command-line tools:

    • Update directive: - -disable_file_output (or -d): Disable output of the solver’s solution (.bas and .sol files)

    • New directives have been added: - -relax (or -r): Relax all integerity requirements in the problem

2.2.7.4. 0.19.0 version (Released 2022/04/10)

  • Improve stability of simplex method and interior point method

  • The license manager is redesigned

  • The AMPL interface is updated to support convex QP problems

  • Fix the following bugs:

    • Fix a minor bug related to the simplex method

    • Fix a bug related to the concurrent optimization method

  • Add the following APIs:

    • 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

    • Add C++/Python/JAVA class MdoEnv to save MindOpt global environment. This is not necessary, but if this global environment is created then it must be passed to MdoModel as part of the constructor parameters

2.2.7.5. 0.16.0 version (Released 2022/01/30)

  • Improve stability of simplex method and interior point method

  • Add convex Quadratic Programming (QP) (Convex QP) interior point method

  • Fix some bugs in API (Mdo_setElements).

  • Add the following APIs:

    • 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

  • Add parameter names and attribute names, such as:

    • C API: MDO_INT_PARAM_METHOD, MDO_INT_ATTR_MIN_SENSE, etc.

    • C++ API: MDO_INT_PARAM::METHOD, MDO_INT_ATTR::MIN_SENSE, etc.

    • Python API: MDO_STR_PARAM.METHOD, MDO_INT_ATTR.MIN_SENSE, etc.

    • JAVA API: MDO.INT_PARAM_METHOD, MDO.INT_ATTR_MIN_SENSE, etc.

2.2.7.6. 0.15.1 version (Released 2021/10/30)

  • Fix some bugs in network flow simplex method

  • Python 3.10 is supported

2.2.7.7. 0.15.0 version (Released 2021/09/30)

  • Add network flow simplex method and multithreaded simplex method

  • Improve stability of simplex method and interior point method

  • Optimize the data reading module

API changes

  • Add the following API:
    • C API: Mdo_setStrAttr, Mdo_getStrAttr

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

    • Python API: MdoModel.set_str_attr, MdoModel.get_str_attr

  • Add the following integer parameters: EnableNetworkFlow, SPX/PrimalPricing, SPX/DualPricing

  • Change the following integer parameters: Presolve, Method

  • Add model properties: ProbName

  • Add return error code: MDO_HOME_ENV_NOT_FOUND, MDO_LIB_FOLDER_NOT_FOUND

2.2.7.8. 0.14.0 version (Released 2021/08/30)

  • Improve stability of simplex method and interior point method

  • Add IIS API for C/CPP/Python (beta)

  • Add support for Floating License (Trial)

  • Add Python quicksum API, and optimize the design of Python API

  • Add AMPL/Pyomo modeling language interface and application, and corresponding examples

  • Add support for Java API

BUG FIX

  • API bug fixes

2.2.7.9. 0.13.0 version (Released 2021/03/15)

  • Improve API functions, such as adding rows and columns in batches, etc.

  • Improve performance and numerical stability for simplex and interior point methods

  • Support for the modeling language PuLP

  • Support user-defined environment variables to specify the storage directory of license files

API changes

  • Add the following integer parameter: "SPX/CrashStart"

  • Change the following integer properties: "Spx/NumIters" to "SPX/NumIters"

2.2.7.10. 0.12.1 version (Released 2021/01/11)

  • Improve Python installation steps

  • Support Python 3.9

  • Improve the solution efficiency of interior point method

2.2.7.11. 0.12.0 version (Released 2020/12/15)

  • Support for remote computing services

2.2.7.12. 0.11.1 version (Released 2020/12/08)

  • Update the output method and fixed some minor issues

2.2.7.13. 0.11.0 version (Released 2020/11/30)

  • Add new C++ API and Python API

  • Add new interior point method and concurrent optimization method

  • Improve performance and numerical stability of the simplex method

Bug fix

  • Fix a bug related to the output solution

  • Fix bugs in LP reader

API changes

  • Add the following integer parameter: “IPM/MaxIterations”

  • Add the following real parameters: “SolutionTime”, “IPM/PrimalTolerance”, “IPM/DualTolerance”, and “IPM/GapTolerance”

2.2.7.14. 0.10.0 version (Released 2020/09/02)

  • Improve simplex algorithm

  • Add new API to output solution and basis to file

  • Output solutions and basis to file when using command line tools

2.2.7.15. 0.9.1 version (Released 2020/08/26)

  • Fix a bug related to debug messages

  • Fix symbol issue

  • Improve license manager

2.2.7.16. 0.9.0 version (Released 2020/08/14)

  • This is the first public release of MindOpt