[OBOE-tickets] [OBOE] #2: --enable-serialization=yes functionality broken in OBOE trunk

OBOE coin-trac at coin-or.org
Sun Mar 23 10:53:12 EDT 2008


#2: --enable-serialization=yes functionality broken in OBOE trunk
------------------------+---------------------------------------------------
 Reporter:  nowozin     |       Owner:  somebody
     Type:  defect      |      Status:  new     
 Priority:  minor       |   Milestone:          
Component:  component1  |     Version:          
 Keywords:              |  
------------------------+---------------------------------------------------
 When --enable-serialization=yes is used, the SERIALIZATION macro is
 defined and additional code is included in OBOE.

 This code is out of sync with the remaining OBOE code and does not
 compile.  Specifically, line 132 in Manager.h reads:

 {{{
     AccpmVector *cut = new AccpmVector(_activeCutsM.getColumn(i));
     _cutSet[cut] = ++_currentCutId;
 }}}

 where _cutSet is a CutSet type, defined as

 {{{
     typedef map<const AccpmVectorIntPair *, int,  ltAccpmVectorPair>
 CutSet;
 }}}

 Therefore the operator[] call fails and produces the error message:

 {{{
 make[3]: Entering directory `/data/home/scut/projects-
 coin/oboe/src/AccpmCore'
 if g++ -DHAVE_CONFIG_H -I. -I. -I../.. -I../../src/ProblemInput
 -I../../src/AccpmLA/ -I../../src/Oracle -I../../src/Utilities
 -I/opt/lapackpp-2.5.2 -I/opt/lapackpp-2.5.2/include/    -O3 -Wall
 -DSERIALIZATION -MT Manager.o -MD -MP -MF ".deps/Manager.Tpo" -c -o
 Manager.o Manager.C; \
         then mv -f ".deps/Manager.Tpo" ".deps/Manager.Po"; else rm -f
 ".deps/Manager.Tpo"; exit 1; fi
 Manager.h: In member function ‘virtual void
 Accpm::Manager::postprocess()’:
 Manager.h:132: error: no match for ‘operator[]’ in
 ‘((Accpm::Manager*)this)->Accpm::Manager::_cutSet[cut]’
 /usr/include/c++/4.1.3/bits/stl_map.h:340: note: candidates are: _Tp&
 std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const _Key&) [with _Key
 = const Accpm::AccpmVectorIntPair*, _Tp = int, _Compare =
 Accpm::Manager::ltAccpmVectorPair, _Alloc = std::allocator<std::pair<const
 Accpm::AccpmVectorIntPair* const, int> >]
 make[3]: *** [Manager.o] Error 1
 }}}

 For now, one has to disable serialization when compiling OBOE.  I think
 the straight-forward checkpointing functionality is a great advantage of
 cutting plane methods and therefore a fix would be great.

-- 
Ticket URL: <https://projects.coin-or.org/OBOE/ticket/2>
OBOE <https://projects.coin-or.org/OBOE>
OBOE



More information about the OBOE-tickets mailing list