diff --git a/adaptive/learner/learnerND.py b/adaptive/learner/learnerND.py index 38b778d73..a296c6759 100644 --- a/adaptive/learner/learnerND.py +++ b/adaptive/learner/learnerND.py @@ -192,6 +192,16 @@ def curvature_loss(simplex, values, value_scale, neighbors, neighbor_values): return curvature_loss +def isosurface_loss_function(level, priority=1000): + def loss(simplex, values, value_scale): + values = np.array(values) + which_side = np.sign(level * value_scale - values) + crosses_isoline = np.any(np.diff(which_side)) + return volume(simplex) * (1 + priority * crosses_isoline) + + return loss + + def choose_point_in_simplex(simplex, transform=None): """Choose a new point in inside a simplex.