<br><font size=2 face="sans-serif">Kyle,</font>
<br>
<br><font size=2 face="sans-serif">While Cbc i.e. Osi could allow more
types of matrices I am not sure it is a good idea for Branch and Cut. A
bit of extra storage before entering branch and cut is the least
of your worries. In branch and cut the cut generators all expect
a CoinPackedMatrix and if they add any cuts they will destroy any special
structure.</font>
<br>
<br><font size=2 face="sans-serif">If you are masochistic enough to want
to try and stress the code you could do the following:</font>
<br>
<br><font size=2 face="sans-serif">Get an OsiClpSolverInterface solver</font>
<br><font size=2 face="sans-serif">get a ClpSimplex pointer using getModelPtr()</font>
<br><font size=2 face="sans-serif">create model and pass in +-1 matrix
- you can get clues from Clp/Test/unitTest.cpp</font>
<br><font size=2 face="sans-serif">pass solver to Cbc</font>
<br>
<br><font size=2 face="sans-serif">It will do the initial solve. If
it does not add cuts it should stay as +- matrix. If it does cuts
it "should" magically become an ordinary matrix - if it fails
then I will fix.</font>
<br>
<br><font size=2 face="sans-serif">John Forrest</font>
<br>
<br>
<br>
<table width=100%>
<tr valign=top>
<td width=40%><font size=1 face="sans-serif"><b>Kyle Ellrott <kellrott@csbl.bmb.uga.edu></b>
</font>
<br><font size=1 face="sans-serif">Sent by: coin-lpsolver-bounces@list.coin-or.org</font>
<p><font size=1 face="sans-serif">03/03/2005 11:09 AM</font>
<td width=59%>
<table width=100%>
<tr>
<td>
<div align=right><font size=1 face="sans-serif">To</font></div>
<td valign=top><font size=1 face="sans-serif">coin-lpsolver@list.coin-or.org</font>
<tr>
<td>
<div align=right><font size=1 face="sans-serif">cc</font></div>
<td valign=top>
<tr>
<td>
<div align=right><font size=1 face="sans-serif">Subject</font></div>
<td valign=top><font size=1 face="sans-serif">Re: [Coin-lpsolver] Constraint
matrix</font></table>
<br>
<table>
<tr valign=top>
<td>
<td></table>
<br></table>
<br>
<br>
<br><font size=2><tt>I've been looking through the source tree to get a
better understanding <br>
of what's going on. But I do have a few questions.<br>
From my understanding CoinPackedMatrix is derived from ClpPackedMatrix,
<br>
and adds a few functions (actually It looks like it adds about 38 pages
<br>
worth of code to ClpPackMatrix). Do all those functions need to be
<br>
added before Cbc can utilize the matrix?<br>
<br>
There is no equivalent Coin class for the ClpPlusMinusOneMatrix. I'm
<br>
assuming one would have to be created before it could be used in the <br>
CbcModel interface. Of course I would also have to add a loadProblem
<br>
method to Cbc that used this hypothetical CoinPlusMinusOneMatrix. Then
<br>
maybe change the internal Cbc matrix pointers is a more generic <br>
CoinMatrixBase (which doesn't exist either) which would be an abstract
<br>
based on ClpMatrixBase, rather then the current CoinPackedMatrix.<br>
<br>
Is this what it would take to get a plus/minus one matrix working in <br>
Cbc? Or have I over complicated the problem?<br>
<br>
Kyle<br>
<br>
<br>
<br>
> Thank you, that helps ;-)<br>
><br>
> But I do have one problem. According the page mentioned, both
<br>
> ClpPlusMinusOneMatrix and ClpPackedMatrix both inherit from <br>
> ClpMatrixBase. The problem is that OsiClpSolverInterface's <br>
> loadProblem only mentions CoinPackedMatrix (which I think is the same
<br>
> as ClpPackedMatrix), but not the parent class of ClpMatrixBase. So
<br>
> when I try to pass a ClpPlusMinusOneMatrix to OsiClpSolverInterface's
<br>
> loadProblem, I get something like<br>
><br>
> intpro_threading.cc:766: error: no matching function for call to `<br>
> OsiClpSolverInterface::loadProblem(ClpPlusMinusOneMatrix&,
double*&,<br>
> double*&, double*&, double*&, double*&)'<br>
> /Users/kye/COIN/include/OsiClpSolverInterface.hpp:600: error: <br>
> candidates are:<br>
> virtual void OsiClpSolverInterface::loadProblem(const
<br>
> CoinPackedMatrix&,<br>
> const double*, const double*, const double*, const double*,
const <br>
> double*)<br>
><br>
> Any thoughts?<br>
><br>
> Kyle<br>
><br>
><br>
><br>
>> I think you will find this page of the CLP documentation will
help <br>
>> you:<br>
>><br>
>> http://www.coin-or.org/Clp/userguide/ch03s02.html<br>
>><br>
>> In other words, there's (supposed to be) a matrix class specific
to <br>
>> your situation.<br>
>><br>
>> At 02:38 PM 3/2/2005, Kyle Ellrott wrote:<br>
>>> I'm curious about the CoinPackedMatrix structure that I use
to setup <br>
>>> my constraint matrix for my integer programming problem. From
what <br>
>>> I understand so far, it's input data is doubles. But
for my <br>
>>> particular problem, the only values I put in it are -1, 1,
and 0 (0 <br>
>>> being being cells that aren't mentioned in my description).
By <br>
>>> using a double rather then a char, I'm using 8 time more memory
then <br>
>>> I need to.<br>
>>> Is there are more efficient method to describe this matrix?<br>
>>><br>
>>> Kyle<br>
>>><br>
>>> _______________________________________________<br>
>>> Coin-lpsolver mailing list<br>
>>> Coin-lpsolver@list.coin-or.org<br>
>>> http://list.coin-or.org/mailman/listinfo/coin-lpsolver<br>
>><br>
><br>
> _______________________________________________<br>
> Coin-lpsolver mailing list<br>
> Coin-lpsolver@list.coin-or.org<br>
> http://list.coin-or.org/mailman/listinfo/coin-lpsolver<br>
<br>
_______________________________________________<br>
Coin-lpsolver mailing list<br>
Coin-lpsolver@list.coin-or.org<br>
http://list.coin-or.org/mailman/listinfo/coin-lpsolver<br>
</tt></font>
<br>