The simplest version where you just choose the single change that produces the best score isn't quite good enough for my purposes. I modified that slightly to run that to completion, then switch to choosing the two changes that produce the best score until that can't improve anymore either, which works a lot better. Fortunately my membership list is small enough that this is still computationally feasible.