Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Progresively interactive NSGA-II (#634)
* Development environment set up with pytest * Adding dummy functions that mock up the I/O of value functions * Passing smoke test for problem constructor * Have the solutions (P) being sorted by ranking * Now also testing whether the P in the result are sorted properly * Added test for the objective function * Trying to standardize P versus F * Adding the value fucnction to the optimization constructors * Have the inequality constraint basically working (- some rounding err) * Fixed the false negative test * Fixing false negative test in the objective function * Have a basic equality test and implementation in place * Successfully ran an optimization smoke test, though the values look bad * Have first step of a plotter working * Have a contour graph working... which isn't want I wanted to do at all * Have the contour lines lined up with P! * Experimenting with different SOO optimization techniques * Pulling the objective function out of the _evaluate function * Made a test for the independent objective function, plus opt smoke test * Pulled the equality constraint function into a stand alone function * Pulled the inequality constraints out of the _evaluate func * Finished basic 1D array compatibility * Have a smoke test for scipy's minimize working * Successfully tested the scipy solver methods! * Refactoring a few things * More refactoring * Making the value function plotter generic * Utter mess * Rooted out that nasty problem with P's dimensionality * Changed vf for the value function library to mvf to avoid confusion * Pulling more functionality into the create_vf functions * Finalizing plotting * Adding some test data to play with * have the first veresion of the polynomial value function * Making skeleton code for creating polynomial VF * Removing a near duplicate test * Tidying up testing and vf generation code * Have the inequality constraint test set up * Pulled the part of the poly value function that calculates S * Fixing several compatibility problems * Got a first version of polynomial inequality constraints working * Have the 2D version of the poly constraint working * Have a basic equality constraint working * Fixing the scipy optimization for polynomial value functions * Magically rewrote the S calc function after much head scratching * Have the product calculator working * Adding some dimensionality tests and squeezing S output * Fixing (untransposing) the linear value function, and adding +tests * Fixing errors in the S calculation * Updating testing data for the new utility function * Fixing a bug in the inequality constraint calcuation * I added bounds to the scipy opt, and pymoo optimization for poly vf * Making the optimization a bit quickier in a lazy way * Cleaning up the vf tester script * Making the result of the vf into a more complete result object * Added a maximization/minimization parameter to vf creation * Made minimization the default * Have the first basic version of a comparator working * Have ZDT1 with the dashboard visualizer set up * Adding a class for PI-NSGA-II-VF * Selecting eta most scattered points + plotting * First swing at the rank prompt * Have VF optimization tied into the optimization with some crude plots * Fixing various issues with plotting * Allowing the user to see the solutions to choose among * Have the grey trail of previous generations working * Fixed the plotting scale * Fixing plotting plus first steps for validation * Adding a validation function * Hooked a custom dominator function into pi-nsga-ii * Pulling the vf dominator out of the pi-nsga-2 code * Now have the value function parameters hooked into the domination obj * Have things working... perhaps * Another max/min bug. (I think it's working!) * Adding updates from pico * Forgot to incorporate nds code as well * Adding a half-working domination graph * Fixing a bug with the value function dominance * Forgot some supporting code for the domination plot * Pairwise Comparison added argument to pinsga2 to allow the user to pick either absolute or pairwise ranking, and implemented pairwise ranking in _prompt_for_ranks * Have VF and optimization methods integrated into the optimization * Updating the VF optimization from min to max * Adding hessian matrix for trust constraint method * Moving this to the pymoo example directory * Tidying up this exmaple code * Making methods non-static + some variable name tweaks * fixed flattening bug now using offset to track rank for equivalent rankings * Freshing this up a bit * Removing min/max option * Threading a delta variable throughout the value function * Have partial ordering working * Added some skeleton code for an abstract class * AutomatedDM + documentation * Switched to proper ranking type * Tied rankings working * Incorporating chagnes to max eps, ranking, and validation * Fixing the index starting at 1 bug, + adding a final ranking message * Adding an option for choosing the display sign for prompts * AutomatedDM + pairwise ranking can now auto rank by evaluating pairs of solutions instead of all, if wanted * Fixing yet another failed run falling through the cracks * Updated testing script * Cleaning examples and helper code * Cleaning up temporary code changes * Fixing an infinite loop bug when no fit can be found * Have smarter warnings integrated into the algorithm * Fixing a bug with tau being hard coded * Polishing documentation * Removing the work-in-progress dashboard module for now --------- Co-authored-by: e-spinner <[email protected]>
- Loading branch information