The result of make unitTest
(executed in the build directory) is an executable
clp
as well as the CLP and COIN-OR libraries. The executable can be used
to perform various unit tests, but can also be used as a standalone
solver. As the executable has a very simple solution file format, the
user may wish to modify ClpMain.cpp
, which contains the
source of the executable (modifications could even be offered as a
contribution to CLP).
The clp
executable operates in command line mode or prompted mode.
Entering clp
will invoke the prompted mode, while clp <filename>
will import a problem in MPS format from filename
, solve it using the
dual simplex method and exit. The command
clp <filename> -primalsimplex
instructs the executable tp import a
file and solve using the primal simplex method. An additional solitary
dash (“-
”) starts the prompt mode once the execution of the initial
command has been completed. The “-
” is necessary as part of the
command; invoking prompt mode as a separate command will result in the
loss of problem information related to the initial command. So, the
following sequences of commands are equivalent in the sense that both
maximize a problem using the dual simplex method and write a solution to
file: solfile
:
$ clp filename -maximize -dualsimplex -solution solfile
$ clp filename -maximize -
Clp:duals
Clp:solution solfile
Clp:quit
The executable is at a very early stage of development. Comments and suggestions would be appreciated.
The executable has some command-completion functionality as well as some online help. Below is a table with some examples which summarize these capabilities.
Command | Result |
---|---|
? |
Gives a list of all commands |
p? |
Gives a list of all commands which begin with p . |
p?? |
Gives a list of all commands which begin with p , with a short explanation for each. |
primals?? |
If is this is enough to uniquely determine a command (in this example, primalS , for primal simplex), a long explanation is given. |
In addition, matching a name without a ?
will either execute the command
or give the value of the corresponding parameter as follows: primalw
will give the current value of the primalWeight
parameter while
primalw 1.0e7
will change it to 1.0e7
.
Below is a sample CLP executable prompt-mode session. A small problem is
loaded and solved under various conditions with the primal and dual
simplex methods. Note the use of the allslack
command; it sets the
basis to all slacks and resets the solution.
$ clp
Coin LP version 0.99.9, build Sep 14 2004
Clp takes input from arguments ( - switches to stdin)
Enter ? for list of commands or help
Clp:import../Data/Sample/p0033.mps
At line 15 NAME P0033
At line 16 ROWS
At line 34 COLUMNS
At line 109 RHS
At line 118 BOUNDS
At line 152 ENDATA
Problem P0033 has 16 rows, 33 columns and 98 elements
Model was imported from ./../Data/Sample/p0033.mps in 0 seconds
Clp:primals
Presolve 15 (-1) rows, 32 (-1) columns and 97 (-1) elements
0 Obj 0 Primal inf 27.2175 (10) Dual inf 6.42094e+11 (32)
32 Obj 2520.57
Optimal - objective value 2520.57
After Postsolve, objective 2520.57, infeasibilities - dual 0 (0), primal 0 (0)
Optimal objective 2520.571739 - 32 iterations time 0.012, Presolve 0.01
Clp:max
Clp:primals
Presolve 11 (-5) rows, 25 (-8) columns and 84 (-14) elements
0 Obj 4807.92 Dual inf 1700.71 (15)
End of values pass after 2 iterations
2 Obj 4921.7 Dual inf 580.637 (5)
9 Obj 5299.7
Optimal - objective value 5299.7
After Postsolve, objective 5299.7, infeasibilities - dual 643.608 (9), primal 27.0826 (10)
Presolved model was optimal, full model needs cleaning up
0 Obj 5299.7
0 Obj 5299.7
Optimal - objective value 5299.7
Optimal objective 5299.698868 - 9 iterations time 0.022, Presolve 0.02
Clp:allslack
Clp:duals
Presolve 11 (-5) rows, 25 (-8) columns and 84 (-14) elements
0 Obj 2752 Primal inf 24.4867 (6) Dual inf 4280.55 (25)
8 Obj 5299.7
Optimal - objective value 5299.7
After Postsolve, objective 5299.7, infeasibilities - dual 704.58 (8), primal 27.0792 (10)
Presolved model was optimal, full model needs cleaning up
0 Obj 5299.7
0 Obj 5299.7
Optimal - objective value 5299.7
Optimal objective 5299.698868 - 8 iterations time 0.032, Presolve 0.01
Clp:min
Clp:duals
Presolve 15 (-1) rows, 32 (-1) columns and 97 (-1) elements
0 Obj 5299.7 Dual inf 4632.26 (28)
16 Obj 2520.57
Optimal - objective value 2520.57
After Postsolve, objective 2520.57, infeasibilities - dual 2052.5 (13), primal 27.1143 (10)
Presolved model was optimal, full model needs cleaning up
0 Obj 2520.57
0 Obj 2520.57
Optimal - objective value 2520.57
Optimal objective 2520.571739 - 16 iterations time 0.012, Presolve 0.01
Clp:allslack
Clp:presolve off
Clp:primals
0 Obj 0 Primal inf 27.2175 (10) Dual inf 6.39167e+11 (32)
32 Obj 2520.57
Optimal - objective value 2520.57
Optimal objective 2520.571739 - 32 iterations time 0.002
Clp:allslack
Clp:maxIt 10
maxIterations was changed from 99999999 to 10
Clp:primals
0 Obj 0 Primal inf 27.2175 (10) Dual inf 6.39167e+11 (32)
Stopped - objective value 4.24664e+10
Stopped objective 4.246637759e+10 - 10 iterations time 0.002
Clp:quit