From: fred Date: Mon, 14 Oct 1996 20:11:41 +0000 (+0000) Subject: lilypond-0.0.9 X-Git-Tag: release/1.5.59~7073 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=4613660d32df8bb874cb82d3ae53f62a24d9cb58;p=lilypond.git lilypond-0.0.9 --- diff --git a/hdr/qlp.hh b/hdr/qlp.hh new file mode 100644 index 0000000000..b539fe6b86 --- /dev/null +++ b/hdr/qlp.hh @@ -0,0 +1,89 @@ +#ifndef QLP_HH +#define QLP_HH + +#include "matrix.hh" + +/// inequality constrained quadratic program +class Ineq_constrained_qp { + friend class Active_constraints; + + svec cons; + svec consrhs; +public: + Matrix quad; + Vector lin; + Real const_term; + + /// + void assert_solution(Vector sol) const; + /** + use a KKT method to assert optimality of sol + */ + /// solve the problem using a projected gradient method + Vector solve(Vector start) const; + + int dim() const{ + return lin.dim(); + } + /** return the number of variables in the problem */ + /// + void add_inequality_cons(Vector c, double r); + /** + add a constraint + + + c*vars >= r + + PRE + c.dim() == dim(); + + */ + /// + Ineq_constrained_qp(int novars); + /** set up matrices to go with the problem. */ + + Real eval(Vector v); + /** + evaluate the quadratic function for input #v# + */ + + void eliminate_var(int idx, Real value); + void OK()const; + void print() const; + +}; + +/// Quadratic programming with mixed linear constraints +class Mixed_qp :public Ineq_constrained_qp { + svec eq_cons; + svec eq_consrhs; +public: + Mixed_qp(int n); + void OK() const; + void print() const; + + Vector solve(Vector start) const; + void add_fixed_var(int i , Real value); + + /// + void add_equality_cons(Vector c, double r); + /** + add a constraint, + + c*vars == r + + PRE + c.dim()==dim(); + */ + +}; +/** + problem definition of a quadratic optimisation problem with linear + inequality and equality constraints + + + x^T QUAD x /2 + b^T x +*/ + + +#endif