Routines for the LPSOLVE library.
LPSOLVE package (ported by Peter Notebaert), and ilpsolve() routine. The full documentation is available on
http://lpsolve.sourceforge.net/5.5/Euler.htm
load with "load lpsolve"
The package is also used by ilpsolve() in the simplex package.
function lpsolve (f, a, b, e, vlb = [], vub = [], .. xint = [], scalemode = 0, keep = 0)
Solves mixed integer linear programming problems. SYNOPSIS: {obj, x, duals, stat} = lpsolve(f,a,b,e,vlb,vub,xint,scalemode,keep) solves the MILP problem max v = f'*x a*x <> b vlb <= x <= vub x(int) are integer ARGUMENTS: The first four arguments are required: f: n vector of coefficients for a linear objective function. a: m by n matrix representing linear constraints. b: m vector of right sides for the inequality constraints. e: m vector that determines the sense of the inequalities: e(i) = -1 ==> Less Than e(i) = 0 ==> Equals e(i) = 1 ==> Greater Than vlb: n vector of lower bounds. If empty or omitted, then the lower bounds are set to zero. vub: n vector of upper bounds. May be omitted or empty. xint: vector of integer variables. May be omitted or empty. scalemode: scale flag. Off when 0 or omitted. keep: Flag for keeping the lp problem after it's been solved. If omitted, the lp will be deleted when solved. OUTPUT: A nonempty output is returned if a solution is found: x: Optimal value of the decision variables. obj: Optimal value of the objective function. duals: solution of the dual problem. >A=random(50,5)+1; b=ones(50,1)*1000; // random problem >c=ones(1,5); >load lpsolve; >lpsolve(c,A,b,-1) 95.1407198075 80.6576473906 222.637610333 171.292331463 0
function lpmaker (f, a, b, e, vlb = [], vub = [], xint = [], .. scalemode = 0, setminim = 0)
Makes mixed integer linear programming problems. SYNOPSIS: lp_handle = lpmaker(f,a,b,e,vlb,vub,xint,scalemode,setminim) make the MILP problem max v = f'*x a*x <> b vlb <= x <= vub x(int) are integer ARGUMENTS: The first four arguments are required: f: n vector of coefficients for a linear objective function. a: m by n matrix representing linear constraints. b: m vector of right sides for the inequality constraints. e: m vector that determines the sense of the inequalities: e(i) < 0 ==> Less Than e(i) = 0 ==> Equals e(i) > 0 ==> Greater Than vlb: n vector of non-negative lower bounds. If empty or omitted, then the lower bounds are set to zero. vub: n vector of upper bounds. May be omitted or empty. xint: vector of integer variables. May be omitted or empty. scalemode: Autoscale flag. Off when 0 or omitted. setminim: Set maximum lp when this flag equals 0 or omitted. OUTPUT: lp_handle is an integer handle to the lp created.