-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ENH: Updates to KPI options #23
Conversation
Codecov Report
@@ Coverage Diff @@
## master #23 +/- ##
==========================================
+ Coverage 98.47% 99.06% +0.59%
==========================================
Files 7 7
Lines 197 215 +18
Branches 32 34 +2
==========================================
+ Hits 194 213 +19
Misses 2 2
+ Partials 1 0 -1
Continue to review full report at Codecov.
|
I've played around with it on the two-Gaussian example, using various lower/upper ranges (negative, positive, narrow, wide). The engine is still running and the Pareto-front is where is should be, certainly with a wide range. I'm not sure in theory what behaviour it should cause in other cases but it does seem to be having some effects. |
Implements enhancements that take into account to updates to both
KPISpecification
andBaseOptimizerEngine
classes introduced in force-h2020/force-bdss#353The
IOptimizer
classes now don't have to deal with converting the raw KPI values into the objective score - all of this is dealt with byBaseOptimizerEngine._score
To Do:
upper_bound
argument forNevergradMultiOptimizer
class. In particular we need to use appropriate Nevergrad defaults for any KPI that does not have an upper bound set. I am not quite sure what these should be, but this previous issue may help: Bounded numerical value with shifted prior facebookresearch/nevergrad#361Notes:
It does not seem appropriate to use 'infinite' upper bounds for any KPI. Ideally the user should always specify upper bounds.
Nevergrad's
MultiobjectiveFunction
currently deals with non-specifiedupper_bounds
attributes by performing a few non-biased calculations of the objective function and identifying the largest values that are generated for each output variable (https://github.com/facebookresearch/nevergrad/blob/master/nevergrad/functions/multiobjective/core.py#L51).This is an 'all-or-nothing' approach, however - it will only perform this estimation if no
upper_bounds
array is passed into the constructor. Therefore it cannot handle certain KPIs with upper bounds set and others without (as currently allowed by the BDSS framework)