[Coin-discuss] Running Bcp on Windows

Jesper Hansen jesper at carmen.se
Thu Oct 30 04:32:51 EST 2003


Thanks for the efforts of getting Bcp running on Windows.

Now unfortunately the platform we use in this project is right now MVC6 so I
hacked my own Branch&Price together for the specific application. In the
long term I would like to port this to Bcp and use Bcp for other purposes.
One hastle is the lack of introduction to the code. F. Margot's paper on
Branch & Cut brings me some of the way, but I would suggest a Branch & Price
specific one as well. For the Mkc problem there is a bit in the COIN/Bcp
User's manual, but it is not really a quick tutorial and it is incomplete
and outdated. :-( Perhaps other people who have succesfully applied Bcp
could contribute?

There was a call for feedback on what we use COIN for. We (Carmen Consulting
part of the Carmen Group) for now only use the OSI interface and only for a
single application. However I believe that the use of COIN will expand
depending on the development of the COIN project. The reason for using OSI
was that we wanted the application to be solver independent.

Thanks for a great project!

Jesper Hansen

> -----Original Message-----
> From: coin-discuss-admin at www-124.ibm.com
> [mailto:coin-discuss-admin at www-124.ibm.com]On Behalf Of Laszlo Ladanyi
> Sent: Wednesday, October 29, 2003 10:39 PM
> To: coin-discuss at oss.software.ibm.com
> Subject: Re: [Coin-discuss] Running Bcp on Windows
>
>
> Thanks! I have committed your changes (with one difference: I
> have changed to
> using CoinCpuTime() from BCP_time_since_epoch()). Please check it out and
> verify that it works correctly.
>
> Thanks again,
> --Laci
>
> On Tue, 28 Oct 2003, Jörg Herbers wrote:
>
> > Hi Laci,
> >
> > <ctime> (instead of <time.h>) works without any further changes.
> >
> > Below, you'll find my "statement of origin". Let me know if you
> additionally
> > need a hardcopy.
> >
> > By the way: I didn't try to get the BCP features for parallel execution
> > running, and I don't know if the message passing interfaces can
> be ported to
> > Windows/VC7. The code works on a single machine, using
> BCP_message_single.
> >
> > Jörg
> >
> >
> >
> ==================================================================
> =============
> >
> > CONTRIBUTOR'S  STATEMENT OF ORIGIN
> >
> > I, Jörg Herbers:
> >
> > (a) represent that
> >
> > I am the only author and owner of the software
> >
> > described as "patches to compile BCP under VC++.NET", and
> >
> > (b)  represent that either
> >
> >    (i) this software was neither derived in any other way nor otherwise
> >
> >    copied from any other software, or
> >
> >    (ii) that any exception to (i) is software which was
> obtained under the
> >
> >    CPL (Common Public License), and
> >
> > (c)  hereby agree to license this software under the CPL.
> >
> >
> ==================================================================
> ==============
> >
> >
> >
> > >>>ladanyi at us.ibm.com 10/27/2003 5:31:19 PM >>>
> > Hi Jorg,
> >
> > Great work! I'll put in these changes into the repository, just
> I need you
> > to
> > fill out the mini-COO (certificate of origin) below. The
> description would
> > be,
> > I guess, "patches to compile BCP under VC++.NET" or something similar.
> >
> > BTW, could you try whether one could include <ctime> instead of
> <time.h>?
> > After all, ctime is the correct C++ header, but I know that it
> doesn't work
> > on
> > some systems.
> >
> > Thanks,
> > --Laci
> >
> >
> ==================================================================
> =============
> >
> > CONTRIBUTOR'S  STATEMENT OF ORIGIN
> >
> > I/We, ______________,  ______________, and ______________:
> >
> > (a) represent that
> >
> > I/we am/are the only author/authors and owner/owners of the software
> >
> > described as/entitled ____________________________, and
> >
> > (b)  represent that either
> >
> >    (i) this software was neither derived in any other way nor otherwise
> >
> >    copied from any other software, or
> >
> >    (ii) that any exception to (i) is software which was
> obtained under the
> >
> >    CPL (Common Public License), and
> >
> > (c)  hereby agree to license this software under the CPL.
> >
> >
> ==================================================================
> ==============
> >
> > On Wed, 22 Oct 2003, Jörg Herbers wrote:
> >
> > >Hi Jesper,
> > >
> > >BCP compiles on cygwin and with some modifications on Visual
> C++ .NET 2003.
> > >Most of the necessary changes are due to persistent problems
> of VC7 with
> > >templates:
> > >
> > >BCP_lp_branching.cpp:275: const int maxind =
> std::max<int>(rownum, colnum);
> > >BCP_lp_colrow.cpp:401:
> > >std::min<size_t>(p.param(BCP_lp_par::MaxCutsAddedPerIteration),
> > >BCP_lp_colrow.cpp:495:
> > >std::min<size_t>(p.param(BCP_lp_par::MaxVarsAddedPerIteration),
> > >BCP_lp_create_lp.cpp:125: const int num =
> std::max<int>(varnum, cutnum);
> > >BCP_lp_fathom.cpp:260: std::max<const size_t>(
> > >BCP_lp_generate_cuts.cpp:166: tout = std::max<double>(0.0, tout -
> > >(BCP_time_since_epoch() - tin));
> > >BCP_lp_generate_vars.cpp:162: tout = std::max<double>(0.0, tout -
> > >(CoinCpuTime() - tin));
> > >BCP_lp_main.cpp:32: p.node->vars.reserve(std::max<int>(1000, 3
> * bvarnum));
> > >BCP_lp_main.cpp:42: p.node->cuts.reserve(std::max<int>(1000, 3
> * bcutnum));
> > >BCP_lp_pool.cpp:8: _violation = std::max<double>( 0.0,
> > >std::max<double>(_row->LowerBound()-lhs,
> > >BCP_message_single.cpp:251: _lp_prob->upper_bound =
> > >std::min<double>(_tm_prob->ub(), DBL_MAX/2);
> > >
> > >BCP_timeout.cpp needs the following extensions:
> > >
> > >#if defined(_MSC_VER) && (_MSC_VER > 1300)
> > >#  include <time.h>
> > >#endif
> > >
> > >double BCP_time_since_epoch() {
> > >    BCP_DEFAULT_NAMESPACE;
> > >#if defined(_MSC_VER)
> > >    unsigned int ticksnow;
> > >    ticksnow = (unsigned int)clock();
> > >    return (double)((double)ticksnow/CLOCKS_PER_SEC);
> > >#else
> > >   /* ... as before ... */
> > >#endif
> > >}
> > >
> > >Furthermore, I use an OS specific header file (BCP_msvc.hpp):
> > >
> > >#ifndef _BCP_MSVC
> > >#define _BCP_MSVC
> > >
> > >typedef int BCP_IndexType;
> > >
> > >#  define setpriority(x,y,z)
> > >#  define BCP_USE_RUSAGE 0
> > >#  include <Windows.h>
> > >#  define gethostname(c, l) { DWORD cnlen = l;
> GetComputerName(c, &cnlen);
> > >}
> > >#  include <process.h>
> > >#  define BCP_PtrDiff       int
> > >#  define BCP_DEFAULT_NAMESPACE
> > >
> > >#    define NEED_TEMPLATE_CLASSES
> > >// #    define NEED_TEMPLATE_FUNCTIONS
> > >// #    define NEED_STD_TEMPLATE_FUNCTIONS
> > >// #    define NEED_IMPLICIT_TEMPLATE_CLASSES
> > >// #    define NEED_IMPLICIT_TEMPLATE_FUNCTIONS
> > >#    define BCP_CONSTRUCT     std::_Construct
> > >#    define BCP_DESTROY       std::_Destroy
> > >//#    define BCP_DESTROY_RANGE std::_Destroy_range
> > >
> > >template<class T> inline void BCP_DESTROY_RANGE(T *first, T *last)
> > >{
> > >   for (; first != last; ++first)
> > >     BCP_DESTROY(first);
> > >}
> > >
> > >#endif
> > >
> > >which is included in BCP_os.hpp:
> > >
> > >#if defined(_MSC_VER) && (_MSC_VER > 1300)
> > >#  include "BCP_msvc.hpp"
> > >#endif
> > >
> > > >From my viewpoint, it would be helpful to integrate these
> changes in BCP.
> > >But since the changes are due to compiler flaws, this again
> leads us to the
> > >discussion on how many and which compilers BCP should support...
> > >
> > >Jörg
> > >
> > >
> > > >>>jpfasano at us.ibm.com 10/20/2003 6:39:10 PM >>>
> > >
> > >
> > >
> > >
> > >Hi Jesper,
> > >I believe BCP will compile using CYGWIN on Windows.
> > >
> > >JP Fasano
> > >jpfasano at us.ibm.com (914)945-1324  (tie line 862-1324)
> > >COIN www.coin-or.org
> > >
> > >
> > >
> > >                       ladanyi at watson.ibm.com
>      Sent
> > >by:                       To:       COIN-discuss
> > ><coin-discuss at oss.software.ibm.com>
> > >                       coin-discuss-admin at www-        cc:
> > >                       124.ibm.com                    Subject:  Re:
> > >[Coin-discuss] Running Bcp on Windows
> > >
> > >
> > >                       10/20/2003 11:48 AM
> > >                       Please respond to
> > >                       coin-discuss
> > >
> > >
> > >
> > >
> > >
> > >
> > >Hi Jesper,
> > >
> > >Yes, I tried it, and it's a no go. BCP uses templated member
> functions and
> > >VC++-6.0 can't handle them. It claims that there's a syntax
> error. I boiled
> > >the problem down to a trivial example, contacted Microsoft and they
> > >admitted
> > >the error in the compiler.
> > >
> > >On the bright side, VC++-7 is supposed to be much more
> standards compliant,
> > >so
> > >you may get Bcp working with it.
> > >
> > >Good luck,
> > >--Laci
> > >
> > >On Mon, 20 Oct 2003, Jesper Hansen wrote:
> > >
> > > >Hi
> > > >
> > > >I'm trying to get Bcp running on Windows with Visual C++
> 6.0. However I
> > >get
> > > >a huge number of compilation errors. Have anyone tried this before?
> > > >Experiences would be much appreciated.
> > > >
> > > >For instance I get the following error (which does not seem to be an
> > >error):
> > > >
> > > >e:\COIN\Bcp\include\BCP_vector.hpp(299) : error C2039:
> 'const_iterator' :
> > >is
> > > >not a member of 'BCP_vec<int>'
> > > >
> > > >Another issue is the os specific header files...
> > > >
> > > >'Jesper
> > > >
> > > >
> > > >---
> > > >Jesper Hansen
mailto:jesper at carmenconsulting.com Carmen
> > >Consulting, Købmagergade 53 3., DK-1150 Kbh K, Denmark
> > >Telephone: +45 33 17 91 92                 Mobile: +45 61 33 29 69
> > >http://www.carmenconsulting.com >
> > >






More information about the Coin-discuss mailing list