<br><font size=2 face="sans-serif">Eduardo,</font>
<br>
<br><font size=2 face="sans-serif">On using an initial solution, there
are at least two ways I can think of in SBB. &nbsp;One way, which I would
have to do more testing on, is to pass in a solution and then branch towards
that so that you have a hotstart tree. &nbsp;The other way uses local branching
as in the paper of Matteo Fischetti and Andrea Lodi. &nbsp;This looks very
promising and I think something very like it is implemented in Cplex 9.
&nbsp;I have not announced it yet as I am still running tests but it is
in Sbb/Samples/SbbTreeLocal and sample3.cpp.</font>
<br>
<br><font size=2 face="sans-serif">John Forrest</font>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<table width=100%>
<tr valign=top>
<td width=40%><font size=1 face="sans-serif"><b>&quot;Eduardo&quot; &lt;efsilva@pobox.com&gt;</b>
</font>
<br><font size=1 face="sans-serif">Sent by: coin-discuss-admin@www-124.southbury.usf.ibm.com</font>
<p><font size=1 face="sans-serif">05/04/2004 09:14 PM</font>
<table border>
<tr valign=top>
<td bgcolor=white>
<div align=center><font size=1 face="sans-serif">Please respond to<br>
coin-discuss</font></div></table>
<br>
<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">&lt;coin-discuss@www-124.southbury.usf.ibm.com&gt;</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-discuss] Row bounds
in OsiGLPK and MIP hot starts-Thanks</font></table>
<br>
<table>
<tr valign=top>
<td>
<td></table>
<br></table>
<br>
<br>
<br><font size=2><tt>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp;Prof. Brady Hunsaker,<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
Thanks for the replay and suggestions. &nbsp;Your second option sounds<br>
better to me, and I think I will try that. &nbsp;May be I can use #ifdef<br>
USE_COIN_XXX to keep the solver flexibility.<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
I know how to set an initial IP solution in CPLEX using callable<br>
library, but I am new in GLPK and I did not find how to do it in GLPK.
If<br>
you can give some clues, I would be very happy.<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
Thanks again,<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
Eduardo.<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
Prof. Ted Ralphs,<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
It is good to know we are going to have a new MIP solver in the<br>
open-source world. And probably still able to adapt itself to<br>
branch-and-price. <br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
Congratulations,<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
Eduardo. <br>
<br>
 <br>
<br>
&gt; -----Original Message-----<br>
&gt; From: coin-discuss-admin@www-124.ibm.com <br>
&gt; [mailto:coin-discuss-admin@www-124.ibm.com] On Behalf Of <br>
&gt; Brady Hunsaker<br>
&gt; Sent: Tuesday, May 04, 2004 12:03 PM<br>
&gt; To: coin-discuss@oss.software.ibm.com<br>
&gt; Subject: Re: [Coin-discuss] Row bounds in OsiGLPK and MIP hot starts<br>
&gt; <br>
&gt; <br>
&gt; On Tue, 2004-05-04 at 14:34, Eduardo wrote:<br>
&gt; &gt; Dear COIN Team,<br>
&gt; &gt; <br>
&gt; &gt; &nbsp;<br>
&gt; &gt; <br>
&gt; &gt; I am using CPLEX and GLPK(4-3) solvers &nbsp;under OSI. &nbsp;In
my <br>
&gt; algorithm, I <br>
&gt; &gt; need to solve several slight different MIP problems many times.
&nbsp;I <br>
&gt; &gt; still have some problems (probably in my code) but one of them
is <br>
&gt; &gt; caused when I modify the bounds using OsiGlpk. &nbsp;For example,
the <br>
&gt; &gt; method OsiGlpkSolverInterface::setRowUpper should set a row upper
<br>
&gt; &gt; bound. &nbsp;However, it is actually setting the lower bound.
&nbsp;<br>
&gt; This is happening because this<br>
&gt; &gt; method is just a copy of OsiGlpkSolverInterface::setRowLower.
&nbsp; <br>
&gt; &gt; <br>
&gt; <br>
&gt; Well, that's an embarrassing &quot;bug&quot;! &nbsp;I will correct
OsiGlpk <br>
&gt; this evening and post an email when I've committed the <br>
&gt; change. &nbsp;Eduardo, if you know of any other specific problems,
<br>
&gt; please let me know.<br>
&gt; <br>
&gt; &gt; <br>
&gt; &gt; Another thing I want to do is start the MIP solvers (via <br>
&gt; OSI) from a <br>
&gt; &gt; heuristic integer solution I have. &nbsp;Could you tell me the
<br>
&gt; better way <br>
&gt; &gt; to do that?<br>
&gt; &gt; <br>
&gt; <br>
&gt; At present OSI is really oriented towards LP solvers. &nbsp;I do <br>
&gt; not believe there is a way to specify feasible integer <br>
&gt; solutions (or even objective<br>
&gt; values) through OSI. &nbsp;I've heard that the next generation of
<br>
&gt; OSI will be more useful with MIP solvers, however. &nbsp;Could <br>
&gt; someone with more knowledge say whether this feature is <br>
&gt; expected to be present? &nbsp;I'd also appreciate an estimate of <br>
&gt; when the new OSI will be rolled out. &nbsp;(It will help me decide
<br>
&gt; how much effort to invest in improving OsiGlpk in the<br>
&gt; meantime.)<br>
&gt; <br>
&gt; In the meantime, Eduardo, you have at least two choices:<br>
&gt; <br>
&gt; 1. Investigate COIN/SBB (Simple Branch-and-Bound), which may <br>
&gt; have the features you are looking for and can be run with CLP <br>
&gt; or DyLP (I think) as underlying LP solver.<br>
&gt; <br>
&gt; 2. Use calls directly to the MIP solver's callable library <br>
&gt; for that part of your code. &nbsp;This obviously loses the <br>
&gt; flexibility of OSI, but only for a small part of the code. &nbsp;<br>
&gt; To do this, you need to access a solver-specific pointer to <br>
&gt; the model (CPLEX also has an environment pointer), which is <br>
&gt; present in OsiGlpk as getModelPtr and in OsiCpx as getLpPtr <br>
&gt; and getEnvironmentPtr. &nbsp;These are not present in the base <br>
&gt; class OsiSolverInterface, however, so if you work with <br>
&gt; OsiSolverInterface (as you should), then you'll have to do a <br>
&gt; cast to class OsiXxxSolverInterface in order to call those <br>
&gt; methods. &nbsp;Once you have the pointers, you can use the usual <br>
&gt; callable libraries. &nbsp;If you need help sorting the details <br>
&gt; out, feel free to ask.<br>
&gt; <br>
&gt; Brady<br>
&gt; <br>
&gt; -- <br>
&gt; Brady Hunsaker<br>
&gt; Assistant Professor<br>
&gt; Industrial Engineering<br>
&gt; University of Pittsburgh<br>
&gt; http://www.engr.pitt.edu/hunsaker/<br>
&gt; <br>
&gt; <br>
&gt; _______________________________________________<br>
&gt; Coin-discuss mailing list<br>
&gt; Coin-discuss@www-124.ibm.com <br>
&gt; http://www-124.ibm.com/developerworks/oss/mailman/listinfo/coi<br>
n-discuss<br>
<br>
_______________________________________________<br>
Coin-discuss mailing list<br>
Coin-discuss@www-124.ibm.com<br>
http://www-124.ibm.com/developerworks/oss/mailman/listinfo/coin-discuss<br>
</tt></font>
<br>