Open jduerholt opened 10 months ago
Hi Johannes! Thank you for these neat ideas to complement our DoE capabilities. I completely agree that it would be nice to have non-model based DoE schemes available.
I agree with most of you proposals. Why not just call the new DoE strategy FactorialDoEStrategy
instead and keep the other name? I am even not entirely sure, if it is not enough to stick with DoEStrategy
, and just communicate what we want via the objective, as it is handled for the space-filling case now.
I actually think the best option would be to change to DoEObjective data models that just takes the fields they need. The workflow would be like
domain = Domain(
inputs=all_inputs,
outputs=[ContinuousOutput(key="y")],
constraints=all_constraints,
)
objective = data_models.doe_objectives.DOptimalityObjective(domain = domain, formula="linear")
# objective = data_models.doe_objectivesSpaceFillingObjective(domain = domain)
data_model = data_models.DoEStrategy(
domain=domain,
objective=objective,
optimization_strategy="iterative",
)
strategy = DoEStrategy(data_model=data_model)
candidates = strategy.ask(
candidate_count=n_experiments
)
A understanding question: "In addition, also make the formula string available, if a user wants to exactly specify it." - is this related to DoE, or BO? DoE has this feature.
I have to read up on this UniversalSampler
sounds fancy ;)
@dlinzner-bcs @bertiqwerty @Osburg @KappatC @evo-bschiller @evo-nlueck
We are planning to provide users of our internal web platform that makes BoFire available via a GUI with the possibility to also use strategies that are meant for problem initialization like the
RandomStrategy
and theDoEStrategy
. Furthermore we also want to integrate factorial and fractional factorial plans via the capability frompyDoE3
(I tend to just copy the needed fuctionality out of the library and not create a dependency).As already discussed in issues https://github.com/experimental-design/bofire/issues/314 and https://github.com/experimental-design/bofire/issues/307, we have to perform some cleanup, which I want to summarize here and dicuss some open questions:
DoEStrategy
data model despite the space-filling objective.UniversalSampler
strategy as this does not need any model equation under the hood https://github.com/experimental-design/bofire/issues/314.FactorialStrategy
which just generates the complete combinatorics for fully combinatorical/discrete domains (https://github.com/experimental-design/bofire/blob/main/bofire/data_models/strategies/factorial.py).My proposal would be the following:
FactorialStrategy
.FactorialDoEStrategy
.DoEStrategy
toModelDoEStrategy
to indicate that it goes into the direction of model based DoE.Furthermore, we have to think about the nomenclature between strategies that we name Sampler and those which we name as Strategy, also this is inconcistent. We have for example the
PolytopeSampler
,RejectionSampler
and theRandomStrategy
which makes use of the two samplers ...What do you think?
Best,
Johannes