4.1. 命令行调用 MindOpt

本节介绍如何使用 MindOpt 命令行工具来求解优化问题。使用前用户必须先设置环境变量后;有关环境变量设置的详细说明,请参阅 安装说明

MindOpt 的调用如下:

mindopt <filename> [options]
  • <filename>:MPS/LP 格式的优化问题。

  • options:参数设置。关于参数的详细介绍,请参阅 可选输入参数 一节。

4.1.1. 示例

以下为求解一个线性规划问题的示例:

cd <MDOHOME>/examples/data
mindopt afiro.mps

以下则为执行时的输出:

MindOpt Version 0.19.0 (Built: 20220410)
Copyright (c) 2020-2021 Alibaba Cloud.

Reader started. File  : ../data/afiro.mps
Reader terminated. Time : 0.001s
Checking license : /home/mindopt/mindopt/mindopt.lic
Your license will expire in 51 days.
Concurrent optimization started.
 - Num. threads       : 12
 - Num. optimizers    : 2
 - Registered optimizers.
   +                  : Simplex method (1 thread, enabled output)
   +                  : Interior point method (11 threads, disabled output)

Model summary.
 - Num. variables     : 32
 - Num. constraints   : 27
 - Num. nonzeros      : 83
 - Bound range        : [4.4e+01,5.0e+02]
 - Objective range    : [3.2e-01,1.0e+01]
 - Matrix range       : [1.1e-01,2.4e+00]

Presolver started.
Presolver terminated. Time : 0.000s

Simplex method started.

    Iteration       Objective       Dual Inf.     Primal Inf.     Time
            0    -5.21810e+02      0.0000e+00      4.1717e+02     0.00s
            4    -4.64753e+02      0.0000e+00      0.0000e+00     0.00s
Postsolver started.
Simplex method terminated. Time : 0.002s

Concurrent optimization terminated.
Optimizer summary.
 - Optimizer used     : Simplex method
 - Optimizer status   : OPTIMAL
 - Total time         : 0.006s

Solution summary.       Primal solution               Dual solution
 - Objective          : -4.6475314286e+02             -4.6475314286e+02
 - Norm               : 5.00e+02                      2.29e+00
 - Var. viol.         : 1.42e-14                      0.00e+00
 - Cons. viol.        : 0.00e+00                      5.55e-17

4.1.2. MPS/LP 输入文件

MindOpt 支持下列优化模型的储存格式:

这些格式最初是为(混合整数)线性规划问题设计的,现在已扩展到支持二次锥优化。在使用这些格式之前,请先阅读 MPS 格式LP 格式 的规范。

Warning

关于 LP 格式和 MPS 格式的命名,需要遵守严格的规范,否则在实际使用过程当中容易出错,且不易排查。
  • LP 格式的 命名规范,包括:首字母不可为数字、句点或字母 eE 等。用户在使用 API (参考 接口的定义与调用规范) 输入变量名或约束名时,需要注意。

  • 在用 MindOpt 建模生成 MPSLP 文件时,若命名格式不合规范,则 MindOpt 会改为默认命名输出。

  • 变量名或约束名的长度不能超过 160 个 char

  • 变量名或约束名中不能包含计算符号,如 “+-” 等,否则求解器可能会将这些符号当做计算符而非变量名,从而导致解析出错。

  • 变量名或约束名中可以带有一定的中文,但为了稳定性起见,最好不要这样做。

Note

MindOpt 目前还支持以下压缩文件格式:

即,MindOpt 可以直接读取 .mps.gz 文件和 .mps.bz2 文件。

4.1.3. 输入参数

用户可以透过以下命令来更改默认参数:

<param>=<value>:将参数 <param> 的数值修改为 <value>

例如,以下命令使 MindOpt 求解 afiro.mps,将优化方法 (“Method”) 更改为 原始单纯形法,并将迭代次数 (“SPX/MaxIterations”) 限制为 10000

mindopt afiro.mps Method=0 SPX/MaxIterations=10000

关于参数的细节,请参阅 可选输入参数 一节。