BO is a derivative-free method to actively and efficiently search the database of NPMs X for the NPM x * that maximizes f (x). Active, because BO sequentially selects NPMs from X for experimentation (to evaluate with f ), iterating between conducting an experiment and making a decision about which experiment to conduct next. Efficient, because BO makes a data-driven decision to select the next NPM for an experiment while taking into account all observed (NPM x, property y = f (x)) pairs from previous experiments. Each decision to select the next unevaluated NPM from X to evaluate with f must trade off two conflicting goals: