On Fri, Jan 28, 2011 at 11:55 AM, m...@apollinemike.com
<m...@apollinemike.com> wrote:
>> Despite the joke, this is a semi-serious suggestion that I've been
>> hoping that somebody might be interested in for years.  There's a
>> bunch of options that we can enable or disable to change the
>> amount of processing power; it would be really nice if one (or
>> more) people seriously looked into this, and provided an easy way
>> to change between the "optimization" levels.
>
>
> I completely agree.  I think that the beam collision engraver > (if it makes 
> it into lilypond) is the prime example of
> something that could be included or left out with
> optimization flags.  There can even be multiple collision
> engravers that perform the same task but provide different
> levels of optimization.

In the case of the beam scoring specifically, I disagree: there are
many ways to search more cleverly in the problem space.

For beams specifically, how about this one:

choose large region size
calculate cheapest of the scoring functions for all configurations
put configurations in a min-heap

  while (true) {
   take minimum score configuration from heap
   if conf has passed all scoring functions
     break // found optimum
   add another scoring function to configuration // *
   insert result in heap
 }

for the common cases, this will skip computations for many of the more
extreme cases. At //* , there is still some option of further
optimization by doing an intelligent choice between what to run next.

The same approach should work well for slurs as well.

If I find time one of these days (may be next week), I'll try to implement this.

-- 
Han-Wen Nienhuys - han...@xs4all.nl - http://www.xs4all.nl/~hanwen

_______________________________________________
lilypond-devel mailing list
lilypond-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-devel

Reply via email to