changed tuner to generalize it to optimizing a weighted combination dispersion and dPrime
Temporarily force collect both sets of past data and display it.  It appears that dispersions should be transformed via io transform to appropriately reflect the tightening of distributions at the higher ranges inputs/outputs.  More importantly, dPrime appears to certainly be a candidate of optimizing the flocking factor, but not sure that dispersion should be one of the alternatives...??
Made substantial changes to parameter tuner, and refactored Abstract and Simplest Trainers.
Now in the process of generalizing SimplestLearning with tuning (and integrated flocking/output-error learning) to 4-class analogy training.  Midway in process.
Looks like I got Step1 of the analogy trainer to work, more or less.  Need to double check using "simplestLearning" experiment. - to verify flocking and output error can be controlled in the adaptive process.
Step2 seems to be working now.  That includes the 2nd hidden layer.  Pretty soon I will include the plots for all the processing.
Got steps 3 and 4 working.  Did some experiments with granularity of inter-layer learning epochs/step as well as some brief playing with flocking tuner.  Will need to simplify code/parameter-spec process shortly!
Modified plotting and utilities to plot in both windows and linux.  Have found some discrepancy between OpenJDK and Sun/Oracle version.
Ran Tuned Analogy 4 class experiments using tuners as usual.  Good results for simplest learning, but complex unsatisfactory results for Analogy learning experiments.
Just moved normalization of weight changes due to output error before flocking. on new branch
accidentally reformated all files
Ok, I'm changing things so that flocking can occur for multiple iterations (epochs) after each WeightChange for reducing the Output Error.  This includes the normalization, as well as a (possible) tuning of the flocking learning rate.
Continuing to simplify the code by having all adapting neurons "the same", with parameters specifying the "differences."  Now working on detecting when flocking has converged as much as desired...
Doing ok now.  May want to have additional routine that doesn't recalculate new cluster centers, but does determine the new locations of each example-point relative to the 'original' cluster center.  Need to test these ideas out again!
Now accumulating absolute flocking errors per neuron -- for our measure of 'dispersion.'  Will use this for "stop flocking", tuning, etc.  Also, will probably want to re-institute momentum during gradient descent for flocking.  Also, may want to consider ying-yanging outputError-FlockingError.  I.E. this would be a back and forth between sopBP and Flocking to reach the same Output Error but with dispersion minimized.  Specifically, on one epoch just sopBP would set a new OutputError point.  Then one epoch of flocking would improve dispersion but also would "hurt/loss" OutputError.  So sopBP would be appropriately tuned and applied to attempt to make-up for the outputError 'loss'.  More sopBP iterations may be required, and then more flocking... until the same initial outputError set-point is reached, but with much less dispersion.
Now accumulating absolute flocking errors per neuron -- for our measure of 'dispersion.'  Will use this for "stop flocking", tuning, etc.  Also, will probably want to re-institute momentum during gradient descent for flocking.  Also, may want to consider ying-yanging outputError-FlockingError.  I.E. this would be a back and forth between sopBP and Flocking to reach the same Output Error but with dispersion minimized.  Specifically, on one epoch just sopBP would set a new OutputError point.  Then one epoch of flocking would improve dispersion but also would "hurt/loss" OutputError.  So sopBP would be appropriately tuned and applied to attempt to make-up for the outputError 'loss'.  More sopBP iterations may be required, and then more flocking... until the same initial outputError set-point is reached, but with much less dispersion.
Merge remote-tracking branch 'origin/normalizeFirst' into normalizeFirst

Conflicts:
	lib/core/Trainers.rb
Have gotten deltaAbsFlockingError working as a first draft.   Now examining convergence data.
Now can examine details of interaction between outputError on grad desc and flockError on grad desc -- back and forth give/take real-time 'tuning.'
Before previously delineated investigation, I need to better understand fine-details of soft-clustering and variations most suited to neural flocking.  In particular, should an example be flocking to the soft-cluster's center or to the example's virtual location (based on a weighted combination of the clusters).  Should examples with netInputs peripheral to it's major cluster's center belong "totally" to that cluster?  i.e., a membership weight of 1.0 for that cluster and 0.0 for the other(s).  Would it be wise to switch-over to a pseudo-hard clustering once the memberships get highly skewed?   Momentum learning?  And, of course, the distance metrics related to the io functions "focussing of the clusters". -- and, of course, the ratio of derivatives as to it's relationship to generalization through gradient descent.
'