4.1. Command Line¶
This section introduces how to use the MindOpt command-line tool to solve optimization problems. Before using it, users must first set the environment variables; for detailed instructions on setting environment variables, please refer to Installation Instructions.
4.1.1. Brief Description¶
The call format of the MindOpt command-line tool is as follows:
mindopt <filename> [options]
<filename>
: Used to set the path of the optimization problem model file.options
: Used for solver parameter settings. For a detailed introduction to the parameters, please refer to the Parameters section.
Other command-line instructions options:
MindOpt [options] |
Description |
---|---|
-h (or - -help) |
list options |
-v (or - -version) |
print release version |
-d (or - -disable_file_output) |
disable solution (.bas and .sol files) output |
-r (or - -relax) |
relax all integrality requirements |
-c (or - -check_license) |
run license diagnostic tool |
- -sanitize |
desensitize the optimization model files |
- -undo_sanitize |
recover the model which has been desensitized |
4.1.2. An Example¶
The following example uses the command-line tool to solve the sample problem afiro.mps
in the installation path <MDOHOME>examples/data
:
cd <MDOHOME>/examples/data
mindopt afiro.mps
The output after executing the command is as follows:
MindOpt Version 0.25.0 (Build date: 20230706)
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. Input File Format¶
The MindOpt command line supports the following optimization model input formats:
.mps
format.lp
format.qps
format.dat-s
format
These formats were originally designed for (mixed integer) linear programs and have now been extended to support quadratic cone optimization. For the specifications of the .mps
format and the .lp
format, please read
MPS Format and LP Format. The .nl
format model file can be called using the MindOpt modeling language application mindoptampl
, see Install mindoptampl.
Warning
- Users should follow strict specifications regarding the naming of the
LP
format and theMPS
format, otherwise errors are likely to occur and are not easy to troubleshoot. Naming specifications for the
LP
format Naming Specifications, include: the first letter cannot be a number, period, or the letterse
andE
, etc. Users need to be careful when entering variable names or constraint names using the API (see API).If the naming format is not compliant when using MindOpt to model and generate
MPS
orLP
files, MindOpt will output with default naming.The length of variable names or constraint names cannot exceed 160
char
.Calculation symbols such as “+-” cannot be included in variable names or constraint names, otherwise the solver may treat these symbols as calculation symbols rather than variable names, resulting in parsing errors.
For the sake of stability, Chinese characters should be avoided as much as possible in variable names or constraint names.
4.1.4. Parameter Settings¶
Users can modify the value of parameter <parameter name>
to <parameter value>
using the following command format:
<parameter name>=<parameter value>
For example, the following example sets the optimization method to Primal Simplex Method by modifying the parameter Method and limits the number of iterations to 10000 by modifying the parameter SPX/MaxIterations when solving the afiro.mps
problem.
mindopt afiro.mps Method=0 SPX/MaxIterations=10000
For details on the parameters, please refer to the Parameters section.
4.1.5. Data Desensitization¶
The purpose of the --sanitize
and --undo_sanitize
interfaces is to desensitize and restore model files. The following table illustrates such a data desensitization function.
Before sanitization |
After sanitization |
---|---|
NAME AFIRO |
NAME Prob0001 FREE |
ROWS |
ROWS |
E ToTalR |
E R00000001 |
E StaffR10 |
E R00000002 |
L WorkX05 |
L R00000003 |
L WorkX21 |
L R00000004 |
E WorkR12 |
E R00000005 |
E SkillR13 |
E R00000006 |
L SkillX17 |
L R00000007 |
L SkillX18 |
L R00000008 |
L SkillX19 |
L R00000009 |
L GenderX20 |
L R0000000A |
E GenderR19 |
E R0000000B |
E GenderR20 |
E R0000000C |
COLUMNS |
COLUMNS |
CostX01 WorkX05 .301 R09 -1. |
C000001 R00000003 0.301 |
CostX02 SkillR13 -1.06 X05 1. |
C000002 R00000006 -1.06 |
CostX03 SkillX18 -1. R09 1. |
C000003 R00000008 -1 |
CostX04 GenderR20 -.4 |
C000004 R0000000C -0.4 |
The file formats supported by this interface include:
MPS type: The file extension must be
.mps
,.mps.gz
, or.mps.bz2
.LP type: The file extension must be
.lp
,.lp.gz
, orlp.bz2
.
Use the following command-line instruction to desensitize the model file:
mindopt afiro.mps --sanitize
After desensitization, two files will be generated:
afiro_sanitized.mps` is the desensitized model file, where variable names, constraint names, etc. are converted into the sequential encoding form of Rxx and Cxx, clearing business-related information and retaining only numerical data.
afiro_mapping.json
file records the correspondence between the desensitized file and the original file’s variable constraints.
After desensitization, the file can be restored to the original file using the afiro_mapping.json
file. Place the two files in the same directory and then execute the following command-line instruction:
mindopt afiro_mapping.json --undo_sanitize
The file afiro_sanitized_undo_sanitized.mps
generated by the command is consistent with the original problem file afiro.mps
.