]> git.donarmstrong.com Git - lilypond.git/blob - lily/linear-programming.cc
release: 1.0.8
[lilypond.git] / lily / linear-programming.cc
1 /*   
2   linear-programming.cc --  implement 
3   
4   source file of the GNU LilyPond music typesetter
5   
6   (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7   
8  */
9
10 #if 0
11 #include "linear-programming.hh"
12
13 Linear_programming::Linear_programming (int n)
14   : cost_vec_ (n)
15 {
16   dim_ = n;  
17 }
18 int
19 Linear_programming::dim () const
20 {
21   return dim_;
22 }
23
24
25 void
26 Linear_programming::add_constraint (Vector c, double r)
27 {
28   assert (c.dim () == cost_vec_);
29   constraints_.push (c);
30   constraint_rhss_.push (r);
31 }
32
33 void
34 Linear_programming::set_cost (Vector c)
35 {
36   assert (dim_ == c.dim ());
37   cost_vec_ = c;
38 }
39
40 void
41 Linear_programming::print () const
42 {
43   DOUT << "cost: " << cost_vec_;
44   for (int i=0; constraints_.size (); i++)
45     {
46       DOUT << constraints_[i] << ". x = " << constraint_rhss_[i];
47     }
48 }
49
50 void
51 Linear_programming::OK () const
52 {
53   assert (constraint_rhss_.size () == constraints_.size ());
54   for (int i=0; constraints_.size (); i++)
55     constraints_[i].dim () == cost_vec_.dim ();
56 }
57
58
59 bool
60 Linear_programming::check_constraints (Vector v) const
61 {
62   bool is_cool = true;
63   assert (v.dim () == dim_);
64   
65   for (int i=0; is_cool && i < v.dim (); i++)
66     is_cool = is_cool && v[i] >= 0;
67   for (int i=0; is_cool && i < constraints_.size (); i++)  
68     is_cool = is_cool && (constraints_[i] * v <= constraint_rhss_[i]);
69
70
71
72   return is_cool;
73 }
74
75 Vector
76 Linear_programming::solve (Vector initial_basic_solution) const
77 {
78   assert (check_constraints (initial_basic_solution));
79   
80   Array<bool> basis; 
81   for (int i=0; i < dim_; i++)
82     basis.push (bool(initial_basic_solution[i]));
83
84   Vector x = initial_basic_solution;
85   Real current_cost = x * cost_vec_;
86   while (iter < MAXITER)
87     {
88       // select pivot
89       
90
91       iter ++;
92     }
93
94
95
96       
97   
98   Array<int> binding, nonbinding;
99   
100   assert (check_constraints (initial));
101   OK ();
102
103   Vector x (initial);
104   Real value (x * cost_vec_):
105   
106   for (int i=0; i < constraints_.size ())
107     nonbinding.push (i);
108
109   while  ()
110     {
111       get_negative_index (
112     }
113   
114 }
115 #endif