# [Executable](@id executable)

HiGHS can run as a stand-alone program with a command-line
interface. It solves an optimization problem provided by either an
[MPS](https://docs.gurobi.com/projects/optimizer/en/current/reference/fileformats/modelformats.html#mps-format)
file, or
[LP](https://docs.gurobi.com/projects/optimizer/en/current/reference/fileformats/modelformats.html#lp-format)
file. Note that HiGHS cannot read the [lpsolve LP file
format](https://lpsolve.sourceforge.net/5.5/lp-format.htm).

### Running the executable

For convenience, the executable is assumed to be `bin/highs`.
The model given by the MPS file `model.mps` is solved by the command:

```shell
$ bin/highs model.mps
```

If the model file is not in the folder from which the command was issued, then a
path name can be given.

### Command line options

HiGHS is controlled by [option](@ref options-intro) values. When it is
run from the command line, some fundamental option values may be
specified directly. Many more may be specified via a file containing
HiGHS options settings. Formally, the usage is:

```shell
$ bin/highs --help
usage:
      ./bin/highs [options] [file]

options:
      --model_file file          File of model to solve.
      --options_file file        File containing HiGHS options.
      --read_solution_file file  File of solution to read.
      --read_basis_file text     File of initial basis to read. 
      --write_model_file text    File for writing out model.
      --solution_file text       File for writing out solution.
      --write_basis_file text    File for writing out final basis.
      --presolve text            Set presolve option to:
                                   "choose" * default 
                                   "on"
                                   "off"
      --solver text              Set solver option to: 
                                   "choose" * default 
                                   "simplex"
                                   "ipm" 
      --parallel text            Set parallel option to: 
                                   "choose" * default 
                                   "on" 
                                   "off" 
      --threads int              Set maximum number of threads to use:
                                 0: automatic * default
      --run_crossover text       Set run_crossover option to: 
                                   "choose" 
                                   "on" * default 
                                   "off" 
      --time_limit float         Run time limit (seconds - double).
      --random_seed int          Seed to initialize random number 
                                 generation.
      --ranging text             Compute cost, bound, RHS and basic 
                                 solution ranging:
                                   "on" 
                                   "off" * default 
      --notice                   Print third-party information 
                                 information.
  -v, --version                  Print version.
  -h, --help                     Print help.
```

The [list of options](@ref option-definitions) section gives a full
list of options, and their default values. In a file containing HiGHS
options they are specified as `name = value`, with one per line, and
any line beginning with `#` treated as a comment. For example, the
primal-dual hybrid gradient method for LP (PDLP) is used with all
feasibility and optimality tolerances set to `1e-4` if HiGHS reads the
following in its options file.
```shell
solver = pdlp
kkt_tolerance = 1e-4
```

### Return code values

Consistent with the callable methods in HiGHS, there are three possible return codes

 * -1: An error has occurred in HiGHS
 * 0: HiGHS has run successfully
 * 1: HiGHS has recovered from an unusual event, or has terminated due to reaching a time or iteration limit
