Neat Algorithms - Harmony Search
harry.me
harry.me
<script type="text/javascript+protovis">
tags, which lets you write code like function(x) x*x
This is actually JavaScript 1.8 (see https://developer.mozilla.org/en/New_in_JavaScript_1.8); Firefox can handle it directly, but Protovis down-compiles it to standard JavaScript for the benefit of other browsers.That design decision made a lot of sense before CoffeeScript existed, since standard JavaScript becomes extremely unwieldy in a Protovis context. I expect to see a lot more Protovis code done in CoffeeScript in the future.
Deleted comment
The short of the algorithm is that it generates a set of random vectors and evaluates the objective for each one. It then stochastically chooses between perturbed components from elements in that set and new random components to build a test vector. If that vector performs better than the worst one in the set, it replaces the worst one.
I'm pretty sure that process doesn't look very similar to jazz improvisation. It's also not nearly as complicated as it's made out to be. I also am a little frustrated that neither of his problems were good fits for an algorithm like this and so I dunno if I can walk away calling this a neat algorithm.
I am super inspired to play with protovis though.