Suppose we have a large database of candidate NPM structures, X , for some adsorption task. Let f : X → R be a black-box objective function that, given a candidate NPM x ∈ X , returns the relevant adsorption property y = f (x). Each evaluation of f corresponds to performing an expensive experiment-either in the laboratory or in a molecular simulation-to measure the adsorption property y of NPM x. Our goal is to find the highest-performing NPM x * from X that maximizes the objective function f ,