Linner Programming Package GLPK and LP

install glpk

On ubuntu, we could install the glpk on commend.

sudo apt-get install python-glpk
sudo apt-get install glpk-utils

help information

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]>.

an example for glpk

# 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

上面是简单地例子,每个模型需要更改成为不同的参数的形式。AMPL语言是可以实现问题建模,每次输入不同的问题时都是可以解决到的。就像一个class与object的关系一样。上面的案例为obj的,而我的学习目标是可以实现class.

你可能感兴趣的:(线性规划,GLPK)