<div dir="ltr"><div>Hi Stefan,</div><div><br></div>That worked - thanks a lot! In the end I used the StreamJournal class as follows:<div><br></div><div><span style="font-size:12.8000001907349px">ipopt</span> = new Ipopt::IpoptApplication(false);<br></div><div><div>SmartPtr&lt;StreamJournal&gt; jrnl = new StreamJournal(&quot;console&quot;, J_ITERSUMMARY);<br></div><div>jrnl-&gt;SetOutputStream(&amp;casadi::csout);</div><div>jrnl-&gt;SetPrintLevel(J_DBG, J_NONE);</div><div>ipopt-&gt;Jnlst()-&gt;AddJournal(jrnl);</div></div><div><br></div><div>where casadi::csout is a CasADi abstraction to std::cout.</div><div><br></div><div>I hope that&#39;s legit usage.</div><div><br></div><div>Best regards,</div><div>Joel</div><div><br></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">2015-06-25 13:04 GMT+02:00 Stefan Vigerske <span dir="ltr">&lt;<a href="mailto:stefan@math.hu-berlin.de" target="_blank">stefan@math.hu-berlin.de</a>&gt;</span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<br>
you can pass your own output handler (called a Journal) to Ipopt and disable the default Journal.<br>
So, for example<br>
<br>
ipopt = new IpoptApplication(false);<br>
SmartPtr&lt;Journal&gt; jrnl = new MyJournal();<br>
jrnl-&gt;SetPrintLevel(J_DBG, J_NONE);<br>
ipopt-&gt;Jnlst()-&gt;AddJournal(jrnl);<br>
<br>
And the MyJournal should be derived from the Ipopt::Journal class. In there, you can redirect to mexPrintf.<br>
<br>
Hope that helps,<br>
Stefan<span class=""><br>
<br>
<br>
On 06/25/2015 11:39 AM, Joel Andersson wrote:<br>
</span><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">
Hi,<br>
<br>
I&#39;m working on completing the addition of a MATLAB interface to CasADi, but<br>
I&#39;m struggling finding a way to send the text output from IPOPT to MATLAB&#39;s<br>
mexPrintf. Is it possible to somehow set a user-defined function for<br>
printing log messages? Or, alternatively, to have IPOPT write output to<br>
C++&#39;s iostream (i.e. std::cout and std::cerr) instead of C&#39;s printf (i.e.<br>
stdout and stderr)? The former is much easier to redirect to a custom<br>
function.<br>
<br>
In general, since Ipopt is a C++ code, I would expect iostream to be used<br>
for printing, but I guess it uses printf because of the linear solvers<br>
underneath.<br>
<br>
If anyone is interested, you can find an example of how to solve an NLP<br>
using IPOPT with CasADi-MATLAB here:<br>
<a href="https://github.com/casadi/casadi/blob/develop/test/matlab/rosenbrock.m" rel="noreferrer" target="_blank">https://github.com/casadi/casadi/blob/develop/test/matlab/rosenbrock.m</a>.<br>
This is complete with efficient calculation of sparse Hessians and<br>
Jacobians but unless you start MATLAB from the command line without the<br>
GUI, you&#39;ll lose the IPOPT text output due to the above issue. I&#39;ll get<br>
back to this mailing list as soon as we make a stable release.<br>
<br>
Best regards,<br>
Joel<br>
<br>
<br>
<br>
<br>
<br>
<br></span>
_______________________________________________<br>
Ipopt mailing list<br>
<a href="mailto:Ipopt@list.coin-or.org" target="_blank">Ipopt@list.coin-or.org</a><br>
<a href="http://list.coin-or.org/mailman/listinfo/ipopt" rel="noreferrer" target="_blank">http://list.coin-or.org/mailman/listinfo/ipopt</a><br>
<br>
</blockquote>
<br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div>-- <br>Joel Andersson, PhD<br>Ptge. Busquets 11-13, atico 3<br>E-08940 Cornella de Llobregat (Barcelona), Spain<br>Home: +34-93-6034011<br>Mobile: <span style="font-size:12.8000001907349px">+34-63-4408800 (in</span><span style="font-size:12.8000001907349px"> Sweden also </span><span style="font-size:12.8000001907349px">+46-707-360512)</span></div></div></div></div></div></div></div>
</div>