<div dir="ltr">I am not sure if I am doing something wrong, but I have tried that, as well as solver.setIntParam(OsiMaxNumIterationHotStart, 999999); it does not help. When I query solver.getIterationCount(), it is 154. <div><br></div><div>The last time I glanced at this (though I could very well be mistaken), I believe I saw that fastDual or whileIterating encountered some convergence issue (in ClpSimplexDual). </div><div><br></div><div>There may be other parameters that I should try, but I am not sure which ones; I apologize if this has been asked and answered before.<br></div></div><br><div class="gmail_quote"><div dir="ltr">On Thu, Jul 6, 2017 at 9:19 AM John Forrest <<a href="mailto:john.forrest@fastercoin.com">john.forrest@fastercoin.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
  
    
  
  <div text="#000000" bgcolor="#FFFFFF">
    <div class="m_-5185949613688395110moz-cite-prefix">solver.getModelPtr()->setIntParam(ClpMaxNumIterationHotStart,
      999999);</div></div><div text="#000000" bgcolor="#FFFFFF"><div class="m_-5185949613688395110moz-cite-prefix"><br>
      <br>
      <br>
      On 03/07/17 20:56, Aleksandr M. Kazachkov wrote:<br>
    </div></div><div text="#000000" bgcolor="#FFFFFF"><blockquote type="cite">
      
      <div dir="ltr">Hi everyone,
        <div><br>
        </div>
        <div>I am working with the LP relaxation of the attached
          problem, which is some variant on the MIPLIB v3 instance
          arki001 (after a few modifications), and I have run into a
          possible issue with hot start, which I am using to check
          strong branching candidates.<br>
        </div>
        <div><br>
        </div>
        <div>After changing the upper bound on variable 877 from 1 to 0,
          and calling "solveFromHotStart", the solver status is not
          optimal (isIterationLimitReached returns true). However, it
          seems to me that neither the iteration limit nor time limit is
          reached (looking at the source code, I see those are not the
          only two reasons for that status). If instead I solve the
          subproblem with resolve, an optimal solution is found.</div>
        <div><br>
        </div>
        <div>Is this a bug? Or is it a case of numerical issues with the
          instance? If it is the latter, is the following workaround the
          right approach? I unmarkHotStart, call resolve to get the
          optimal solution to the subproblem, change the bounds back to
          their original values, resolve, markHotStart again, and then
          continue.</div>
        <div><br>
        </div>
        My setup: Clp version 1.16 on a Fedora machine. The compilation
        options are: enable_debug=yes, enable_gnu_packages=yes, with
        blas and lapack.
        <div><br>
        </div>
        <div>I would appreciate any advice. Thank you!</div>
        <div>Alex</div>
        <div><br>
        </div>
        <div>P.S. Here is some test code, where solver is an instance of
          OsiClpSolverInterface.</div>
        <div><br>
        </div>
        <div>
          <p><span>  </span><span>// Initial solve</span></p>
          <p><span>  solver.initialSolve();</span></p>
          <p><span><br>
            </span></p>
        </div>
        <div>
          <p><span>  </span><span>// Down branch on 877</span></p>
          <p><span>  solver.enableFactorization();</span><span> </span><span>//
              Is this recommended? I may have run into an issue some
              time ago without factorization when doing hot starting...
              but I cannot recall for sure. It should not affect this
              example.</span></p>
          <p><span>  solver.markHotStart();</span></p>
          <p><span></span><br>
          </p>
          <p><span>  solver.setColUpper(</span><span>877</span><span>,</span><span>0</span><span>);</span></p>
          <p><span>  solver.solveFromHotStart();</span></p>
          <p><span>  </span><span>if</span><span>
              (solver.isProvenOptimal()) {</span></p>
          <p><span>    printf(</span><span>"Optimal. Objective: </span><span>%e</span><span>.</span><span>\n</span><span>"</span><span>,
              solver.getObjValue());</span></p>
          <p><span>  } </span><span>else</span><span> </span><span>if</span><span>
              (solver.isIterationLimitReached()) {</span></p>
          <p><span>    printf(</span><span>"Iteration limit reached.</span><span>\n</span><span>"</span><span>);</span></p>
          <p><span>  } </span><span>else</span><span> {</span></p>
          <p><span>    printf(</span><span>"Something else happened.</span><span>\n</span><span>"</span><span>);</span></p>
          <p>
          </p>
          <p><span>  }</span></p>
          <p><span><br>
            </span></p>
          <p><span>  solver.unmarkHotStart();</span></p>
          <p><span>  solver.disableFactorization();</span></p>
          <div><span>
              <p><span>  </span></p>
              <p><span>  solver.resolve();</span></p>
              <p><span>  </span><span>if</span><span>
                  (solver.isProvenOptimal()) {</span></p>
              <p><span>    printf(</span><span>"Resolve optimal.
                  Objective: </span><span>%e</span><span>.</span><span>\n</span><span>"</span><span>,
                  solver.getObjValue());</span></p>
              <p><span>  } </span><span>else</span><span> </span><span>if</span><span>
                  (solver.isIterationLimitReached()) {</span></p>
              <p><span>    printf(</span><span>"Iteration limit reached.</span><span>\n</span><span>"</span><span>);</span></p>
              <p><span>  } </span><span>else</span><span> {</span></p>
              <p><span>    printf(</span><span>"Something else happened.</span><span>\n</span><span>"</span><span>);</span></p>
              <p><span>  }</span></p>
            </span></div>
        </div>
      </div>
      <br>
      <fieldset class="m_-5185949613688395110mimeAttachmentHeader"></fieldset>
      <br>
      </blockquote></div><div text="#000000" bgcolor="#FFFFFF"><blockquote type="cite"><pre>_______________________________________________
Clp mailing list
<a class="m_-5185949613688395110moz-txt-link-abbreviated" href="mailto:Clp@list.coin-or.org" target="_blank">Clp@list.coin-or.org</a>
<a class="m_-5185949613688395110moz-txt-link-freetext" href="https://urldefense.proofpoint.com/v2/url?u=https-3A__list.coin-2Dor.org_mailman_listinfo_clp&d=DwICAg&c=Ngd-ta5yRYsqeUsEDgxhcqsYYY1Xs5ogLxWPA_2Wlc4&r=js2M0T-3OIMIVDvokcKjokJbk0F8QOCd0mT4FsVFE88&m=PsP0iwnuDDXSddrao4I1UKJiR-6TBM5qBqPs79oW4x8&s=UkQlK1CGWfXEb6sK-sjBxguVkV4JzbpAdIbn5bBeSDI&e=" target="_blank">https://urldefense.proofpoint.com/v2/url?u=https-3A__list.coin-2Dor.org_mailman_listinfo_clp&d=DwICAg&c=Ngd-ta5yRYsqeUsEDgxhcqsYYY1Xs5ogLxWPA_2Wlc4&r=js2M0T-3OIMIVDvokcKjokJbk0F8QOCd0mT4FsVFE88&m=PsP0iwnuDDXSddrao4I1UKJiR-6TBM5qBqPs79oW4x8&s=UkQlK1CGWfXEb6sK-sjBxguVkV4JzbpAdIbn5bBeSDI&e=</a> 
</pre>
    </blockquote>
    <p><br>
    </p>
  </div>

_______________________________________________<br>
Clp mailing list<br>
<a href="mailto:Clp@list.coin-or.org" target="_blank">Clp@list.coin-or.org</a><br>
<a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__list.coin-2Dor.org_mailman_listinfo_clp&d=DwICAg&c=Ngd-ta5yRYsqeUsEDgxhcqsYYY1Xs5ogLxWPA_2Wlc4&r=S0ppFBpGWf1xOsmm_XdTdA&m=E91wOUn5w1klNgvMg0s1w6afI9Zq_wkkj1Y2trMoyGA&s=GveWmkAjgV-E3EugCmLBGH6Tu0wQsx178LjlsxYq0HE&e=" rel="noreferrer" target="_blank">https://urldefense.proofpoint.com/v2/url?u=https-3A__list.coin-2Dor.org_mailman_listinfo_clp&d=DwICAg&c=Ngd-ta5yRYsqeUsEDgxhcqsYYY1Xs5ogLxWPA_2Wlc4&r=S0ppFBpGWf1xOsmm_XdTdA&m=E91wOUn5w1klNgvMg0s1w6afI9Zq_wkkj1Y2trMoyGA&s=GveWmkAjgV-E3EugCmLBGH6Tu0wQsx178LjlsxYq0HE&e=</a><br>
</blockquote></div>