Command Line Options

Minion supports a number of switches to augment default behaviour, these are listed here. We begin with the most useful, and then list other, less common flags.

Choosing how much search to perform (time, number of solutions)

-nodelimit <N>

To stop search after N nodes:

-sollimit <N>

To stop search after N solutions have been found:

-timelimit <N>

To stop search after N seconds (real time):

-cpulimit <N>

To stop search after N seconds (CPU time):

-findallsols

Find all solutions and count them. This option is ignored if the problem contains any minimising or maximising objective.

Control output

-quiet

Do not print parser progress (default)

-verbose

Print parser progress

-printsols

Print solutions (default).

-noprintsols

Do not print solutions.

-printsolsonly

Print only solutions and a summary at the end.

-printonlyoptimal

In optimisation problems, only print the optimal value, and not intermediate values.

-tableout <filename>

Append a line of data about the current run of minion to a named file. This data includes minion version information, arguments to the executable, build and solve time statistics, etc. See the file itself for a precise schema of the supplied information.

-jsontableout <filename>

Append a line of data about the current run as JSON to a named file. Contains the same information as -tableout, but formatted as a JSON object.

-solsout <filename>

Append all solutionsto a named file. Each solution is placed on a line, with no extra formatting.

Less common flags

-outputCompressedDomains

Try to reduce the initial domains of variables, and output them. This is in general not useful for users, but is provided as a pre-preprocessing step for other systems.

-outputCompressed <newname>

Output a Minion instance with some basic reasoning performed to reduce the size of the file, such as reducing domain size. This file should produce identical output the original instance but may solve faster.

-redump

Print the minion input instance file to standard out. No search is carried out when this switch is used. This can be used to update files in old versions of the Minion file format.

-instancestats

Output various statistics about the minion file, which can be used for machine learning.

-map-long-short

Automatically generate a short tuple list from each long tuple list.

The methods of compression are:

  • none : No short tuple list generated (default)

  • eager : Use a fast algorithm to produce a reasonable short tuple list (best as first choice)

  • lazy : Work harder (possibly exponentially) to produce a shorter short tuple list

  • keeplong : Make a ‘short tuple list’ with no short tuples (only useful for benchmarking)

-nocheck

Do not check solutions for correctness before printing them out.

-check

Check solutions for correctness before printing them out. This should only make a difference if Minion contains a bug.

-dumptree

Print out the branching decisions and variable states at each node.

-dumptreejson <filename>

Print out the branching decisions and variable states at each node as a JSON file to a filename.

-dumptreesql <filename>

Print out the branching decisions and variable states at each node to an SQL database.

-skipautoaux

By default Minion adds all variables to the varorder, to ensure that all variables are branched assigned before a solution is outputted. This option disables that behaviour. This means minion Minion may output solutions incorrectly, or incorrect numbers of solutions. This flag is provided because some users require this low-level control over the search, but is in general useless and dangerous. In particular, it will not speed up search (except when the speed up is due to producing garbage of course!)

-randomiseorder

Randomises the ordering of the decision variables, and the value ordering. If the input file specifies as ordering it will randomly permute this. If no ordering is specified a random permutation of all the variables is used.

-jsonsolsout <filename>

Append all solutions to a named file, as JSON objects. Each solution is store as a seperate JSON object.

-makeresume

Write a resume file on timeout or being killed.

-noresume

Do not write a resume file on timeout or being killed. (default)

-gap

Give name of gap executable (defaults to gap.sh)

-command-list <infile> <outfile>

Read a list of commands from infile and write the results to outfile. This allows batch processing of multiple Minion commands without restarting the solver.

-split

When Minion is terminated before the end of search, write out two new input files that split the remaining search space in half. Each of the files will have all the variables and constraints of the original file plus constraints that rule out the search already done. In addition, the domain of the variable under consideration when Minion was stopped is split in half with each of the new input files considering a different half.

This feature is experimental and intended to facilitate parallelisation –to parallelise the solving of a single constraint problem, stop and split repeatedly. Please note that large-scale testing of this feature was limited to Linux systems and it might not work on others (especially Windows).

The name of the new input files is composed of the name of the original instance, the string ‘resume’, a timestamp, the process ID of Minion, the name of the variable whose domain is being split and 0 or 1. Each of the new input files has a comment identifying the name of the input file which it was split from. Similarly, Minion’s output identifies the new input files it writes when splitting.

The new input files can be run without any special flags.

This flag is intended to be used with the -timelimit, -sollimit, -nodelimit or -cpulimit flags. Please note that changing other flags between runs (such as -varorder) may have unintended consequences.

Implies -makeresume.

-split-stderr

The flag -split-stderr has the same function as the flag -split, however the two new Minion input files are sent to standard error rather than written to files.

See documentation for -split.