<br><font size=2 face="sans-serif">Few comments below</font>
<br><font size=2 face="sans-serif">&nbsp;</font>
<br>
<br><font size=2><tt>coin-discuss-bounces@list.coin-or.org wrote on 04/05/2005
07:43:00 PM:<br>
<br>
&gt; John J Forrest wrote:<br>
&gt; &gt; <br>
&gt; &gt; Ted,<br>
&gt; &gt; <br>
&gt; &gt; Does adding #include &lt;cstdio&gt; at top of CoinHelperFunctions.hpp
help?<br>
&gt; &gt; <br>
&gt; &gt; John<br>
&gt; <br>
&gt; Yes, that fixes it. Thanks.<br>
&gt; <br>
&gt; Also, the OsiSymSolverInterface unit test should work properly now.
<br>
&gt; There was a bug in the copy constructor that is now fixed. Also, I
had <br>
&gt; to comment out a few tests. SYMPHONY will not pass the common unit
tests <br>
&gt; for two reasons:<br>
&gt; <br>
&gt; 1. We do not allow an infeasible solution to be loaded into the <br>
&gt; interface. I think this is a reasonable policy, since it is natural
to <br>
&gt; assume that the currently loaded solution is feasible to the currently
<br>
&gt; loaded problem. SYMPHONY has no mechanism for storing an infeasible
<br>
&gt; solution. This unit test requires this. I'm not sure this is reasonable,
<br>
&gt; but I'd be curious to hear other opinions.<br>
</tt></font>
<br><font size=2><tt>If the user can modify the loaded solution, then it
is reasonable to assume</tt></font>
<br><font size=2><tt>that it could be infeasible.</tt></font>
<br>
<br><font size=2><tt>&gt; <br>
&gt; 2. Pointers to rim vectors returned by methods such as getColLower()
<br>
&gt; become invalid if the problem is modified. This is because SYMPHONY
<br>
&gt; itself returns a copy of requested rim vectors to the interface (not
a <br>
&gt; pointer to the internally stored data). The pointer to this copy is
then <br>
&gt; cached locally in the interface. It is the pointer to this locally
<br>
&gt; cached copy that is returned to the user. The locally cached arrays
are <br>
&gt; deleted when certain problem data are modified and only recreated
when a <br>
&gt; new pointer is requested. In particular, when any column bound is
<br>
&gt; changed, the locally cached copies of both the upper and lower bound
<br>
&gt; arrays are deleted. The common unit test requests a pointer to the
<br>
&gt; bounds arrays, then modifies the problem and expects that pointer
to <br>
&gt; remain valid. I'm not sure this is reasonable either. Pointers should
<br>
&gt; probably only be required to remain valid while the problem data remains
<br>
&gt; unchanged. I'd be curious to hear other opinions on this as well.<br>
</tt></font>
<br><font size=2><tt>It is reasonable to require the user to suppose that
a pointer to an </tt></font>
<br><font size=2><tt>internal array could be modified by its owning program
during a subsequent</tt></font>
<br><font size=2><tt>call. &nbsp;For the unit test, the bounds arrays returned
in the subsequent </tt></font>
<br><font size=2><tt>call should be identical to the ones obtained previously.</tt></font>
<br>
<br><font size=2><tt>Best,</tt></font>
<br><font size=2><tt>Alan</tt></font>
<br>
<br><font size=2><tt>&gt; <br>
&gt; Cheers,<br>
&gt; <br>
&gt; Ted<br>
&gt; -- <br>
&gt; Dr. Ted Ralphs<br>
&gt; Assistant Professor<br>
&gt; Industrial and Systems Engineering<br>
&gt; Lehigh University<br>
&gt; (610)758-4784<br>
&gt; tkralphs@lehigh.edu<br>
&gt; www.lehigh.edu/~tkr2<br>
&gt; _______________________________________________<br>
&gt; Coin-discuss mailing list<br>
&gt; Coin-discuss@list.coin-or.org<br>
&gt; http://list.coin-or.org/mailman/listinfo/coin-discuss<br>
</tt></font>