4. GOOMBAH

4.1. General Description

This code solves the problem

\[\min_{\psp \in \R^{\np}} \hfun(\Ffun(\psp)),\]

where \(\Ffun\) is a vector-valued, user-provided blackbox function mapping from \(\R^{\np}\) to \(\R^{\nd}\), and \(\hfun\) is a known, possibly nonsmooth function mapping from \(\R^{\nd}\) to \(\R\).

GOOMBAH stands for Glassbox Optimization Of a Model of a Blackbox in a Hypersphere. At each iteration, GOOMBAH constructs a local model \(\Mfun\) of the blackbox mapping \(\Ffun\) and approximately solves the trust-region subproblem

\[\min_{\psp \in \Omega_k} \hfun(\Mfun(\psp)),\]

where \(\Omega_k\) is the current trust-region, possibly intersected with bound constraints. In this sense, GOOMBAH is a superset of both POUNDERS and Manifold Sampling: when a problem can be handled by either method, it can also be addressed by GOOMBAH through the more general subproblem \(\hfun(\Mfun(\psp))\).

The GOOMBAH trust-region subproblem can be significantly harder than the corresponding POUNDERS or Manifold Sampling subproblems. For general nonsmooth \(\hfun\) and nonlinear models \(\Mfun\), solving this subproblem to tight tolerances may require a global optimization solver, and individual solves can take minutes or hours. Thus, users should ensure that the time spent solving the trust-region subproblem is commensurate with the cost of evaluating \(\Ffun\).

To preserve robustness, GOOMBAH reverts to a manifold-sampling iteration whenever the proposed trust-region subproblem solution does not produce sufficient objective decrease. This fallback to manifold sampling (which identifies only a local descent step) allows GOOMBAH to retain the convergence properties of manifold sampling while taking more ambitious steps exploiting \(\hfun\) whenever they are demonstrably useful.

The MATLAB implementation includes calls to GAMS for solving GOOMBAH subproblems for particular examples of \(\hfun\). However, performance in the examples may depend on licensed optimization software, such as BARON, for solving these trust-region subproblems effectively.

Note

This code does not have a test suite and is not actively tested for correctness.

4.2. Programmatic Interface

4.2.1. MATLAB

goombah(hfun, Ffun, nf_max, x0, L, U, GAMS_options, subprob_switch)

Run GOOMBAH on the optimization problem specified by the given arguments.

Parameters:
  • hfun – [func handle] Evaluates \(\hfun\), returning the scalar function value and \(k \times \nd\) subgradients for all \(k\) limiting gradients at the point given.

  • Ffun – [func handle] Evaluates \(\Ffun\), the black box simulation, returning a \(1 \times \nd\) vector.

  • nf_max – [int] Maximum number of function evaluations.

  • x0 – [\(1 \times \np\) dbl] Starting point.

  • L – [\(1 \times \np\) dbl] Lower bounds.

  • U – [\(1 \times \np\) dbl] Upper bounds.

  • GAMS_options

  • subprob_switch

Returns:

  • X [\(\mathrm{nf\_max} \times \np\)] Points evaluated

  • F [\(\mathrm{nf\_max} \times \nd\)] Their simulation values

  • h [\(\mathrm{nf\_max} \times 1\)] The values \(\hfun(\Ffun(\psp)))\)

  • xkin [int] Current trust region center