physbo.search.pareto module
- class physbo.search.pareto.Pareto(num_objectives, dom_rule=None)[source]
Bases:
object- divide_non_dominated_region(force_binary_search=False, debug=False, method='auto')[source]
Partition the region not dominated by the front into disjoint hyper-rectangles, stored in
self.cellsas index bounds into[reference_min; front; reference_max].- Parameters:
force_binary_search (bool) – Same as
method="binary_search".debug (bool) – Print timings of the binary search.
method (str) –
"auto"(default): vertical strips for 2 objectives,"box"otherwise."box": the box decomposition of Lacour, Klamroth and Fonseca (2017), built from local upper bounds as in BoTorch’sFastNondominatedPartitioning. Far fewer cells than the binary search for 3 or more objectives (4 objectives, 150 front points: about 1,600 instead of 2.7 million). For 6 or more objectives the region is cut into slabs along the last objective, and each slab is decomposed in this way."binary_search": recursive bisection of the bounding box.region (All methods cover the same)
EHVI (so)
and (HVPI)
rounding. (volume_in_dominance agree up to)
- prepare_reference_points(upper=True)[source]
Make the reference points valid for the current front.
EHVI needs the front between reference_min and reference_max, and HVPI needs it above reference_min. A reference point that is not set is estimated from the front. An estimated reference point that the front has grown beyond is estimated again; a reference point set by the user is kept, with a warning. The warning is always issued from this module, whichever function calls this method, so that warning filters treat all calls alike (and all processes of a parallel run alike).
- Parameters:
upper (bool) – Whether reference_max is needed as well.
- rebuild_front(t, terminal_num_run)[source]
Recompute the non-dominated set of points from the observations.
The front is updated in the same order as the observations were written. The reference points are kept unless they are not finite.
- Parameters:
t (numpy.ndarray) – N x num_objectives dimensional array. All the observations.
terminal_num_run (numpy.ndarray) – The number of the observations at the end of each run.
- set_reference_max(reference_max=None)[source]
Set the upper reference point.
Without an argument, it is estimated from the current front as front_max + 100 w, with w as for set_reference_min; prepare_reference_points estimates it again when the front no longer lies below it. A given reference point is kept as it is.
- set_reference_min(reference_min=None)[source]
Set the lower reference point.
Without an argument, it is estimated from the current front as front_min - 2 w / n, with w the width of the front in each objective (an objective in which the front has no extent takes the largest width of the others, or 1) and n the number of points of the front; prepare_reference_points estimates it again when the front no longer lies above it. A given reference point is kept as it is.