# HG changeset patch # User John W. Eaton # Date 1225435975 -3600 # Node ID 57c9b3f2b82212325c5c81a9303a28aea5b15da2 # Parent 2415586d0f5a6f3c964de39ae5b43ad26be787bb __qp__.cc fix diff --git a/src/ChangeLog b/src/ChangeLog --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2008-10-17 John W. Eaton + + * DLD-FUNCTIONS/__qp__.cc (qp): Undo part of change from + 2007-09-04 (compute Y at each iteration). + 2008-10-02 John W. Eaton * pt-arg-list.cc (tree_argument_list::convert_to_const_vector): diff --git a/src/DLD-FUNCTIONS/__qp__.cc b/src/DLD-FUNCTIONS/__qp__.cc --- a/src/DLD-FUNCTIONS/__qp__.cc +++ b/src/DLD-FUNCTIONS/__qp__.cc @@ -233,6 +233,9 @@ // FIXME -- still remain to handle the case of // non-full rank active set matrix. + // Computing the Y matrix (orthogonal to Z) + Y = Aact.pseudo_inverse (); + // Reduced Hessian Matrix Zt = Z.transpose (); Matrix rH = Zt * H * Z; @@ -327,7 +330,6 @@ // Computing the multipliers only for the inequality // constraints that are active. We do NOT compute // multipliers for the equality constraints. - Y = Aact.pseudo_inverse (); Matrix Yt = Y.transpose (); Yt = Yt.extract_n (n_eq, 0, n_act-n_eq, n); lambda_tmp = Yt * (g + H * p);