]> git.donarmstrong.com Git - lilypond.git/blobdiff - src/qlpsolve.cc
partial: 0.0.39-1.jcn
[lilypond.git] / src / qlpsolve.cc
index 8482bfd8752616df03c35f855569e6de5a623620..5738be2f3b0223c9236af8e481e72685f2f0bc17 100644 (file)
@@ -34,7 +34,7 @@ Active_constraints::OK()
     Array<int> allcons;
 
     for (int i=0; i < opt->cons.size(); i++)
-       allcons.add(0);
+       allcons.push(0);
     for (int i=0; i < active.size(); i++) {
        int j = active[i];
        allcons[j]++;
@@ -61,7 +61,7 @@ Active_constraints::add(int k)
 {
     // add indices
     int cidx=inactive[k];
-    active.add(cidx);
+    active.push(cidx);
 
     inactive.swap(k,inactive.size()-1);
     inactive.pop();
@@ -98,7 +98,7 @@ Active_constraints::drop(int k)
     int q=active.size()-1;
 
         // drop indices
-    inactive.add(active[k]);
+    inactive.push(active[k]);
     active.swap(k,q);
     A.swap_rows(k,q);
     active.pop();
@@ -128,12 +128,12 @@ Active_constraints::Active_constraints(Ineq_constrained_qp const *op)
            opt(op)
 {
     for (int i=0; i < op->cons.size(); i++)
-       inactive.add(i);
+       inactive.push(i);
     Choleski_decomposition chol(op->quad);
     H=chol.inverse();
 }
 
-/* Find the optimum which is in the planes generated by the active
+/** Find the optimum which is in the planes generated by the active
     constraints.        
     */
 Vector
@@ -142,7 +142,7 @@ Active_constraints::find_active_optimum(Vector g)
     return H*g;
 }
 
-/****************************************************************/
+/* *************************************************************** */
 
 int
 min_elt_index(Vector v)
@@ -158,7 +158,20 @@ min_elt_index(Vector v)
     return idx;
 }
 
-///the numerical solving
+
+/**the numerical solving. Mordecai Avriel, Nonlinear Programming: analysis and methods (1976)
+    Prentice Hall.
+
+    Section 13.3
+
+    This is a "projected gradient" algorithm. Starting from a point x
+    the next point is found in a direction determined by projecting
+    the gradient onto the active constraints.  (well, not really the
+    gradient. The optimal solution obeying the active constraints is
+    tried. This is why H = Q^-1 in initialisation) )
+
+
+    */
 Vector
 Ineq_constrained_qp::solve(Vector start) const 
 {    
@@ -170,8 +183,9 @@ Ineq_constrained_qp::solve(Vector start) const
     
     Vector x(start);
     Vector gradient=quad*x+lin;
-
-
+//    Real fvalue = x*quad*x/2 + lin*x + const_term;
+// it's no use.
+    
     Vector last_gradient(gradient);
     int iterations=0;
     
@@ -248,17 +262,4 @@ Ineq_constrained_qp::solve(Vector start) const
     return x;
 } 
 
-/** Mordecai Avriel, Nonlinear Programming: analysis and methods (1976)
-    Prentice Hall.
-
-    Section 13.3
-
-    This is a "projected gradient" algorithm. Starting from a point x
-    the next point is found in a direction determined by projecting
-    the gradient onto the active constraints.  (well, not really the
-    gradient. The optimal solution obeying the active constraints is
-    tried. This is why H = Q^-1 in initialisation) )
-
-
-    */