EmuKit / emukit

A Python-based toolbox of various methods in decision making, uncertainty quantification and statistical emulation: multi-fidelity, experimental design, Bayesian optimisation, Bayesian quadrature, etc.
https://emukit.github.io/emukit/
Apache License 2.0
605 stars 128 forks source link

Bayesian Optimization with unknown constraint #217

Closed polivucci closed 5 years ago

polivucci commented 5 years ago

Issue #, if available:

Description of changes:

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

codecov-io commented 5 years ago

Codecov Report

Merging #217 into master will decrease coverage by 0.68%. The diff coverage is 64.44%.

Impacted file tree graph

@@            Coverage Diff             @@
##           master     #217      +/-   ##
==========================================
- Coverage   89.36%   88.67%   -0.69%     
==========================================
  Files         111      114       +3     
  Lines        3187     3276      +89     
  Branches      337      347      +10     
==========================================
+ Hits         2848     2905      +57     
- Misses        274      306      +32     
  Partials       65       65
Impacted Files Coverage Δ
...ization/acquisitions/probability_of_improvement.py 96.66% <100%> (ø) :arrow_up:
emukit/bayesian_optimization/loops/__init__.py 100% <100%> (ø) :arrow_up:
...kit/bayesian_optimization/acquisitions/__init__.py 100% <100%> (ø) :arrow_up:
...esian_optimization/loops/constrained_loop_state.py 44.82% <44.82%> (ø)
...s/unknown_constraint_bayesian_optimization_loop.py 48.27% <48.27%> (ø)
...ization/acquisitions/probability_of_feasibility.py 96.42% <96.42%> (ø)

Continue to review full report at Codecov.

Legend - Click here to learn more Δ = absolute <relative> (impact), ø = not affected, ? = missing data Powered by Codecov. Last update a068c8d...441c050. Read the comment docs.

polivucci commented 5 years ago

Thank you, sorry for the delay I was busy on other projects. Also looking forward to @javiergonzalezh 's opinion on the local penalization issue.

polivucci commented 5 years ago

I defined the new UnknownConstraintLoopState but then I stopped short of defining a new UserFunctionResult. As it is now, the code still runs with the cost variable. UnknownConstraintLoopState is not used. Should I remove UnknownConstraintLoopState?

marpulli commented 5 years ago

I just added a test and made this use the latest functionality to pass around arbitrary function outputs (in this case, the constraint value). Once the tests run, I'll merge.