I am trying to use augmented_lagrangian_method() to minimize
the function
h(x,y,z,w) := x*log(x) + y*log(y) + z*log(z) + w*log(w)
where x,y,z,w > 0, subject to the constraints x+y+z+w=1 and
3x + 10y = 2.
This is a strictly convex function over a convex domain, so
there is a unique global minimum, and in this case it is
approximately
[x=.2407,y=.1277,z=.3157,w=.3157]
The problem is that augmented_lagrangian_method() cannot
seem to find this point.
Specifically, I do
augmented_lagrangian_method(h(x,y,z,w), [x,y,z,w],
[x+y+z+w-1,3*x+10*y-2],
[0.45,0.25,0.65,0.2], iprint = [-1,0], niter = 30);
and I get
[[x=.242568,y=.126157,z=.321001,w=.321001],
%lambda=[.114847,.114847|]
which is rather far from the correct answer.
And augmented_lagrangian converges to this same wrong answer
no matter what initial point I use.
Am I doing something wrong here?
(I found the correct answer I cited above using Mathematica
5, with little trouble.)
Kostas