Correct the number of holes.
Add fields to allow use with whistle calculator.
Report when system being optimized is underconstrained.
Define constraints more appropriate when number of holes is less than six.
More robust validation check, cope with empty field.
Replace DefaultBoreSectionCalculator with SimpleBoreSectionCalculator.
There is a divide-by-almost-zero issue that has been fixed in SimpleBoreSectionCalculator.
DefaultBoreSectionCalculator is deprecated and no longer used.
Relax permitted inaccuracy so that this test passes.
Tests pass with BOBYQA optimizer, but not CMAES.
Relax permitted inaccuracy so that this test passes.
Implement velocity-based model for nominal whistle playing frequency instead of reactance-based.
Isolate InstrumentTuner function for predicting nominal playing frequency,
generalize CentDeviationEvaluator to use this function from any InstrumentTuner,
and use this for optimization in WhistleStudyModel.
Although WhistleEvaluator is enhanced to use raw reactance or velocity differences,
it is no longer used: CentDeviationTuner produces faster optimization behaviour,
even though it requires an additional subsearch embedded in predictedFrequency.
Implement optimization test for NafStudyModel using PerturbedInstrumentOptimization.
Change constraint values in NafStudyModel so they are consistent between optimizers.