Quantitative finance collector
C++ Matlab VBA/Excel Java Mathematica R/Splus Net Code Site Other
Sep 11

Mixed Integer Linear Programming (MILP) solver

Posted by abiao at 08:04 | Code » C++ | Comments(0) | Reads(20089)
Are you fed up with "linprog" or "fmincon" command in Matlab? do you sometimes find the results violate your providing constraints while Matlab says "condition satisfied", or sometimes you get a weird solution while Matlab tells you "convergence successful", etc. (I am not saying bad words about Matlab, I AM a fan of it, but if there is a better solution for the given problem, why not at least try it?)

Optimization packages are widelyspread, here is a site i introduced, optimization package. Several days ago a friend of mine sent me a link about lp-solver, which is a Mixed Integer Linear Programming (MILP) solver, convenient to use and highly efficient, cannot help sharing with you all. (please submit your favorite code site if you happen to find one and help others, thanx.)

The name itself tells you this package is for linear programming problem, What is Linear Programming then? A Linear Program (LP) is a problem that can be expressed as follows:

    minimize   cx
    subject to Ax  = b
                x >= 0

where x is the vector of variables to be solved for, A is a matrix of known coefficients, and c and b are vectors of known coefficients. The expression "cx" is called the objective function, and the equations "Ax=b" are called the constraints. LP is widely used for portfolio optimization, for instance, to mimic the performance of an index, to minimize tracking error of your portfolio, etc. Don't hesitate to try it yourself.

PS: lp-solver can be called as a library from different languages like C, VB, .NET, Delphi, Excel, Java, ...It can also be called from AMPL, MATLAB, O-Matrix, Scilab, Octave, R via a driver program. you will find a way.

Download at http://lpsolve.sourceforge.net/5.5/.

Add a comment
Enable HTML
Enable UBB
Enable Emots
Nickname   Password   Optional
Site URI   Email   [Register]