[Symphony] error after generating user cuts

S R sr.pointe at gmail.com
Tue Dec 23 11:40:42 EST 2008


Hi.  I am having trouble with user generated cuts.  I am sure I have
done something wrong, but could use some help in figuring out what.

Details are...
	symphony 5.1.10
	compiler MSVC/windows or GCC/linux (tried both)

Exception:
	CoinPackedVector.cpp: line 200: throw CoinError("Index already
exists", "insert", "CoinPackedVector");

Call Stack (from MSVC/windows):
	CoinPackedVector::insert(int index=0, double
element=4.923030236156e-312#DEN)  Line 200 + 0xea bytes
 	add_rows(LPDATA * lp_data=0x00c7cea8, int rcnt=20, int nzcnt=173,
double * rhs=0x00cc0fa8, char * sense=0x00cab7d0, int *
rmatbeg=0x00cbc598, int * rmatind=0x00bfd340, double *
rmatval=0x00ce0fe8)  Line 2398
 	add_waiting_rows(LP_PROB * p=0x00c89198, WAITING_ROW * *
wrows=0x00caa610, int add_row_num=20)  Line 396 + 0x25 bytes
 	add_row_set(LP_PROB * p=0x00c89198, WAITING_ROW * *
wrows=0x00caa610, int length=20)  Line 264 + 0x11 bytes
 	add_best_waiting_rows(LP_PROB * p=0x00c89198)  Line 349 + 0x17 bytes	
 	receive_cuts(LP_PROB * p=0x00c89198, int first_lp=0, int
no_more_cuts_count=0)  Line 477 + 0x9 bytes
 	fathom_branch(LP_PROB * p=0x00c89198)  Line 367 + 0x12 bytes	
 	process_chain(LP_PROB * p=0x00c89198)  Line 179 + 0x9 bytes	
 	solve(TM_PROB * tm=0x00c9e290)  Line 398 + 0x18 bytes	
 	sym_solve(SYM_ENVIRONMENT * env=0x00345e70)  Line 939 + 0xc bytes	
 	OsiSymSolverInterface::branchAndBound()  Line 89 + 0xc bytes	
 	main(int argc=5, char * * argv=0x00343c28)  Line 2337	

Description:

I am reading in a problem, then have changed user_find_cuts to
generate cuts specific to my problem.  (I have tried multiple problems
with similar results.)  Cuts are added using cg_add_explicit_cut.  The
first time that user_find_cuts is called, everything seems to proceed
fine.  However, after the second time user_find_cuts is called, I get
the above exception.  Examining the data, it seems that in
lp_solver.c, function add_rows, line 2397, all the values in the
rmatind array are zero for at least the first 30 or so values.  I have
tried to trace backwards to see where these are getting set without
much insight.

If I remove my user generated cuts, then everything is fine.  If I
replace the actual user generated cuts with weak cuts, then everything
is fine.  So it seems that a) symphony is fine, b) my understanding of
generating cuts is at least syntatically valid.  Therefore, it seems
like it must be the cuts I am generating.  However, I have verified
that the cuts generated do not have duplicate indices.  (In fact, I am
using a CoinPackedVector to store them so it should complain if I
insert an existing index.)  Even if my cuts are
horrible/wrong/infeasible, it seems like that would just change the
problem space, not give the exception I am seeing.  The value of
"4.923030236156e-312#DEN" is suspicious-- my user generated
constraints have small integral values (in the range 0-5).

So, can anyone give me any suggestions/clues/hints?  I am not sure
what else to try.

Thanks for your time,
Sam




More information about the Symphony mailing list