On ubuntu, we could install the glpk on commend.
sudo apt-get install python-glpk
sudo apt-get install glpk-utils
Usage: glpsol [options...] filename
General options:
--mps read LP/MIP problem in fixed MPS format
--freemps read LP/MIP problem in free MPS format (default)
--lp read LP/MIP problem in CPLEX LP format
--glp read LP/MIP problem in GLPK format
--math read LP/MIP model written in GNU MathProg modeling
language
-m filename, --model filename
read model section and optional data section from
filename (same as --math)
-d filename, --data filename
read data section from filename (for --math only);
if model file also has data section, it is ignored
-y filename, --display filename
send display output to filename (for --math only);
by default the output is sent to terminal
--seed value initialize pseudo-random number generator used in
MathProg model with specified seed (any integer);
if seed value is ?, some random seed will be used
--mincost read min-cost flow problem in DIMACS format
--maxflow read maximum flow problem in DIMACS format
--cnf read CNF-SAT problem in DIMACS format
--simplex use simplex method (default)
--interior use interior point method (LP only)
-r filename, --read filename
read solution from filename rather to find it with
the solver
--min minimization
--max maximization
--scale scale problem (default)
--noscale do not scale problem
-o filename, --output filename
write solution to filename in printable format
-w filename, --write filename
write solution to filename in plain text format
--ranges filename
write sensitivity analysis report to filename in
printable format (simplex only)
--tmlim nnn limit solution time to nnn seconds
--memlim nnn limit available memory to nnn megabytes
--check do not solve problem, check input data only
--name probname change problem name to probname
--wmps filename write problem to filename in fixed MPS format
--wfreemps filename
write problem to filename in free MPS format
--wlp filename write problem to filename in CPLEX LP format
--wglp filename write problem to filename in GLPK format
--wcnf filename write problem to filename in DIMACS CNF-SAT format
--log filename write copy of terminal output to filename
-h, --help display this help information and exit
-v, --version display program version and exit
LP basis factorization options:
--luf plain LU-factorization (default)
--btf block triangular LU-factorization
--ft Forrest-Tomlin update (requires --luf; default)
--cbg Schur complement + Bartels-Golub update
--cgr Schur complement + Givens rotation update
Options specific to simplex solver:
--primal use primal simplex (default)
--dual use dual simplex
--std use standard initial basis of all slacks
--adv use advanced initial basis (default)
--bib use Bixby's initial basis
--ini filename use as initial basis previously saved with -w
(disables LP presolver)
--steep use steepest edge technique (default)
--nosteep use standard "textbook" pricing
--relax use Harris' two-pass ratio test (default)
--norelax use standard "textbook" ratio test
--presol use presolver (default; assumes --scale and --adv)
--nopresol do not use presolver
--exact use simplex method based on exact arithmetic
--xcheck check final basis using exact arithmetic
Options specific to interior-point solver:
--nord use natural (original) ordering
--qmd use quotient minimum degree ordering
--amd use approximate minimum degree ordering (default)
--symamd use approximate minimum degree ordering
Options specific to MIP solver:
--nomip consider all integer variables as continuous
(allows solving MIP as pure LP)
--first branch on first integer variable
--last branch on last integer variable
--mostf branch on most fractional variable
--drtom branch using heuristic by Driebeck and Tomlin
(default)
--pcost branch using hybrid pseudocost heuristic (may be
useful for hard instances)
--dfs backtrack using depth first search
--bfs backtrack using breadth first search
--bestp backtrack using the best projection heuristic
--bestb backtrack using node with best local bound
(default)
--intopt use MIP presolver (default)
--nointopt do not use MIP presolver
--binarize replace general integer variables by binary ones
(assumes --intopt)
--fpump apply feasibility pump heuristic
--proxy [nnn] apply proximity search heuristic (nnn is time limit
in seconds; default is 60)
--gomory generate Gomory's mixed integer cuts
--mir generate MIR (mixed integer rounding) cuts
--cover generate mixed cover cuts
--clique generate clique cuts
--cuts generate all cuts above
--mipgap tol set relative mip gap tolerance to tol
--minisat translate integer feasibility problem to CNF-SAT
and solve it with MiniSat solver
--objbnd bound add inequality obj <= bound (minimization) or
obj >= bound (maximization) to integer feasibility
problem (assumes --minisat)
For description of the MPS and CPLEX LP formats see Reference Manual.
For description of the modeling language see "GLPK: Modeling Language
GNU MathProg". Both documents are included in the GLPK distribution.
See GLPK web page at <http://www.gnu.org/software/glpk/glpk.html>.
Please report bugs to <[email protected]>.
# short example
# Usage: $ glpsol --math filename.math
# glpsol is a tool in GLPK, an open-source package http://www.gnu.org/s/glpk/
var x1;
var x2;
var x3;
var x4;
var z;
minimize obj: 3 * x1 + 9 * x2 + 20 * x3 + 19 * x4;
s.t. c1: 110 * x1 + 160 * x2 + 420 * x3 + 260 *x4 >= 2000;
s.t. c2: 4 * x1 + 8 * x2 + 4 * x3 + 14 *x4 >= 55;
s.t. c3: 2 * x1 + 285 * x2 + 22 * x3 + 80 *x4 >= 800;
s.t. c4: x1 >= 0;
s.t. c5: x2 >= 0;
s.t. c6: x3 >= 0;
s.t. c7: x4 >= 0;
s.t. c8: z= 3 * x1 + 9 * x2 + 20 * x3 + 19 * x4;
solve;
display c1, c2, c3;
display obj;
display z;
display x1, x2, x3, x4;
end;
上面是简单地例子,每个模型需要更改成为不同的参数的形式。AMPL语言是可以实现问题建模,每次输入不同的问题时都是可以解决到的。就像一个class与object的关系一样。上面的案例为obj的,而我的学习目标是可以实现class.