[SciPy-User] Lagrange Multipliers in optimize.slsqp

Skipper Seabold jsseabold at gmail.com
Fri Feb 26 10:35:59 EST 2010


On Fri, Feb 26, 2010 at 8:55 AM,  <josef.pktd at gmail.com> wrote:
> On Thu, Feb 25, 2010 at 11:08 PM, Skipper Seabold <jsseabold at gmail.com> wrote:
>> On Thu, Feb 25, 2010 at 8:17 PM, Guilherme P. de Freitas
>> <guilherme at gpfreitas.com> wrote:
>>> Hi all,
>>>
>>> Would it be possible for optimize.slsqp to return the Lagrange
>>> multipliers of the constraints? I don't know Fortran, but it seems
>>> that they are available in the original Fortran code:
>>>
>>> http://projects.scipy.org/scipy/browser/trunk/scipy/optimize/slsqp/slsqp_optmz.f#L581
>>
>> That looks like the constraint of the the lsq subroutine part of
>> sequential least squares algorithm.
>>
>> http://projects.scipy.org/scipy/browser/trunk/scipy/optimize/slsqp/slsqp_optmz.f#L164
>
>
> here is the workspace `w` description of the main slsqp routine
>
> http://projects.scipy.org/scipy/browser/trunk/scipy/optimize/slsqp/slsqp_optmz.f#L144
>
> w is available in python, but non of the content of it is used in python
>
> http://projects.scipy.org/scipy/browser/trunk/scipy/optimize/slsqp.py#L345
>
> So, correctly extracting the slices from the workspace w should be
> possible to get the Lagrange multipliers that were used.
>

Ah, this should be enough then to return the multipliers.  See if
it gives what you'd expect?  Then you can file an enhancement ticket
if you want the multipliers back.

Index: slsqp.py
===================================================================
--- slsqp.py    (revision 6242)
+++ slsqp.py    (working copy)
@@ -371,5 +371,6 @@
         return [list(x),
                 float(fx),
                 int(majiter),
-                int(mode),
+                list(w[:m]),
+                int(mode),
                 exit_modes[int(mode)] ]

Skipper



More information about the SciPy-User mailing list