4.1. 命令行调用 MindOpt¶
本节介绍如何使用 MindOpt 命令行工具来求解优化问题。使用前用户必须先设置环境变量后;有关环境变量设置的详细说明,请参阅 安装说明。
4.1.1. 调用方式简述¶
MindOpt 命令行工具的调用格式如下:
mindopt <filename> [options]
<filename>
:用于设置优化问题模型文件的路径。options
:用于求解器参数设置。关于参数的详细介绍,请参阅 参数 一节。
其他命令行指令options:
MindOpt [options] |
英文说明 |
中文说明 |
---|---|---|
-h (or - -help) |
list options |
列出可操作指令 |
-v (or - -version) |
print release version |
打印当前软件的发布版本号 |
-d (or - -disable_file_output) |
disable solution (.bas and .sol files) output |
关闭求解器的解的输出( .bas and .sol files) |
-r (or - -relax) |
relax all integrality requirements |
松弛问题中所有的整数性要求 |
-c (or - -check_license) |
run license diagnostic tool |
运行License检查工具 |
- -desensitize |
desensitize the optimization model files |
对优化问题模型进行脱敏,删除变量名约束名等业务相关名称 |
- -sensitize |
recover the model which has been desensitized |
对已经脱敏的文件进行恢复 |
4.1.2. 示例¶
以下示例使用命令行工具求解安装路径 <MDOHOME>examples/data
下的示例问题 afiro.mps
:
cd <MDOHOME>/examples/data
mindopt afiro.mps
命令执行后的输出如下:
MindOpt Version 0.25.0 (Build date: 20230706)
Copyright (c) 2020-2023 Alibaba Cloud.
Start license validation (current time : 07-JUL-2023 02:38:36).
License validation terminated. Time : 0.002s
Reader started. File : mindopt/0.25.0/examples/data/afiro.mps
Reader terminated. Time : 0.002s
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.004s
Simplex method started.
Model fingerprint: =Y2dhV2dudXY
Iteration Objective Dual Inf. Primal Inf. Time
0 0.00000e+00 2.9000e+00 0.0000e+00 0.01s
5 -4.64753e+02 0.0000e+00 0.0000e+00 0.01s
Postsolver started.
Simplex method terminated. Time : 0.004s
Optimizer summary.
- Optimizer used : Simplex method
- Optimizer status : OPTIMAL
- Total time : 0.014s
Solution summary. Primal solution
- Objective : -4.6475314286e+02
4.1.3. 输入文件格式¶
MindOpt 命令行支持下列格式的优化模型输入:
.mps
格式.lp
格式.qps
格式.dat-s
格式
这些格式最初是为(混合整数)线性规划问题设计的,现在已扩展到支持二次锥优化。关于 .mps
格式和 .lp
格式的规范,请阅读
MPS 格式 和 LP 格式。 .nl
格式的模型文件可使用 MindOpt 建模语言应用 mindoptampl
进行调用,详见 mindoptampl 应用。
Warning
- 关于
LP
格式和MPS
格式的命名,需要遵守严格的规范,否则在实际使用过程当中容易出错,且不易排查。
4.1.4. 参数设置¶
用户可以通过以下格式的命令将参数 <参数名>
的值修改为 <参数值>
:
<参数名>=<参数值>
例如下例在求解 afiro.mps
问题时,通过修改参数 Method 将优化方法设置为 原始单纯形法,通过修改参数 SPX/MaxIterations 将迭代次数限制为 10000 次。
mindopt afiro.mps Method=0 SPX/MaxIterations=10000
关于参数的细节,请参阅 参数 一节。
4.1.5. 数据脱敏¶
--sanitize
和 --undo_sanitize
接口的作用是对模型文件进行数据脱敏和还原。其脱敏原理可以参考 数据脱敏。
本接口支持的文件格式类型包含:
MPS类型:文件扩展名必须为
.mps
、.mps.gz
或.mps.bz2
。LP类型:文件扩展名必须为
.lp
、.lp.gz
或lp.bz2
。
通过如下命令行指令来实现模型文件脱敏:
mindopt afiro.mps --sanitize
在脱敏后,会生成两个文件:
afiro_sanitized.mps
脱敏后的模型文件,里面的变量名和约束名等会被转换成 Rxx 和 Cxx 的顺序编码形式,清除业务相关信息,仅保留数值数据。
afiro_mapping.json
文件记录了脱敏后文件和脱敏前文件中变量约束的对应关系。
脱敏后的文件,可以通过 afiro_mapping.json
文件来恢复原文件,将两个文件放置在同一个目录,然后执行以下命令行指令:
mindopt afiro_mapping.json --undo_sanitize
执行命令生成的 afiro_sanitized_undo_sanitized.mps
文件与原问题文件 afiro.mps
内容一致。