The Black-Box Optimization Solver

Overview: Black-Box Solver

The black-box optimization solver, which you can access through PROC OPTMODEL, provides a framework for specifying optimization problems and solving them by using derivative-free methods. It does this by optimizing general nonlinear functions over both continuous and integer variables. You do not need to express these functions in analytic closed form, and they can be non-smooth, discontinuous, and computationally expensive to evaluate. Problem types can be single-objective or multiobjective. The black-box solver runs in either single-machine mode or distributed mode.

The general problem formulation is given by

StartLayout 1st Row 1st Column min Underscript x Endscripts 2nd Column f left-parenthesis x right-parenthesis 2nd Row 1st Column normal s normal u normal b normal j normal e normal c normal t normal t normal o 2nd Column StartLayout 1st Row 1st Column x Subscript script l 2nd Column less-than-or-equal-to 3rd Column x 4th Column less-than-or-equal-to 5th Column x Subscript u 2nd Row 1st Column b Subscript script l 2nd Column less-than-or-equal-to 3rd Column upper A x 4th Column less-than-or-equal-to 5th Column b Subscript u 3rd Row 1st Column c Subscript script l 2nd Column less-than-or-equal-to 3rd Column c left-parenthesis x right-parenthesis 4th Column less-than-or-equal-to 5th Column c Subscript u 4th Row 1st Column x Subscript i 2nd Column element-of 3rd Column double-struck upper Z comma i element-of script upper I EndLayout EndLayout

where x element-of double-struck upper R Superscript n is the vector of the decision variables; f left-parenthesis x right-parenthesis colon double-struck upper R Superscript n Baseline right-arrow double-struck upper R is the objective function; A is an m times n linear coefficient matrix; c left-parenthesis x right-parenthesis colon double-struck upper R Superscript n Baseline right-arrow double-struck upper R Superscript p is the vector of general nonlinear constraint functions—that is, c equals left-parenthesis c 1 comma ellipsis comma c Subscript p Baseline right-parenthesis; x Subscript script l and x Subscript u are the vectors of the lower and upper bounds, respectively, on the decision variables; b Subscript script l and b Subscript u are the vectors of the lower and upper bounds, respectively, on the linear constraints; and c Subscript script l and c Subscript u are the vectors of the lower and upper bounds, respectively, on the nonlinear constraint functions. Equality constraints can be represented by equating the lower and upper bounds of the desired variable or constraint.

Because of the limited assumptions that are made about the objective function f left-parenthesis x right-parenthesis and constraint functions c left-parenthesis x right-parenthesis, the black-box solver uses a parallel hybrid derivative-free approach similar to approaches that are used in Taddy et al. (2009), Plantenga (2009), Gray, Fowler, and Griffin (2010), and Griffin and Kolda (2010a). Derivative-free methods are effective whether or not derivatives are available, provided that the dimension of x is not too large (Gray and Fowler 2011). As a rule of thumb, derivative-free algorithms are rarely applied to black-box optimization problems that have more than 100 variables. The term black-box emphasizes that the function is used only as a mapping operator and makes no implicit assumption or requirement about the structure of the functions themselves. In contrast, derivative-based algorithms commonly require the nonlinear objectives and constraints to be continuous and smooth and to have an exploitable analytic representation.

The black-box solver optimizes general nonlinear problems by simultaneously applying multiple instances of global and local search algorithms in parallel. This hybrid approach streamlines the process of needing to first apply a global algorithm in order to determine a good starting point to initialize a local algorithm. For example, if the problem is convex, a local algorithm should be sufficient, and using a global algorithm would create unnecessary overhead. If the problem instead has many local minima, failing to run a global search algorithm first could result in an inferior solution. Rather than attempting to guess which paradigm is best, the black-box solver simultaneously performs global and local searches while continuously sharing computational resources and function evaluations. Given a suitable number of threads and processors, the resulting run time and solution quality should be similar to those from having automatically selected the best global and local search combination. Moreover, because information is shared, the robustness of this hybrid approach can exceed that of hybrid combinations that simply use the output of one algorithm to hot-start another algorithm.

The black-box solver uses different strategies to handle different types of constraints. It handles linear constraints by using both linear programming and strategies similar to those in Griffin, Kolda, and Lewis (2008), where tangent directions to nearby constraints are constructed and used as search directions. It handles nonlinear constraints by using smooth merit functions (Griffin and Kolda 2010b) and handles integer and categorical variables by using strategies and concepts similar to those in Griffin et al. (2011). Its approach can be viewed as a genetic algorithm that includes an additional "growth" step, in which selected points from the population are allotted a small fraction of the total evaluation budget to improve their fitness score (that is, the objective function value) by using local optimization over the continuous variables.

Because the black-box solver is a parallel/distributed solver, it also does the following:

  • enables you to run the solver in a session on a CAS server. This can be a single machine or a distributed computing environment, depending on the number of computing nodes that the CAS session is running on.

  • enables you to run in single-machine mode on the server where SAS is installed

  • exploits all the available cores and concurrent threads, regardless of execution mode

Last updated: June 22, 2026