Question on augmented_lagrangian_method



Kostas,

I have made a couple of minor changes which help augmented_lagrangian_method
find a more accurate solution. You can get the new version here:
http://maxima.cvs.sourceforge.net/maxima/maxima/share/contrib/augmented_lagrangian.mac

With that new version I get the following:

h(x,y,z,w) := x*log(x) + y*log(y) + z*log(z) + w*log(w);
augmented_lagrangian_method(h(x,y,z,w), [x,y,z,w], [x+y+z+w-1,3*x+10*y-2], [0.4
5,0.25,0.65,0.2], iprint = [-1,0], niter = 30);
 => [[x = 0.240692382960439, y = .1277922851364399,
z = .3157576661324954, w = .3157576661324701],
%lambda = [.2847203467130062, .2847203467130062]]
[x + y + z + w, 3*x + 10*y], first(%);
 => [1.000000000361844, 2.000000000245715]

So that's great. However, the method is not very robust;
probably you can pose other problems for which it fails.
There are doubtless much stronger methods. About ipopt,
that could be used via a foreign-function interface. I believe
the project called CFFI is the most widely supported of such
interfaces. CFFI doesn't work with GCL, unfortunately. But
maybe it is not too early for Maxima to start working on
libraries in C/C++ and/or Fortran via CFFI for other Lisps.

HTH
Robert