The CLP Executable
Quick Start
The result of make unitTest (executed in
COIN/Clp) is an executable
clp as well as the CLP and COIN 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 COIN/Clp/Test/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.
Online Help and Basic Usage
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 examples for the clp executable
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.
A Sample Session
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../Mps/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 ./../Mps/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