Open rosonaeldred opened 1 year ago
Hi Rosona,
so you want to run a multiobjective optimization using RFs to find the pareto front?
In Bofire, we have a parego implementation using simplex-based weights and then a single objetive optimizer. The whole thing is currently based on GPs and gradient based ACQF optimization.
So you want to have somehow the same but with an RF as model under the hood? Optimization then via a GA or random sampling?
Do you have any linear or NchooseK constraints in the setup?
Since the weekend, Botorch is able to use ensemble models, so what we could do is to just write a botorch wrapper around a RF and set it up as a Model in Bofire and hook this then into the qparego strategey and optimize the whole thing via random sampling. Doing this as a kind of first hack should be the work of three hours. Only thing is that one needs the most recent botorch version from main as it is not yet in the release version.
Best,
Johannes
Hi Rosona, I implemented it in a minimal way. I will put the branch upstream the latest tomorrow. Best, Johannes
Hi Rosona,
here is an example implementation using qehvi and a RF: https://github.com/experimental-design/bofire/pull/119
So far we have only qparego, we should also implement original ego for this purposes.
Best,
Johannes
Internally, we've run into a case where I would like to implement predict_pareto_front for rf. Looking at how we do that for PLS, it makes use of a BASF-internal helper package that has dependencies we cannot open-source. This issue is for us to figure out a work-around for bofire, or a decision to extend bofire strategies internally with the basf-internal package for this functionality,
Parego's implementation uses pymoo. From David Walz: "pymoo or simplex-sampled weights + single objective optimizer implemented directly in BoFire"