Re: [eclipse-clp-users] LP solvers via eplex

From: Kish Shen <>
Date: Tue, 13 Jul 2010 04:47:22 +0100 wrote:
> Dear ECLiPSe users,
> I wanted to ask you about your experience with interfacing LP solvers
> through the eplex lib.
> I have been recently working on linear relaxation of a large industrial
> problem ( more than half a million variables and and several tenths of
> thousands of constraints), and I've cosen the ECLiPSe environment to model
> the problem because it's good for fast prototyping. I've used the Coin-OR
> CLP solver which is default in ECLiPSe. However I'd like to make some
> performance tests with other solvers such as GLPK.

That's quite a big problem -- I certainly have not tried such a large 
problem with CLP/CBC via eplex. I know eplex have been used with larger 
programs (about half a million variables and constraints), but this was 
with CPLEX and/or Xpress.

> Sticking to the GLPK for a moment, if I understand it correctly, I would
> have to build the GLPK with the Coin-OR OSI libraries added, to get a dll
> which could  then be loaded by eplex ? I've seen that there is already an
> entry in the eplex_lic_info.ecl for glpk, so provided that I have a glpk
> library with osi I would have to uncomment the line, create a module
> "eplex_osi_glpk.ecl" just like for the other solvers and than load ":-
> lib(eplex_osi_glpk)" instead of ":- lib(eplex_osi_clpcbc)", please correct
> me if I am wrong at some point.
I think I have only tried GLPK a long time ago -- it was (as Joachim 
said) quite a bit slower than CLP/CBC in general, so I have not try it 
any more.

To use it (or indeed any other solvers supported via OSI), you need to 
build the solver with the appropriate OSI interface (OsiGlpk for GLPK).
You would need to check the COIN-OR website to see how to do this.

You will need to uncomment the line as you said, make some modifications 
to the Makefile to compile eplex with GLPK (via OSI).

The important thing is to have the se<solver>.so (or .dll) in the right 
place. The eplex_osi_cbcclp etc. modules are only there to ensure the 
corresponding solver is loaded.

You need to build everything (including ECLiPSe) using the same version 
of gcc, because the code compiled with g++ will only load into programs 
compiled with the same version of gcc/g++.

You probably should check the Setup guide if you intend to do this.

> Now moving to Express-MP, as far as I know this is commercial software from
> "dash optimization", so I won't be able to use that with eplex unless I have
> a valid license (the same case with CPLEX). What are than the libraries in
> the \lib\ARCH\express1525 for ? At first I thought these are the complete LP
> solver libraries because they are quite big, too big to contain only the
> interface.
> One more thing, when I run the Coin-OR CLP via eplex I get quite high memory
> consumption ( up to 1GB ) which is understandable because the problem is
> large. My question is does ECLiPSe limit in any way the memory usage of the
> external solvers ? I would not like ECLiPSe to do that. I got the global
> stack overflow a few times but i suppose that was because of large data
> structures created while building the problem definition for the external
> solver in eplex and not because of the Coin-OR CLP memory usage (no problems
> after increasing the global stack to 0.7GB).

When you use eplex, and you build your constraints in ECLiPSe, this uses 
memory, and when you pass this to the external solver, this uses 
additional memory. The ECLiPSe representation of the constraint is less 
memory efficient than the solver's representation. One way to reduce the 
memory usage is to add constraints to the external solver incrementally,
so that you don't have the whole problem represented in ECLiPSe 
(assuming you don't want to do anything to the model in ECLiPSe except 
passing it to the solver). However, for OSI, adding constraints 
incrementally is very slow, as it seems the problem matrix is copied and 
expanded each time you add a constraint.



This e-mail may contain confidential and privileged material for the
sole use of the intended recipient. Any review, use, distribution or
disclosure by others is strictly prohibited. If you are not the intended
recipient (or authorized to receive for the recipient), please contact
the sender by reply e-mail and delete all copies of this message.
Cisco Systems Limited (Company Number: 02558939), is registered in
England and Wales with its registered office at 1 Callaghan Square,
Cardiff, South Glamorgan CF10 5BT.
Received on Tue Jul 13 2010 - 03:47:34 CEST

This archive was generated by hypermail 2.2.0 : Thu Feb 02 2012 - 02:31:58 CET