Implemented Tabu Search (algorithm 14)
Tested by printing tabuList, got unknown errors about quality().
Instead of shuffling the elements in tabuList, we simply just remove
the first element. Instead of re-computing the quality of r over and
over, we made variables. We also got rid of an extra sample that was
not needed.
Changed tabuList to be a queue instead of a list. Also made our
algorithm look more like what Sean has in the book.
We changed numGradientSamples from a field to an optional parameter to
maximize().
Found and fixed a bug in our code. In one of the if statements, we set
solution = r, but we never set solutionQuality = rQuality. We fixed
this and now Tabu Search runs as expected.
Wrote a simple smoke test for Tabu Search.
Reverted ExperimentRunner back to my original version so we don't end up
with a bunch of merge conflicts on that file.
Merge branch 'Algorithm14_TabuSearch'