<div><div>Hi,<br>&nbsp;</div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">So, as you see, params are not described; especially I&#39;m interested in old_fval and old_old_fval.
<br>So, there was a letter from NLPy developer about an alternative (link to an article was provided), also, Matthieu proposed using one of his own solvers.<br>I think the importance of the auxiliary solver is very high and should be done in 1st order. My opinion about next thing to do is using an appropriate solver from Matthieu&#39;s package. However, Matthieu&#39;s syntax differs too much from openopt one. I think first of all there should be an openopt binding to Matthieu&#39;s package, that will allow for oo users to use same syntax:
<br>prob = NLP(...)<br>r = prob.solve()<br>I would implement the binding by myself, but I miss well-described API documentation of Matthieu&#39;s code. First of all I&#39;m interested<br>1) what solvers does it contain?</blockquote>
<div><br><br>I put a small description here : <a href="https://projects.scipy.org/scipy/scikits/wiki/Optimization">https://projects.scipy.org/scipy/scikits/wiki/Optimization</a> (still in progress).<br>&nbsp;</div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
2) how xtol, funtol, contol etc can be passed to the solvers?</blockquote><div><br><br>Each of these parameters are either step information, line search information or criterion information. Each parameter must be given to the corresponding object that will use it (I didn&#39;t want to centralize everything as some modules need pre-computation before they can be used in the optimizer, like the Fibonacci section search).
<br>&nbsp;</div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">then, secondary (it can wait, maybe default parameters would be enough for now)
<br>3) which params can I modify (like type of step (Armijo|Powell|etc), etc)</blockquote><div><br><br>You can modify everything. The goal is to provide bricks that you can build together so that the optimizer makes what you need. If you want to provide new modules, here are some &quot;rules&quot; :
<br>- the function should be provided as an object that defines the correct methods, like __call__, gradient or hessian if needed (the case of approximation of the gradient as a finite-element one should be programmed with a class from which the function derives, but we can speak of this in another mail if you want details on this one)
<br>- a criterion module takes only one argument which is the current state of the optimizer<br>- a step module takes three arguments : the function being optimized, the point where to search for a step and the state of the optimizer
<br>- a line search module takes a four arguments : the point, the computed step, the function and the state (I suppose this should be refactored to be more consistent with the step module...)<br>- the core optimizer that uses these mdoules and dispatches the data accordingly
<br>&nbsp;</div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">BTW ralg is also missing a good line-search optimizer. It requires the one that finds solutions with slope angle &gt; pi/2. But it can wait, it has one quite good and problem with lincher is more actual.
</blockquote><div><br><br>If you have an algorithm that can do this, you only have to program it and everyone will be able to use it with the other modules.<br>&nbsp;</div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
So I think the next GSoC schedule step should be connection of 1-2 Matthieu&#39;s solvers (that take into account slope angle, like strong Wolfe conditions do) to native openopt syntax.</blockquote><div><br><br>If I understand this correctly, it is wrapping some usual combinations together so that people use them without knowing, like for the brent functiona nd the Brent class ? It should be easy by overriding the optimizer constructor and by adding a solve method that just calls optimize() (in this case, I&#39;ll probably modify optimize() so that it does not return something, and the state of the optimizer would provide the answer).
<br>&nbsp;</div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Are you agree?<br><br>if yes, my question to Matthieu: can you provide a description of some appropriate solvers from your package? and/or an example of usage?
</blockquote></div><br>If you need more details, ask specific questions, I&#39;ll gladly answer them (and add them to the wiki)<br><br>Matthieu<br>