<div dir="ltr">Hello.<div><br></div><div>I have an algorithm that generates lp's sequentially in such a way that each lp's optimal solution is feasible - and often near optimal - for the next lp to be generated. As there are typically many lp's generated, it is very desirable to be able to warmstart each lp with the previous one's solution.</div><div><br></div><div>I have been using the setColSolution() function to populate the warm start, and then solving with primal using the initialSolve() function.</div><div><br></div><div>While this usually works well, I've found that with a number of the more numerically challenging problems, it often takes dramatically longer to solve with the warmstart than it does to solve from scratch - even though the values pass gets a near optimal solution almost right away.</div><div><br></div><div>Here is an lp (mps is in IEEE hex format)</div><div><a href="https://1drv.ms/u/s!AuXES_soqYA6gsAR9IBKZSi1Z82KCA?e=y8t6nX">https://1drv.ms/u/s!AuXES_soqYA6gsAR9IBKZSi1Z82KCA?e=y8t6nX</a><br></div><div><br></div><div>and here is a warmstart vector (in binary and in text)</div><div><a href="https://1drv.ms/u/s!AuXES_soqYA6gsAQWp-V8GtrmWVpTw?e=eWNhN4">https://1drv.ms/u/s!AuXES_soqYA6gsAQWp-V8GtrmWVpTw?e=eWNhN4</a><br></div><div><a href="https://1drv.ms/t/s!AuXES_soqYA6gsATvj-8ChVN2fuKXg?e=RdOyIS">https://1drv.ms/t/s!AuXES_soqYA6gsATvj-8ChVN2fuKXg?e=RdOyIS</a><br></div><div><br></div><div>and here is the output log (for the warmstarted version with presolve)</div><div><a href="https://1drv.ms/u/s!AuXES_soqYA6gsASU-UfwVfpXo7U3w?e=7vpbOi">https://1drv.ms/u/s!AuXES_soqYA6gsASU-UfwVfpXo7U3w?e=7vpbOi</a><br></div><div><br></div><div>In this case with the warmstart, both with and without presolve I stopped the run after over an hour without a solution (despite being near optimal from the warmstart after 3 seconds), while from scratch it takes about 2.5 minutes with presolve and 3.3 without.</div><div><br></div><div>These warmstarted solutions are typically not basic, but - while I'm not posting any examples here - I observed the same thing to happen even when I supplied a starting basis.</div><div><br></div><div>It may be that this is hit or miss, as sometimes turning on presolve speeds it up a lot, and sometimes it slows it down a lot, and sometimes there is different behavior for different solve function calls. For example, for this problem and warmstart (in binary and in text)</div><div><a href="https://1drv.ms/u/s!AuXES_soqYA6gsAWWWSp-0iB2IN-jw?e=Aau8Hr">https://1drv.ms/u/s!AuXES_soqYA6gsAWWWSp-0iB2IN-jw?e=Aau8Hr</a><br></div><div><a href="https://1drv.ms/u/s!AuXES_soqYA6gsAUYqgIYROEpGxkXg?e=apXJDa">https://1drv.ms/u/s!AuXES_soqYA6gsAUYqgIYROEpGxkXg?e=apXJDa</a><br></div><div><a href="https://1drv.ms/t/s!AuXES_soqYA6gsAVsr5_oIx85LEuGQ?e=YqV4br">https://1drv.ms/t/s!AuXES_soqYA6gsAVsr5_oIx85LEuGQ?e=YqV4br</a><br></div><div><br></div><div>using the function calls:</div><div><br></div><div>ClpPresolve presolveInfo;<br>                ClpSimplex* presolvedModel = presolveInfo.presolvedModel(model);<br>              presolvedModel->primal(1);<br>         presolveInfo.postsolve(true);<br>         model.primal(1);<br></div><div><br></div><div>I stopped the run after 27000 seconds with no solution, while using initialSolve() and the warmstart as above it took around 4.5 minutes to solve. From scratch it took just under 2 minutes with presolve and just over 1 without.</div><div><br></div><div>Are there any settings that I could use that may assist with this?</div><div><br></div><div>I'm running on Windows 10 and compiling Clp 1.17.6 with Visual Studio 2019.</div><div><br></div><div>Thanks very much!</div><div><br></div><div>Mark Zuckerberg</div></div>