[Coin-discuss] does CGL depend on CLP?

Matthew Galati magh at lehigh.edu
Fri May 22 07:28:55 EDT 2009


Hi Pierre.

Thank you! This seems like the way to go - and eventually/hopefully someone
can make this work for other LP solvers via OSI interfaces.

You missed a few places. Diffs pasted below. With these diffs now, it does
seem that Cgl is independent of Clp.


magh at shark:~/COIN/coin-Decomp/Cgl/src$ svn diff
Index: CglLandP/CglLandPSimplex.cpp
===================================================================
--- CglLandP/CglLandPSimplex.cpp        (revision 736)
+++ CglLandP/CglLandPSimplex.cpp        (working copy)
@@ -905,10 +905,12 @@
     double infty = si_->getInfinity();
     int clpLeavingStatus = leavingStatus;

+#ifdef COIN_HAS_CLP
     if (solver_ == clp) {
         if (basics_[leaving] >= ncols_)
             clpLeavingStatus = - leavingStatus;
     }
+#endif
     //row_k_.print(std::cout, 7, nonBasics_, ncols_);
     //row_i_.print(std::cout, 7, nonBasics_, ncols_);
 #if 0
Index: CglLandP/CglLandPSimplex.hpp
===================================================================
--- CglLandP/CglLandPSimplex.hpp        (revision 736)
+++ CglLandP/CglLandPSimplex.hpp        (working copy)
@@ -18,7 +18,9 @@
 #include "CoinWarmStartBasis.hpp"
 #include "CoinPackedMatrix.hpp"

+#ifdef COIN_HAS_CLP
 #include "OsiClpSolverInterface.hpp"
+#endif
 #include "CglLandPTabRow.hpp"
 #include "CglLandPUtils.hpp"
 #include "CglLandPMessages.hpp"
@@ -65,15 +67,19 @@

     void setSi(OsiSolverInterface *si) {
         si_ = si;
+#ifdef COIN_HAS_CLP
         OsiClpSolverInterface * clpSi = dynamic_cast<OsiClpSolverInterface
*>(si_);
         if (clpSi) {
             solver_ = clp;
             clp_ = clpSi;
         }
+#endif
     }
     void freeSi() {
         delete si_;
+#ifdef COIN_HAS_CLP
         clp_ = NULL;
+#endif
     }

     Cuts& extraCuts() {









Matt,
> I updated makefiles in trunk so that nothing of CglLandP should be compiled
> if COIN_HAS_CLP is not true (I don't have writting permissions for the
> latest stable but modifications will come next time stable is updated). It
> should fix your linking problem, and remove the dependance (except if you
> would want to use lift-and-project cuts of course...).
> Best,
> Pierre
>
>
> On Fri, May 22, 2009 at 9:01 AM, John J Forrest <jjforre at us.ibm.com>wrote:
>
>>  Matt,
>>
>> As the owner of Clp I plead innocent. If you look at code you will see
>> that only CglLAndP uses Clp. Other cut generators which use tableau e.g.
>> CglGomory use Coin code to do factorization.
>>
>> It would probably only be an hours work to use #ifdef COIN_HAS_CLP to
>> dummy out CglLandP. However it might be better to get the opinion of Pierre
>> Bonami as I also notice #ifdef COIN_HAS_CPX and #ifdef COIN_HAS_XPR in the
>> CglLandPSimplex code.
>>
>> John
>>
>> [image: Inactive hide details for Matthew Galati ---05/21/2009 09:59:14
>> PM---So... CGL does depend on CLP. Ok. Hopefully someone can fi]Matthew
>> Galati ---05/21/2009 09:59:14 PM---So... CGL does depend on CLP. Ok.
>> Hopefully someone can fix that someday.
>>
>>
>> From:
>> Matthew Galati <magh at lehigh.edu>
>> To:
>> ladanyi at watson.ibm.com
>> Cc:
>> "coin-discuss at list.coin-or.org" <coin-discuss at list.coin-or.org>, Matthew
>> Galati <Matthew.Galati at sas.com>
>> Date:
>> 05/21/2009 09:59 PM
>> Subject:
>> Re: [Coin-discuss] does CGL depend on CLP?
>> ------------------------------
>>
>>
>>
>> So... CGL does depend on CLP. Ok. Hopefully someone can fix that someday.
>>
>>
>>    On Thu, 21 May 2009, Matthew Galati wrote:
>>
>>    > I am trying to use CPLEX as my LP solver. Does CGL depend on CLP? if
>>    > so - why? CGL should be completely independent of any LP solver -
>>    > right?
>>
>>    Yes and no... The end result is independent. However, some cut
>>    generators (e.g., CglLandP) depend on being able to perform low level
>>    tableau manipulation. Those methods are not available through OSI, so
>>    the cut generator uses an LP solver that does support these functions,
>>    and clp is a natural choice there. Actually, even if those methods
>>    would be available through OSI some LP solvers (like interior point)
>>    do not support them, so CGL would have to link with clp (or some LP
>>    solver that does support tableau methods) as a backup solution.
>>
>>    Granted, the code could have been written with a bunch of ifdefs, but
>>    apparently that's not how it was done...
>>
>>    --Laci
>>
>>    >
>>    >
>>    > bla=;\
>>    >        for file in ATM_Main.o ATM_Instance.o ATM_DecompApp.o; do
>>    bla="$bla `echo $file`"; done; \
>>    >        g++ -Wl,--rpath -Wl,/home/magh/COIN/coin-Decomp/build/lib -O3
>>    -fomit-frame-pointer -pipe -DNDEBUG -pedantic-errors -Wimplicit
>>    -Wparentheses -Wreturn-type -Wcast-qual -Wall -Wpointer-arith
>>    -Wwrite-strings -Wconversion -Wno-unknown-pragmas   -o decomp_atm $bla
>>     -L/home/magh/COIN/coin-Decomp/build/lib -lDecomp
>>    -L/usr/local/cplex/lib/x86_rhel4.0_3.4/static_pic -lcplex -lpthread -lm
>>     -lAlps `cat
>>    /home/magh/COIN/coin-Decomp/build/Decomp/../Alps/alps_addlibs.txt` -lOsiCpx
>>    -lcplex -lOsiCpx -lcplex -L/home/magh/COIN/coin-Decomp/build/lib -lCgl -lOsi
>>    -lCoinUtils `cat
>>    /home/magh/COIN/coin-Decomp/build/Decomp/../Cgl/cgl_addlibs.txt` `cat
>>    /home/magh/COIN/coin-Decomp/build/Decomp/../Osi/osi_addlibs.txt` `cat
>>    /home/magh/COIN/coin-Decomp/build/Decomp/../CoinUtils/coinutils_addlibs.txt`
>>    > /home/magh/COIN/coin-Decomp/build/lib/libCgl.so: undefined reference
>>    to `typeinfo for OsiClpSolverInterface'
>>    > /home/magh/COIN/coin-Decomp/build/lib/libCgl.so: undefined reference
>>    to `OsiClpSolverInterface::getModelPtr() const'
>>    > /home/magh/COIN/coin-Decomp/build/lib/libCgl.so: undefined reference
>>    to `ClpSimplex::factorize()'
>>    > collect2: ld returned 1 exit status
>>    > make: *** [decomp_atm] Error 1
>>    >
>>
>>    _______________________________________________
>>    Coin-discuss mailing list*
>>    **Coin-discuss at list.coin-or.org* <Coin-discuss at list.coin-or.org>*
>>    **http://list.coin-or.org/mailman/listinfo/coin-discuss*<http://list.coin-or.org/mailman/listinfo/coin-discuss>
>>
>> _______________________________________________
>> Coin-discuss mailing list
>> Coin-discuss at list.coin-or.org
>> http://list.coin-or.org/mailman/listinfo/coin-discuss
>>
>>
>>
>> _______________________________________________
>> Coin-discuss mailing list
>> Coin-discuss at list.coin-or.org
>> http://list.coin-or.org/mailman/listinfo/coin-discuss
>>
>>
>
> _______________________________________________
> Coin-discuss mailing list
> Coin-discuss at list.coin-or.org
> http://list.coin-or.org/mailman/listinfo/coin-discuss
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://list.coin-or.org/pipermail/coin-discuss/attachments/20090522/330218f9/attachment.html>


More information about the Coin-discuss mailing list