-
Notifications
You must be signed in to change notification settings - Fork 20
/
api.py
48 lines (40 loc) · 1.65 KB
/
api.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
from functools import partial
from typing import Union
from bofire.data_models.priors.gamma import GammaPrior
from bofire.data_models.priors.lkj import LKJPrior
from bofire.data_models.priors.normal import (
DimensionalityScaledLogNormalPrior,
LogNormalPrior,
NormalPrior,
)
from bofire.data_models.priors.prior import Prior
AbstractPrior = Prior
AnyPrior = Union[
GammaPrior,
NormalPrior,
LKJPrior,
LogNormalPrior,
DimensionalityScaledLogNormalPrior,
]
# these are priors that are generally applicable
# and do not depend on problem specific extra parameters
AnyGeneralPrior = Union[GammaPrior, NormalPrior, LKJPrior, LogNormalPrior]
# default priors of interest
# botorch defaults
BOTORCH_LENGTHCALE_PRIOR = partial(GammaPrior, concentration=3.0, rate=6.0)
BOTORCH_NOISE_PRIOR = partial(GammaPrior, concentration=1.1, rate=0.05)
BOTORCH_SCALE_PRIOR = partial(GammaPrior, concentration=2.0, rate=0.15)
# mbo priors
# By default BoTorch places a highly informative prior on the kernel lengthscales,
# which easily leads to overfitting. Here we set a broader prior distribution for the
# lengthscale. The priors for the noise and signal variance are set more tightly.
MBO_LENGTHCALE_PRIOR = partial(GammaPrior, concentration=2.0, rate=0.2)
MBO_NOISE_PRIOR = partial(GammaPrior, concentration=2.0, rate=4.0)
MBO_OUTPUTSCALE_PRIOR = partial(GammaPrior, concentration=2.0, rate=4.0)
# prior for multitask kernel
LKJ_PRIOR = partial(
LKJPrior, shape=2.0, sd_prior=GammaPrior(concentration=2.0, rate=0.15)
)
# Hvarfner priors
HVARFNER_NOISE_PRIOR = partial(LogNormalPrior, loc=-4, scale=1)
HVARFNER_LENGTHSCALE_PRIOR = DimensionalityScaledLogNormalPrior