We have used R to implement the proposed framework, partly due to the availability of robust and efficient R packages for fitting Gaussian process models (DiceKriging [1]}) and for global optimisation (pso [2]}). Using R also provides flexibility in terms of the user-writen simulation routines by facilitating various complicated analysis procedures, e.g. multilevel modelling through lme4 [3]}. Our implementation works to a simple interface. The user must provide instances of two data frames. The first, design_space, contains a row for each design parameter describing its name and its lower and upper bounds. The second, constraints, contains a row for each constraint function \(g_{j}\) . Each row should include a label for the constraint, the hypothesis it pertains to, a nominal power which should not be exceeded, and the confidence we require in the constraint being satisfied (i.e. the \(p\)  in Equation REF ). Further, two functions are required. The first, objectives, takes as its argument a vector of design parameter values \(\mathbf {x}\)  and returns a vector of objective values \(( f_{1}(\mathbf {x}), \ldots , f_{B}(\mathbf {x}) )\) . The second, sim_trial, takes as its arguments a vector of design parameter values \(\mathbf {x}\)  and a vector of parameter values defining the conditions under which we wish to simulate. The function should simulate the necessary data generation and analysis and return a boolean indicator of the rejection of the null hypothesis, or, more generally, of declaring `success'. Given these components, the example R code in the appendix can be modified to solve the problem at hand.
