]> git.donarmstrong.com Git - lilypond.git/blobdiff - src/qlp.cc
release: 0.0.30
[lilypond.git] / src / qlp.cc
index 460bd864231b27646bbab9d76cb29ef1ae857f92..1e3e2f67d495cf59dade64ff5ee47ae4beda1571 100644 (file)
@@ -12,15 +12,15 @@ Mixed_qp::add_equality_cons(Vector , double )
 void
 Mixed_qp::add_fixed_var(int i, Real r)
 {
-    eq_cons.add(i);
-    eq_consrhs.add(r);
+    eq_cons.push(i);
+    eq_consrhs.push(r);
 }
 
 void
 Ineq_constrained_qp::add_inequality_cons(Vector c, double r)
 {
-    cons.add(c);
-    consrhs.add(r);
+    cons.push(c);
+    consrhs.push(r);
 }
 
 Ineq_constrained_qp::Ineq_constrained_qp(int novars):
@@ -34,7 +34,7 @@ void
 Ineq_constrained_qp::OK() const
 {
 #ifndef NDEBUG    
-    assert(cons.sz() == consrhs.sz());
+    assert(cons.size() == consrhs.size());
     Matrix Qdif= quad - quad.transposed();
     assert(Qdif.norm()/quad.norm() < EPS);
 #endif    
@@ -52,12 +52,12 @@ Mixed_qp::solve(Vector start) const
     print();
     Ineq_constrained_qp pure(*this);
     
-    for  (int i= eq_cons.sz()-1; i>=0; i--) {
+    for  (int i= eq_cons.size()-1; i>=0; i--) {
        pure.eliminate_var(eq_cons[i], eq_consrhs[i]);
        start.del(eq_cons[i]);
     }
     Vector sol = pure.solve(start);
-    for (int i= 0; i < eq_cons.sz(); i++) {
+    for (int i= 0; i < eq_cons.size(); i++) {
        sol.insert( eq_consrhs[i],eq_cons[i]);
     }
     return sol;
@@ -80,7 +80,7 @@ Ineq_constrained_qp::eliminate_var(int idx, Real value)
     row.del(idx);
     lin +=row ;
 
-   for (int i=0; i < cons.sz(); i++) {
+   for (int i=0; i < cons.size(); i++) {
       consrhs[i] -= cons[i](idx) *value;
       cons[i].del(idx);
    }
@@ -91,12 +91,12 @@ Ineq_constrained_qp::eliminate_var(int idx, Real value)
 void
 Ineq_constrained_qp::assert_solution(Vector sol) const
 {
-    svec<int> binding;
-    for (int i=0; i < cons.sz(); i++) {
+    Array<int> binding;
+    for (int i=0; i < cons.size(); i++) {
        Real R=cons[i] * sol- consrhs[i];
        assert(R> -EPS);
        if (R < EPS)
-           binding.add(i);
+           binding.push(i);
     }
     // KKT check...
     // todo
@@ -109,14 +109,14 @@ Ineq_constrained_qp::print() const
     mtor << "Quad " << quad;
     mtor << "lin " << lin <<"\n"
        << "const " << const_term<<"\n";
-    for (int i=0; i < cons.sz(); i++) {
+    for (int i=0; i < cons.size(); i++) {
        mtor << "constraint["<<i<<"]: " << cons[i] << " >= " << consrhs[i];
        mtor << "\n";
     }
 #endif
 }
 
-/****************/
+/* *************** */
 
 /*
     eliminate appropriate variables, until we have a Ineq_constrained_qp
@@ -137,7 +137,7 @@ Mixed_qp::OK() const
 {
 #ifndef NDEBUG
     Ineq_constrained_qp::OK();
-    assert(eq_consrhs.sz() == eq_cons.sz());
+    assert(eq_consrhs.size() == eq_cons.size());
 #endif    
 }
 
@@ -146,7 +146,7 @@ Mixed_qp::print() const
 {
 #ifndef NPRINT
     Ineq_constrained_qp::print();
-    for (int i=0; i < eq_cons.sz(); i++) {
+    for (int i=0; i < eq_cons.size(); i++) {
        mtor << "eq cons "<<i<<": x["<<eq_cons[i]<<"] == " << eq_consrhs[i]<<"\n";
     }
 #endif