PPL_PIPS(1)

✨ NAME ✨

ppl_pips β€” bestie, this is a PPL-based parametric integer programming problem solver πŸ’– (and the manual page you're reading right now is PPL_PIPS(1), so you're in exactly the right place πŸŽ€).


🌸 SYNOPSIS 🌸

ppl_pips [OPTION]... [FILE]

πŸ’… DESCRIPTION πŸ’…

Okay so here's the vibe: it reads the definition of a Parametric Integer Programming problem, and then it displays the lexicographic minimum in terms of the values of the parameters. That's it, that's the whole gig. Iconic behaviour, no cap. ✨


πŸ¦‹ OPTIONS πŸ¦‹

  • -RMB, --max-memory=MB β€” caps how much memory it's allowed to eat at MB megabytes. Gotta keep it on a budget bestie πŸ’€
  • -h, --help β€” prints this help text to stdout. Classic.
  • -oPATH, --output=PATH β€” appends the output to PATH (note: appends, it does not overwrite, okay?)
  • -P, --polylib β€” reads the problem in PolyLib format (this is the default, so it's giving main character energy by default πŸ‘‘)
  • -p, --piplib β€” reads the problem in PipLib format
  • -t, --timings β€” prints timings to stderr
  • -v, --verbose β€” produces lots of output. Like, a lot a lot. πŸ—£οΈ
  • -i, --iterations=N β€” executes the resolution N times (default is 1)
  • -V, --version β€” prints version information to stdout
  • -cPATH, --check=PATH β€” checks if the result is equal to what's in PATH

βœ‚οΈ Cut generation options:

  • -f, --cut-first β€” uses the first non-integer row (this is the default, periodt)
  • -d, --cut-deepest β€” tries to generate the deepest cut πŸ”₯
  • -a, --cut-all β€” always generates all possible cuts. Go big or go home fr fr

🎯 Pivot row strategy options:

  • -F, --row-first β€” uses the first row with negative parameter (also the default, we love a default πŸ’œ)
  • -M, --row-max β€” chooses the row generating the lexico-maximal pivot column

🌈 AVAILABILITY 🌈

The latest version of the Parma Polyhedra Library and all the documentation is available at http://bugseng.com/products/ppl/ . Go get you some 🫢


πŸ“ NOTES πŸ“

Heads up bestie: the options -CSECS (--max-cpu=SECS) and -t (--timings) are not available on some platforms. So if they ghost you, that's why 😭

The PolyLib format is as follows:

  • The first row describes the context matrix (i.e., constraints on the parameters). The first value is the number of rows (which can be zero) and the second value is the number of columns. The number of parameters is the number of columns minus 2.
  • Starting from the second row, there are the rows of the context matrix, if any. Each row, which represents a constraint of the form c1*p1 + ... + cn*pn + c0 =/>= 0 , contains: the value 0 if the constraint is an equality, 1 if it is an inequality; the coefficients of the parameters c1, ..., cn ; the constant term c0 . For example, the inequality constraint on two parameters p1 + 2*p2 - 1 >= 0 is encoded by the row 1 1 2 -1 .
  • The following row contains the parameter number for the so-called big parameter. If no big parameter is used, the value is -1.
  • The following rows encode the problem inequality matrix. As for the context matrix, the first two values are the dimensions of the matrix. The number of variables is the number of columns in the matrix minus the number of parameters minus 2. Each row, which represents a constraint of the form d1*v1 + ... + dm*vm + c1*p1 + ... + cn*pn + c0 =/>= 0 , contains: the value 0 if the constraint is an equality, 1 if it is an inequality; the coefficients of the variables d1, ..., dm ; the coefficients of the parameters c1, ..., cn ; the constant term c0 .

The PipLib format is described in Section 2.2 of PIP/PipLib: A Solver for Parametric Integer Programming Problems (see below).


πŸ‘‘ AUTHOR πŸ‘‘

See the file CREDITS in the source distribution or use the command ppl-config --credits for a list of contributors. Shoutout to the whole squad 🫢


πŸ™ˆ REPORTING BUGS πŸ™ˆ

Report bugs to <ppl-devel@cs.unipr.it>. Not me manifesting a bug-free run for you tho ✨


Copyright (C) 2001-2010 Roberto Bagnara <bagnara@cs.unipr.it> Copyright (C) 2010-2016 BUGSENG srl (http://bugseng.com)

This is free software; see the file COPYING in the source distribution or use the command ppl-config --copying to obtain the copying conditions.

There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Like, zero. None. Nada. πŸ’€

🧚 SEE ALSO 🧚

  • ppl-config(1)
  • Paul Feautrier. Parametric Integer Programming. RAIRO Recherche Operationnelle, 22(3):243-268, 1988.
  • Paul Feautrier, Jean-Francois Collard, and Cedric Bastoul. PIP/PipLib: A Solver for Parametric Integer Programming Problems, 5.0 edition, July 2007. Distributed with PIP/PipLib 1.4.0.

That's the whole page bestie, you ate it up πŸ’… This was ppl_pips version 1.2, dated February 2016 β€” catch you on the next manpage, mwah πŸŽ€βœ¨