[Coin-discuss] does CGL depend on CLP?

Pierre Bonami pierre.bonami at gmail.com
Fri May 22 08:32:38 EDT 2009


Hi Matt,

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

Thanks, I fixed them.
Best,
Pierre

>
>
>
> 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/b87f4f5d/attachment.html>


More information about the Coin-discuss mailing list