Skip to main content

BARON User Manual

Welcome, Anonymous

BARON user manual and installation guide v. 2026.9.10

September 10, 2026

Nick Sahinidis, The Optimization Firm, LLC, http://www.minlp.com.

1 Introduction

The Branch-And-Reduce Optimization Navigator (BARON) is a computational system for the global solution of algebraic nonlinear programs (NLPs) and mixed-integer nonlinear programs (MINLPs).

Traditional NLP and MINLP algorithms guarantee global optima only under restrictive convexity assumptions. BARON instead uses deterministic branch-and-bound methods designed to identify globally optimal solutions under more general conditions. These conditions include finite lower and upper bounds on nonlinear expressions in the problem.

BARON strengthens its branch-and-bound procedure with constraint propagation, duality-based techniques, and other range-reduction methods that tighten variable bounds throughout the solution process [42, 50, 51, 56]. Section 5 describes these algorithms and the options that control their behavior.

Parts of the BARON software were developed at the University of Illinois at Urbana-Champaign and Carnegie Mellon University.

1.1 How to read this manual

Readers who want to solve a model immediately should begin with Section 2, which covers installation, and then Section 3 (quickstart), which provides a quickstart example using the command line and from several modeling systems. Section 4 explains the problem classes for which BARON is appropriate and the model characteristics that affect difficulty. Section 5 describes the algorithm and provides the background needed to interpret the option tables. Sections 68 cover model requirements, reformulations, and the BARON input language.

Sections 910 describe output files and BARON’s principal features. Section 11 is the option reference, Section 12 lists termination codes, and Section 13 provides troubleshooting guidance organized by symptom. Appendix A contains an alphabetical index of all options.

1.2 Licensing and software requirements

A free version of BARON is available from http://www.minlp.com/download. Without a license, BARON can solve problems with up to 10 variables, 10 constraints, and 50 nonlinear operations. Larger problems require a valid BARON license.

The Optimization Firm provides licenses for running BARON directly on any Windows, Linux, and macOS, as well as through JuMP, MATLAB, Oximo (Rust), Pyomo, and YALMIP. BARON distributors AIMMS, AMPL, and GAMS also provide licenses for use within their modeling systems.

BARON includes CLP/CBC [7], HiGHS [19], FilterSD [8], FilterSQP [40], and IPOPT [55] for solving linear, mixed integer, quadratic, and nonlinear (NLP) subproblems. It also includes numerical software from HSL, a collection of Fortran codes for large-scale scientific computation; see http://www.hsl.rl.ac.uk.

If IBM ILOG CPLEX [20] is installed as a dynamic library, BARON can use it to solve LP, MIP, and QP subproblems. The AIMMS, AMPL, and GAMS versions of BARON can also use additional licensed solvers. XPRESS [13] may be used for LP and MIP subproblems, while available NLP solvers include CONOPT [9], MINOS [33], SNOPT [16] and KNITRO [6], among others. These solvers may improve performance on some problems.

2 Installation

If you plan to use BARON through GAMS, AIMMS, or AMPL, BARON is already included with the modeling system. Follow the documentation for your system to configure and run BARON.

To use the stand-alone version of BARON, either directly or through JuMP, MATLAB, Oximo (Rust), Pyomo, or YALMIP, install the BARON executable and license file as described below.

After the software has been downloaded, BARON does not require an internet connection for installation or execution.

2.1 Installing and running BARON with its parser interface

  1. 1.

    Go to http://minlp.com/baron-downloads and download BARON for your platform.

    On Windows, baron-win64.exe is an installer. Run it to install the BARON executable. On other platforms, unzip the downloaded archive to obtain the executable.

  2. 2.

    Place the BARON license file, executable, and any distributed dynamic libraries in a directory included in your system PATH.

  3. 3.

    See Section 3 for instructions on running BARON from the command line.

For a silent installation on Windows, run:

baron-win64.exe /SILENT

To create an installation log, run:

baron-win64.exe /SILENT /LOG=filename

where 𝚏𝚒𝚕𝚎𝚗𝚊𝚖𝚎 is the desired log-file name. Windows will still request permission to run the executable before launching the silent installer.

2.2 Installing and running BARON with Pyomo, JuMP, or YALMIP

  1. 1.

    Go to http://minlp.com/baron-downloads and download BARON for your platform.

    On Windows, run the baron-win64.exe installer. On other platforms, unzip the downloaded archive.

  2. 2.

    Place the BARON license file, executable and any distributed dynamic libraries in a directory included in your system PATH.

  3. 3.

    Consult the documentation for your modeling system for instructions on calling BARON. For Pyomo, see http://www.pyomo.org/workshop-examples/. For JuMP, see
    https://jump.readthedocs.io/en/latest/quickstart.html. In YALMIP, select BARON by passing sdpsettings(’solver’,’baron’) to optimize.

    Section 3.3 provides a minimal example for each interface.

2.3 Installing and running BARON with MATLAB

  1. 1.

    Download the MATLAB/BARON interface from
    http://minlp.com/downloads/matbar/matbar.zip

  2. 2.

    Unzip and place the contents of matbar.zip in a location of your choice. This creates a directory named matbar.

  3. 3.

    Go to http://minlp.com/baron-downloads and download BARON for your platform.

  4. 4.

    Place the BARON executable in the matbar directory. Name it barin.exe on Windows and barin on all other platforms. Place any distributed dynamic libraries in the same directory.

  5. 5.

    Add the matbar directory to your system PATH. Adding it only to the MATLAB path may not be sufficient.

  6. 6.

    Place the BARON license file in a directory included in your system PATH, such as the matbar directory.

  7. 7.

    From MATLAB, run BARON_install

  8. 8.

    Consult the Help directory included with the MATLAB/BARON interface for the interface and solver manuals.

2.4 Installing and running BARON with Oximo (Rust)

Oximo is an algebraic modeling library for Rust; see https://oximo.dev.

  1. 1.

    Go to http://minlp.com/baron-downloads and download and install BARON for your platform.

  2. 2.

    Place the BARON license file, executable, and any distributed dynamic libraries distributed with it somewhere in a directory included in your system PATH.

    Alternatively, specify the BARON executable directly in Oximo using the baron_path option or: Baron::with_exec("/path/to/baron").

  3. 3.

    Add the oximo crate to Cargo.toml with the baron feature enabled:

    [dependencies]
    oximo = { version = "0.5.1", features = ["baron"] }
    

    Section 3.3 provides a minimal example.

2.5 Installing and running CPLEX with BARON

To use CPLEX with BARON, install CPLEX for your platform and use BARON’s CplexLibName option to specify the location of the CPLEX dynamic library.

CPLEX libraries may be installed by downloading GAMS, AIMMS or AMPL, or obtained directly from IBM; see https://www.ibm.com/products/ilog-cplex-optimization-studio.

Academic users may be eligible for free CPLEX licenses through the IBM Academic Initiative. Visit http://ibm.biz/CPLEXonAI and register with an academic email address to verify eligibility. Once approved, download the appropriate version for Windows, Linux, or MacOS) through IBM’s academic software portal.

The CPLEX version used by BARON is independent of any CPLEX version used by MATLAB or another modeling system. We recommend using the most recent version available for your platform.

3 Quickstart

3.1 Illustrative example

This section solves a small nonconvex nonlinear program (NLP) from the command line and from several modeling systems. The model is

min x1x2
s.t. x22x148x13+8x12+2
x24x1432x13+88x1296x1+36
0x13,0x24.

Both constraints are nonconvex, the feasible region has several disconnected components, and the model has multiple local minima. A local NLP solver may return different solutions depending on its starting point. BARON instead identifies the global minimum, near x12.33, x23.18, with an objective value near 5.51.

The model is small enough to solve with the free version of BARON described in (Section 1.2), so no license is required to reproduce the example.

3.2 Solving from the command line

Save the following model in a file named quick.bar:

// A small nonconvex NLP with several local minima.

POSITIVE_VARIABLES x1, x2;

UPPER_BOUNDS{
x1: 3;
x2: 4;
}

EQUATIONS e1, e2;

e1: x2 - 2*x1^4 + 8*x1^3 - 8*x1^2 <= 2;
e2: x2 - 4*x1^4 + 32*x1^3 - 88*x1^2 + 96*x1 <= 36;

OBJ: minimize -x1 - x2;

Then run

baron quick

BARON parses the model, solves it, reports progress to screen, and writes the res.lst, sum.lst, and tim.lst files described in Section 9. The final screen output reports the best solution found, the bound establishing global optimality, and the termination status. Variable values are reported in res.lst.

Two BARON input conventions are particularly important. First, variables may appear only on the left-hand side of a relational operator, which is why the constants 2 and 36 have been appear on the right. Second, variables should have finite bounds whenever possible; finite bounds are often necessary for convergence. Sections Section 6.2 discusses those requirements in more detail

3.3 Solving from a modeling system or programming language

The same model is shown below in GAMS [4], AMPL [14], AIMMS [1], Pyomo [17], JuMP [10], MATLAB [52], YALMIP [21], and Oximo. GAMS, AMPL, and AIMMS distribute BARON directly and therefore do not require a separate BARON installation. The remaining interfaces call a separately installed BARON executable.

3.3.1 GAMS
Variables x1, x2, z;
Equations obj, e1, e2;

x1.lo = 0;  x1.up = 3;
x2.lo = 0;  x2.up = 4;

obj.. z =e= -x1 - x2;
e1..  x2 =l= 2*power(x1,4) -  8*power(x1,3) +  8*sqr(x1) + 2;
e2..  x2 =l= 4*power(x1,4) - 32*power(x1,3) + 88*sqr(x1) - 96*x1 + 36;

Model quick / all /;
option nlp = baron;
solve quick using nlp minimizing z;
3.3.2 AMPL
var x1 >= 0, <= 3;
var x2 >= 0, <= 4;

minimize obj: -x1 - x2;

subject to e1: x2 <= 2*x1^4 -  8*x1^3 +  8*x1^2 + 2;
subject to e2: x2 <= 4*x1^4 - 32*x1^3 + 88*x1^2 - 96*x1 + 36;

option solver baron;
solve;
display x1, x2;
3.3.3 AIMMS

AIMMS models are normally constructed through the AIMMS IDE rather than entered as text. The equivalent model-file representation, is:

MAIN MODEL Main_Quick

  DECLARATION SECTION

    VARIABLE:
       identifier  :  x1
       range       :  [0, 3] ;

    VARIABLE:
       identifier  :  x2
       range       :  [0, 4] ;

    VARIABLE:
       identifier  :  TotalObjective
       definition  :  -x1 - x2 ;

    CONSTRAINT:
       identifier  :  e1
       definition  :  x2 <= 2*x1^4 - 8*x1^3 + 8*x1^2 + 2 ;

    CONSTRAINT:
       identifier  :  e2
       definition  :  x2 <= 4*x1^4 - 32*x1^3 + 88*x1^2 - 96*x1 + 36 ;

    MATHEMATICAL PROGRAM:
       identifier  :  QuickNLP
       objective   :  TotalObjective
       direction   :  minimize
       constraints :  AllConstraints
       variables   :  AllVariables
       type        :  NLP ;

  ENDSECTION

  PROCEDURE
    identifier  :  MainExecution
    body        :
        solve QuickNLP where solver := ’BARON’ ;
  ENDPROCEDURE

ENDMODEL Main_Quick ;
3.3.4 Pyomo
from pyomo.environ import *

m = ConcreteModel()
m.x1 = Var(bounds=(0, 3))
m.x2 = Var(bounds=(0, 4))
m.obj = Objective(expr=-m.x1 - m.x2, sense=minimize)
m.e1 = Constraint(expr=m.x2 <= 2*m.x1**4 - 8*m.x1**3 + 8*m.x1**2 + 2)
m.e2 = Constraint(expr=m.x2 <= 4*m.x1**4 - 32*m.x1**3
                                + 88*m.x1**2 - 96*m.x1 + 36)

SolverFactory(’baron’).solve(m, tee=True)
3.3.5 JuMP
using JuMP, BARON

m = Model(BARON.Optimizer)
@variable(m, 0 <= x1 <= 3)
@variable(m, 0 <= x2 <= 4)
@objective(m, Min, -x1 - x2)
@constraint(m, x2 <= 2x1^4 - 8x1^3 + 8x1^2 + 2)
@constraint(m, x2 <= 4x1^4 - 32x1^3 + 88x1^2 - 96x1 + 36)
optimize!(m)
3.3.6 MATLAB
fun   = @(x) -x(1) - x(2);
nlcon = @(x) [ x(2) - 2*x(1)^4 +  8*x(1)^3 -  8*x(1)^2;
               x(2) - 4*x(1)^4 + 32*x(1)^3 - 88*x(1)^2 + 96*x(1) ];
cl    = [-Inf; -Inf];
cu    = [2; 36];
lb    = [0; 0];
ub    = [3; 4];

[x,fval,exitflag,info] = baron(fun,[],[],[],lb,ub,nlcon,cl,cu,[],[]);

The arguments specify the objective, any linear constraints and their bounds, variable types, and starting point. The linear-constraint arguments are empty here because the model contains no linear constraints. The returned info structure reports BARON’s model status, solver status, bounds, and iteration counts.

3.3.7 YALMIP
sdpvar x1 x2

Objective   = -x1 - x2;
Constraints = [ 0 <= x1 <= 3, 0 <= x2 <= 4, ...
                x2 <= 2*x1^4 -  8*x1^3 +  8*x1^2 + 2, ...
                x2 <= 4*x1^4 - 32*x1^3 + 88*x1^2 - 96*x1 + 36 ];

optimize(Constraints, Objective, sdpsettings(’solver’,’baron’));
value([x1 x2])
3.3.8 Oximo (Rust)

Oximo is an algebraic modeling library for Rust; see https://oximo.dev. With the baron feature enabled as described in Section 2.4, the model is:

use oximo::prelude::*;
use oximo::solvers::Baron;

let m = Model::new("quick");
variable!(m, 0.0 <= x1 <= 3.0);
variable!(m, 0.0 <= x2 <= 4.0);

constraint!(m, e1,
    x2 <= 2.0*x1.powi(4) -  8.0*x1.powi(3) +  8.0*x1.powi(2) + 2.0);
constraint!(m, e2,
    x2 <= 4.0*x1.powi(4) - 32.0*x1.powi(3) + 88.0*x1.powi(2)
          - 96.0*x1 + 36.0);
objective!(m, Min, -x1 - x2);

let result = Baron::new().solve(&m, &BaronOptions::default())?;
println!("status = {:?}", result.termination);
println!("obj    = {:?}", result.objective());
println!("x1     = {:?}", result.value_of(x1));
println!("x2     = {:?}", result.value_of(x2));
3.3.9 Setting BARON options

Each interface provides its own mechanism for setting BARON options; see Section 11 for the complete option reference.

In GAMS, options are specified in a baron.opt file. AMPL uses the baron_options string. Pyomo and JuMP pass options through the solver object. MATLAB uses a baronset options structure, while YALMIP uses the sdpsettings baron. In Oximo, options are set throughBaronOptions builder methods whose names use snake case versions of the option names in Section 11. For example,

let opts = BaronOptions::default().eps_r(1e-4).num_loc(-1).threads(4);

3.4 Where to go next

Section 9 explains BARON’s screen log and output files. If a run reports missing bounds, terminates because of a limit, or returns a solution that appears incorrect, consult the troubleshooting guide in Section 13.

Additional examples are available at http://www.minlp.com/download. Larger collections of NLP and MINLP test problems are available from The Optimization Firm [53] and from MINLPLib [5].

4 When to use BARON

BARON is well suited to problems with the following characteristics.

  • An algebraic model is available in closed form. BARON requires the objective and constraints to be expressed algebraically so that it can decompose and relax them symbolically (Section 5). If the objective is available only through a simulation or experiment whose algebraic form is unavailable, a derivative-free solver such as BAM may be more appropriate; see https://minlp.com/bam-data-driven-optimizer.

  • The model is nonconvex, or its convexity is uncertain. If a model is known to be convex, a local NLP solver can return the global optimum directly and may do so faster. BARON remains useful when nonconvexities are present, when convexity is suspected but not proven, or when a certificate of global optimality is required. It also does not require a starting point at which every expression in the model is well defined; for example, a starting point that produces division by zero does not prevent BARON from running. If the continuous relaxation is known to be convex, setting ProblemIsConvex can avoid substantial unnecessary work.

  • A global optimality guarantee is worth the computational cost. BARON returns both a solution and a bound that certifies its quality. Computing that bound requires a tree search whose cost grows with the number and difficulty of the nonconvex terms. If only a good solution is needed quickly, without a guarantee, a multistart local search may be more appropriate. BARON can perform such a search itself (Section 10.4).

  • Nonlinear expressions can be finitely bounded. In most cases, every nonlinear expression must have finite bounds over the region of interest. This is BARON’s most consequential modeling requirement and is discussed in detail in Section 6.2.

  • The model contains integer or binary variables. BARON handles discrete variables natively and exploits them algorithmically rather than merely enumerating their possible values.

  • The model contains complementarity relationships. BARON automatically recognizes and exploits products that must vanish. It can therefore solve linear and mixed complementarity problems, as well as general mathematical programs with equilibrium constraints (MPECs) without special declarations (Section 10.8).

4.1 What makes a model easy or hard for BARON

Model size alone, measured by the number of variables and constraints, is a poor predictor of difficulty. The following characteristics matter far more.

  • Tightness of variable bounds. Relaxation quality depends directly on the ranges of variables that appear in nonlinear terms. Tight bounds based on physical or problem-specific knowledge are often more valuable than any algorithmic option in this manual. Bounds set to extremely large values, such as ±1010, merely “to be safe,” are a common cause of slow convergence.

  • Number and type of nonconvex terms. A model with thousands of variables but only a few bilinear terms may be easier than one with 50 variables that interact nonlinearly throughout. Bilinear, trilinear, and fractional terms are particularly expensive when the participating variables have wide ranges.

  • Scaling. Coefficients that span many orders of magnitude can degrade both LP subproblems and feasibility calculations. Rescaling variables so that their ranges are comparable is usually beneficial [11].

  • Degeneracy of the optimal value. Models with many solutions of nearly identical objective value may require BARON to explore many nodes before closing the optimality gap. A modest relative tolerance (EpsR) or a Target value can sometimes turn a difficult run into a much faster one.

  • Redundant but valid constraints. Constraints implied by the original model can still strengthen its relaxation. Examples include problem-specific optimality conditions or products of important existing constraints. Such additions can produce order-of-magnitude improvements [46, 44] and should be declared using BARON’s RELAXATION _ONLY _EQUATIONS facility (Section 10.2).

  • Known convex constraints. Declaring convex constraints with CONVEX_EQUATIONS allows BARON to outer-approximate them rather than relax them term by term. This can produce tighter relaxations at lower computational cost (Section 10.2).

5 How BARON works

BARON finds global solutions to general nonlinear and mixed-integer nonlinear programs. The discussion throughout assumes we are dealing with a minimization problem of the form:

min f(x)
s.t. g(x)0
xX

where f:X, g:Xm, and Xn. The set X may include integer restrictions, and the constraints may include complementarity relationships. All functions must be algebraic and provided in closed form. The nonlinear functions f and g supported by BARON are discussed in Section 6.

This section describes BARON’s algorithm at the level of detail needed to interpret the option tables in Section 11. The underlying theory is documented in the references cited throughout this section and collected in the bibliography. Reference [56] provides the most recent overall description of BARON, [49] gives a book-length treatment of the theory, and [26] surveys the state of the art in mixed-integer nonlinear programming.

5.1 Overview

BARON searches a tree of subproblems. At each node, it operates over a box of variable bounds and performs three main tasks. First, it relaxes the model to obtain a valid lower bound on the best objective value attainable within the box. Second, it reduces the box by eliminating parts that provably contain no improving feasible solution. Third, if the box cannot be eliminated, BARON branches, by splitting it into smaller boxes and repeating the process.

A separate upper-bounding process generates feasible solutions. These are what the reduction step uses to prune. The search terminates when the best lower bound over all open nodes and the value of the best feasible solution agree within the absolute or relative optimality tolerances EpsA and EpsR.

What distinguishes branch-and-reduce [41, 42] from plain spatial branch-and-bound is the aggressive use of range reduction. BARON applies several independent reduction mechanisms at every node. These reductions help keep the search tree small. BARON further distinguishes itself through the quality and sophistication of its relaxations, upper-bounding heuristics, and tree-management techniques.

5.2 Factorable decomposition and relaxation

BARON first decomposes each nonlinear model expression into a sequence of elementary operations and introduces an auxiliary variable for each intermediate result [31, 32]. Elementary operations such as products, quotients, powers, exponentials, and logarithms have known convex envelopes. BARON composes these estimators to construct a convex relaxation of the full model, then further outer-approximates that relaxation with linear inequalities so that the node subproblem is an LP, or a MIP when integer variables are present [51, 25].

BARON also exploits structure beyond individual elementary operations. It recognizes multilinear, bilinear, and polynomial substructures, convex-transformable intermediate expressions, and quadratic forms, for which stronger relaxations are available [43, 48, 3, 23, 24, 59, 22, 60, 2, 36, 34, 35].

Two consequences of this construction are especially important for users.

First, the quality of each estimator depends on the bounds of the variables entering the corresponding elementary operation, including auxiliary variables introduced for intermediate expressions. Bounds on the original user model variables alone may therefore be insufficient. Section 6.2 discusses this issue in detail.

Second, a relaxation is typically tight at the ends of a box, especially in one dimension, while a gap remains in the interior. That gap narrows as the box shrinks. Figure 1 illustrates why branching is effective: splitting the domain adds a point of agreement at the branching point and gives each sub-box a relaxation that hugs the function more closely, thereby improving the lower bound.

xfluL(a) one box: loose bound LxflbuL(b) after branching at b: L>L
Figure 1: Branching tightens the relaxation. The solid curve is a nonconvex function over the box [l,u], and the dashed curve is BARON’s convex underestimator, which agrees with the function at the endpoints of its box, marked by dots. (a) Over the full box the underestimator is loose and the resulting lower bound L is weak. (b) After branching at b, each sub-box has its own, tighter underestimator, and both are exact at b: the branching point becomes a point of agreement, improving the relaxation. The smaller of the two subproblem minima, L, provides a stronger lower bound.

The options NOuter1, NOutPerVar, NOutIter, and OutGrid control how finely BARON outer-approximates the convex relaxation with linear cuts. The options LPSol, LPAlg, and the Allow* options control which solver processes the resulting LP or MIP.

5.3 Range reduction

Once a feasible solution with objective value U is known, any part of the search space that cannot contain a better solution than U may be discarded. BARON uses this principle not only to fathom entire nodes, but also to shrink the box at nodes that survive. This is the “reduce” step in branch-and-reduce [42, 39]. Figure 2 illustrates the effect.

BARON applies several range-reduction mechanisms, each controlled by its own option:

  • Linear feasibility-based tightening (LBTTDo), sometimes called poor man’s LPs. For each variable, BARON uses the linear constraints of the relaxation to derive the tightest bounds consistent with feasibility, at substantially lower cost than solving a separate LP for every variable bound.

  • Nonlinear feasibility-based tightening (TDo). BARON applies the same principle to nonlinear constraints by propagating bounds through the factorable decomposition described in Section 5.2 [45, 39].

  • Marginals-based reduction (MDo). The dual solution of the node relaxation assigns reduced costs to active variable bounds. When a bound has a sufficiently large reduced cost, duality can show that moving the variable beyond a certain point would raise the relaxation value above the incumbent U. BARON can then discard that portion of the variable range. This reduction adds little computational cost.

  • Optimality-based tightening (OBTTDo) and probing (PDo). BARON solves auxiliary optimization problems to derive the strongest possible bounds [37, 57, 50]. These procedures, especially probing, can be expensive. BARON therefore determines automatically how much probing is worthwhile; setting PDo=2 leaves this decision to BARON.

Because several of these mechanisms rely on the incumbent value U, they become much more effective once a good feasible solution is available. This is one reason BARON invests in local search before and during the tree search (Section 5.5). It also explains why a good starting point or a useful CutOff value can substantially reduce solution time.

(a) original box(b) after range reduction
Figure 2: Range reduction. The shaded region contains all the points in the current box that are both feasible and at least as good as the incumbent; the dashed line represents one of the constraints used to derive the region. Reduction replaces the original box (a) by its bounding box (b). BARON then rebuilds the relaxation over the reduced box, where it is tighter, and may repeat the reduction process.

5.4 Branching and node selection

When a node survives reduction, BARON selects a variable on which to branch and a point at which to split its range [50]. The BrVarStra option selects among a dynamic strategy that adapts to observed performance, the largest-violation rule, and the longest-edge rule. The BrPtStra chooses the split point. Users can override variable selection through the BRANCHING_PRIORITIES section of the input file (Section 8.4); assigning a priority of zero prevents branching from branching on that variable. The NodeSel option determines which open node BARON processes next, allowing a tradeoff between bound improvement (best bound) and limiting memory use or finding incumbents through LIFO selection.

5.5 Upper bounding and local search

BARON obtains feasible solutions from four sources: a user-supplied starting point, if provided; solutions obtained by BARON’s relaxations that are feasible to the original problem; a randomized multistart local search performed during preprocessing, controlled by NumLoc; and local searches launched at nodes during the tree search, controlled by DoLocal. The NLP subsolver used for these searches is selected by NLPSol or, by default, chosen automatically and adaptively by BARON.

BARON does not require a feasible starting point. The problem functions need not be evaluable at the supplied point. See Section 10.1.

5.6 Determinism and work units

Several BARON options are expressed in work units rather than seconds. A work unit is an internal, deterministic measure of computational effort that accumulates as BARON constructs relaxations, solves subproblems, performs range reduction, and processes nodes. Unlike elapsed time, work units do not depend on machine speed or system load. Two runs of the same model with the same options and BARON executable therefore consume the same number of work units at every corresponding point of the search.

Wall-clock and CPU seconds do not provide the same reproducibility. A run terminated by MaxTime may stop at a different node on a loaded machine than on an idle one, and may therefore return a different result [29]. Similarly, a log printed every PrTimeFreq seconds is not identical across runs. The corresponding work-unit options avoid these problems:

  • MaxWork limits total search effort deterministically, and is the reproducible counterpart of MaxTime. A run stopped by MaxWork stops at exactly the same point on every machine.

  • PrWorkFreq controls log output according to work units consumed rather than seconds elapsed, so two runs of the same model produce identical logs. When PrWorkFreq is nonzero, BARON ignores PrTimeFreq.

  • DeltaTerm, with DeltaT, DeltaA, and DeltaR, terminates the search when progress over a specified window of work units is insufficient. Because the window is measured in work units, the resulting heuristic termination point is reproducible (Section 10.5).

Two caveats apply. First, the seed option initializes BARON’s random number generator, which affects the selection of starting points for local searches; changing the seed changes the search path, although not the validity of the result. Second, when threads is greater than 1, reproducibility additionally also depends on the determinism of the parallel MIP subsolver [58]. For fully reproducible results, set threads to 1, fix seed, and use MaxWork rather than MaxTime.

5.7 Convergence

Under the assumptions of Section 6, particularly finite bounds on all nonlinear expressions, BARON’s algorithm converges to a global optimum [42, 50, 49]. The lower bounds generated during the search converge to the global optimal value, and the search terminates finitely at any positive tolerance. Finite termination is also guaranteed for problems in which all nonconvexities involve discrete variables or products of discrete and bounded continuous variables [27].

When bounds on nonlinear expressions are missing, BARON may be unable to construct valid relaxations. BARON detects this condition and warns explicitly that global optimality is not guaranteed (Section 13.1).

6 Model requirements

6.1 Allowable nonlinear functions

In addition to multiplication and division, BARON supports nonlinear expressions involving exp(x), ln(x), xα for real α, and βx for real β. AIMMS/BARON, AMPL/BARON, GAMS/BARON, and Oximo/BARON also handle |x| and xy, where x and y are variables automatically. For other BARON interfaces, the transformations in Section 7 can be used. Other functions, including trigonometric functions such as sin(x), cos(x), are not currently supported.

6.2 Variable and expression bounds

Nonlinear expressions in the model must have the finite bounds required to construct valid relaxations. Users should therefore provide finite lower and upper bounds for as many problem variables as possible.

Finite variable bounds alone, however, do not guarantee finite bounds on every nonlinear expression. Consider 1/x with x[0,1]; the variable is bounded, but the expression is not. Because BARON relaxes the model through intermediate quantities introduced by the factorable decomposition described in (Section 5.2), bounds on these intermediate quantities determine whether valid relaxations can be constructed.

Several common expressions can produce unbounded or undefined intermediate quantities even when all declared variable are bounded:

  • Division by an expression that can reach or approach zero. Expressions such as 1/x, y/x, and x2 require |x| to be positive. If the model implies, for example, x103, declare that bound explicitly.

  • Logarithms of expressions that can reach zero. An expression such as log(x) requires a strictly positive lower bound on x.

  • Fractional or negative powers. An expression such as x0.5 requires x0, while x1.5 requires x to remain within its valid domain and be bounded away from zero.

Variable bounds should therefore ensure that all problem functions remain finitely valued over the domain of interest. When the model does not provide sufficient bounds, BARON attempts to infer them from problem constraints. If it cannot establish the bounds needed for valid relaxations, BARON cannot guarantee global optimality and states this explicitly in its termination message. Section 13.1 provides a small example of how to diagnose and repair such a model.

7 Modeling cookbook

This section summarizes reformulations that BARON users commonly need. When a modeling system performs a reformulation automatically, this is noted below.

7.1 Functions BARON does not read directly

  • Base-10 logarithm. Use log10(x)=log10(e)log(x)=0.4342944819032518log(x).

  • Variable raised to a variable power. BARON does not directly accept xy when both x and y variables. Use xy=exp(ylog(x)), which requires x to be bounded away from zero. This reformulation is performed automatically when BARON is used under AIMMS, AMPL, GAMS, MATLAB, Oximo, or YALMIP.

  • Absolute value. BARON does not accept |x|. Use |x|=(x2)0.5. AIMMS, AMPL, GAMS, MATLAB, Oximo, or YALMIP perform this reformulation automatically when used with BARON. If x is known to be nonnegative, the absolute value is not needed; introducing one would add unnecessary nonlinearity.

  • Maximum and minimum. To model t=max(x,y), introduce a binary variable δ and a finite bound M on the deviation: tx, ty, tx+Mδ, ty+M(1δ). Model min symmetrically. If the model only requires tmax(x,y), the first two inequalities alone suffice and no binary is needed. Use this simpler formulation whenever it captures the required relationship.

  • Piecewise-linear functions. Use standard SOS2 or incremental formulations with binaries. When a modeling system offers a native piecewise-linear construct, prefer it: the formulation it generates is usually tighter than a hand-written one.

  • Trigonometric functions. These functions are not supported. Models that are periodic in an angle can sometimes be reformulated in terms of s=sinθ and c=cosθ with the constraint s2+c2=1, which BARON handles.

7.2 Formulations that help BARON

  • Tighten bounds before BARON has to. Any bound the modeler can justify is more valuable than the same bound derived at run time because it is available at the root node and in every relaxation thereafter.

  • Declare convex constraints. CONVEX_EQUATIONS lets BARON outer-approximate a constraint directly rather than relax it term by term.

  • Break symmetry. Models whose variables are interchangeable, for example assignments of identical units to identical tasks, force the search to prove optimality once per permutation. Ordering constraints that select one representative of each symmetric class often shrink the tree by orders of magnitude [47, 28].

  • Avoid gratuitous nonlinearity. x/yc with y>0 should be written xcy. (x2)0.5 should not be introduced when x0. Every nonlinear operation removed is one that need not be transformed, relaxed, or branched on.

  • Add valid redundant constraints as relaxation-only. Products of pairs of important problem constraints and problem-specific optimality conditions can substantially tighten the relaxation. Declare them with RELAXATION_ONLY_EQUATIONS so that they strengthen the bound without being used for feasibility testing or local search (Section 10.2).

7.3 Operator precedence and unary operators

The power operator is right-associative in BARON, as it is in Fortran, AMPL, and Mathematica, and left-associative in GAMS, MATLAB, and Excel:

  • x^y^z=(x^y)^z in GAMS, MATLAB, and Excel;

  • x^y^z=x^(y^z) in Fortran, AMPL, BARON, and Mathematica.

Models ported between systems should parenthesize such expressions explicitly.

A unary operator following an arithmetic operator is rejected by some compilers and accepted by others. BARON permits such expressions and assumes parentheses following the arithmetic operator through the end of the expression:

x^yzwv=x^(yz(wv)).

Here, too, explicit parentheses are strongly recommended.

8 BARON input

You can input an optimization problem to BARON in two ways:

  • Directly, using the BARON modeling language.

  • Indirectly, using one of the available BARON interfaces with AIMMS, AMPL, GAMS, JuMP, MATLAB, Oximo (Rust), Pyomo, or YALMIP.

This section describes the BARON modeling language in detail. For information on using BARON with MATLAB, see the BARON/MATLAB interface manual at http://www.minlp.com/downloads/matbar/matbar.zip. For information on using BARON with AIMMS, AMPL, GAMS, JuMP, Oximo, Pyomo, or YALMIP, consult the corresponding system websites.

8.1 Usage

BARON provides a high-level modeling language for specifying mixed-integer nonlinear optimization model in a relatively simple format. Users provide the mode in a text file. Although not required, we strongly recommend using the extension .bar for all BARON input files. Suppose the input file is called test.bar and the BARON executable is named baron. Then either command

baron test

or

baron test.bar

causes BARON to parse the file and solve the problem.

8.2 Input grammar

Follow these rules when preparing a BARON input file:

  • All statements should be terminated by a semicolon (;).

  • Reserved words must appear in uppercase letters.

  • Variable and equation names may use lower or upper case letters. The parser is case sensitive; i.e., X1 and x1 are two different variables. Option names, however, are not case-sensitive.

  • Variable and equation names should be no longer than 128 characters.

  • Variable and equation names must start with a letter.

  • String options should be no longer than 250 characters.

  • Except for underscores (_), do not use non-alphanumeric characters such as hyphens (-) in variable names.

  • Any text between // and the end of a line is ignored (i.e., it is treated as a comment).

  • The signs “+”, “-”, “*” and “/” have their usual meaning of arithmetic operations.

  • “^” is the power/exponentiation operator. If the base is a negative constant, the exponent must be an integer. See Section 7 for its associativity and the treatment of unary operators.

  • The exponential function is denoted as exp().

  • The natural logarithm is available as log() as well as ln().

  • Parentheses (“(” and “)”) may be used in any meaningful combination with operations in mathematical expressions.

  • Constraints must contain at least one expression that does not evaluate to a constant.

  • Variables must appear on only one side of the relational operator. That is, the “left-hand side” and the “right-hand side” should be pure numbers or expressions involving constants but no variables.

The input file is divided into two sections: options and problem data.

8.3 The options section

This section is optional. If used, place it before any other programmatic statements. You may specify any of BARON’s algorithmic options here. The section has the following form:

OPTIONS {
<optname1>: <optvalue1>;
<optname2>: <optvalue2>;
<optname3>: <optvalue3>;
}

Section 11 describes the option names and their corresponding values in detail. Options not specified here use their default values. You may use OPTION instead of OPTIONS.

8.4 The problem data

This section contains the data for the problem to be solved. It consists of the following parts, where the description uses the terms equations, rows, and constraints interchangeably.

  • Variable declaration: Declare all variables before using them in the input file. Use the keywords BINARY_VARIABLES, INTEGER_VARIABLES, POSITIVE_VARIABLES, and VARIABLES to declare binary, integer, positive, and free variables, respectively. In these keywords, you may use VARIABLE or VAR instead of VARIABLES, and replace the underscore with a space. Declare all discrete (binary and integer) variables before any continuous variables. For example:

    BINARY_VARIABLES y1, y2;        // 0-1 variables
    INTEGER_VARIABLES x3, x7;       // discrete variables
    POSITIVE_VARIABLES x1, x4, x6;  // nonnegative variables
    VARIABLE x5;                    // this is a free variable
    
  • Variable bounds (optional but strongly recommended; see Section 6.2): Declare variable lower and upper bounds using the keywords LOWER_BOUNDS and UPPER_BOUNDS, respectively. You may use BOUND instead of BOUNDS. For example:

    LOWER_BOUNDS{
    x7: 10;
    x5: -300;
    }
    
    UPPER_BOUND{
    x4: 100;
    }
    
  • Branching priorities (optional): Specify branching priorities using the keyword BRANCHING_PRIORITIES. The default priority for each variable is 1. BARON multiplies variable violations by the user-provided priorities before selecting a branching variable. For example:

    BRANCHING_PRIORITIES{
    x3: 10;
    x5: 0; }
    

    This input gives variable x3 higher priority than all others, while BARON will never branch on variable x5. Setting a branching priority to zero can harm BARON’s performance and is not recommended.

  • Equation declaration: Declare an identifier (name) for each equation (constraint) before using it. Use the keywords EQUATION and EQUATIONS. For example:

    EQUATIONS e1, e2, e3;
    

    Equation names follow the same naming rules as variable names; i.e., they are case-sensitive and must begin with a letter.

  • RELAXATION_ONLY_EQUATIONS <list equation names>;
    

    This optional declaration identifies constraints used only to construct relaxations. It must follow the EQUATIONS declaration and precede the equation definitions. See Section 10.2.

  • CONVEX_EQUATIONS <list equation names>;
    

    This optional declaration specifies constraints that are convex. It imust follow the EQUATIONS declaration and precede the equation definitions. See Section 10.2.

  • Equation definition: Define each equation (or inequality) declared above by preceding it with its corresponding identifier. Use == (equal to), <= (less than or equal to), or >= (greater than or equal to). You may use both <= and >= in the same equation. For example:

    e1: 5*x3 + y2 - 3*x5^3 >= 1;
    e2: y1 + 2*x4 - 2*x7 == 25.7;
    e3: -20 <= x4 + 2*y1*x3 + x6 <= 50;
    
  • Objective function: BARON optimizes a specified objective function. Users can declare it using the OBJ keyword together with minimize or maximize. For example:

    OBJ: minimize 7*x3 + 2*x6;
    
  • Starting point (optional): Specify a starting point using the keyword STARTING_POINT as follows:

    STARTING_POINT{
    x1: 50;
    x4: 100;
    x7: 300;
    }
    

8.5 Error messages

Any errors in the input file are “warnings” or “errors.” BARON attempts to continue execution after warnings. If a warning or error is severe, BARON stops execution and reports the line where the fatal error occurred. Users should review all warnings, even nonfatal ones, because BARON may have parsed the model differently than intended.

8.6 Sample input file

A sample input file for BARON is shown below:

//  This gear train design problem is taken from the GAMS test library
//
//  The goal is to design a compound gear train that achieves a specific
//  gear ratio between the driver and driven shafts. The objective
//  is to determine the number of teeth on the four gears to obtain
//  a required gear ratio of 1/6.931.
//
//  The problem originated from:
//  Deb, K, and Goyal, M, Optimizing Engineering Designs Using a
//  Combined Genetic Search. In Back, T, Ed, Proceedings of the
//  Seventh International Conference on Genetic Algorithms. 1997,
//  pp. 521-528.

INTEGER_VARIABLES  i1,i2,i3,i4;   // number of teeth in each of the gears

LOWER_BOUNDS{
i1: 12;
i2: 12;
i3: 12;
i4: 12;
}

UPPER_BOUNDS{
i1: 60;
i2: 60;
i3: 60;
i4: 60;
}

EQUATIONS  e2,e3;                       // symmetry constraints

e2:  - i3 + i4 >= 0;
e3:    i1 - i2 >= 0;

// The objective is to make the reciprocal of the gear ratio
// as close to 6.931 as possible. An ideal design will have an
// objective equal to 1.

OBJ: minimize (6.931 - i1*i2/(i3*i4))^2 + 1;

STARTING_POINT{
i1: 24;
i2: 24;
i3: 24;
i4: 24;
}

Additional examples can be found at http://www.minlp.com/download.

9 BARON output

9.1 BARON screen output

The screen output below is obtained for the MINLP model gear.bar.

===========================================================================
 BARON version 26.9.10. Built: WIN-64 2026-09-10 18:07:59
 Running on machine PONTIOS

 BARON is a product of The Optimization Firm. For more information and
 related optimization and data analytics products visit https://minlp.com.

 License file baronlice.txt is not valid for this version of BARON.
 Continuing in free version mode.
 Model size is allowable within free BARON size.

 If you publish work using this software, please cite publications from
 https://minlp.com/baron-publications, such as:

 Zhang, Y. and N. V. Sahinidis, Solving continuous and discrete
 nonlinear programs with BARON, Comput Optim Appl, 92, 1123-1161, 2025.
 https://doi.org/10.1007/s10589-024-00633-0
===========================================================================
 This BARON run may utilize the following subsolver(s)
 For LP/MIP/QP: CLP/CBC, HiGHS, ILOG CPLEX
 For NLP: IPOPT, FILTERSQP
===========================================================================
 Starting solution is feasible with a value of   36.1768
 Doing local search
 Solving bounding LP
 Starting multi-start local search
 Preprocessing found feasible solution with value 20.3805
 Preprocessing found feasible solution with value 1.04488
 Done with local search
===========================================================================
    Iter       WUs  Time (s)     Mem  Lower bound  Upper bound Progress
*      1      0.03      0.12    19MB       1.0000       1.0012   79.30%
       1      0.05      0.17    19MB       1.0000       1.0012   79.30%
*      3      0.06      0.22    19MB       1.0000       1.0002   87.41%
*      4      0.07      0.23    19MB       1.0000       1.0001   91.95%
*     11      0.10      0.33    77MB       1.0000       1.0000   99.99%
*     28      0.14      0.47    77MB       1.0000       1.0000   99.99%
      28      0.14      0.47    77MB       1.0000       1.0000  100.00%

                         *** Normal completion ***

 Wall clock time:                     0.46
 Total CPU time used:                 0.47
 Total deterministic work units:      0.14

 Total no. of BaR iterations:        28
 Best solution found at node:        28
 Max. no. of nodes in memory:         5

 All done
===========================================================================
 Unable to find/load CPLEX library cplex2212.dll.
 Using CPLEX library cplex2211.dll.

BARON first tests the feasibility of the user-supplied starting point. If this point is feasible, BARON reports this along with the corresponding objective function value; if it is infeasible, BARON prints no related message. BARON then performs a randomized local search. Whenever it finds an improved solution, BARON reports the new objective function value.

BARON then begins branch-and-bound. BARON prints log lines periodically according to three options: every PrFreq branch-and-bound iterations, and in addition, either every PrWorkFreq work units or, if PrWorkFreq is zero, every PrTimeFreq seconds. Because reporting by work units is deterministic and reporting by elapsed time is not (Section 5.6), two runs of the same model produce identical logs under the default settings. BARON also prints information whenever the incumbent improves by at least 105 and at the end of the search. During branch-and-bound, a star (*) in the first position of a line indicates that BARON found a feasible solution that improves the previous incumbent by at least 105.

The log output fields are summarized below.

Field Description
Iter The number of the current iteration. A plus (+) following the iteration number denotes reporting while solving a probing (as opposed to a relaxation) subproblem of the corresponding node.
WUs Current cumulative work units consumed. This is a deterministic measure independent of the load on the machine executing the job.
Time Current computational time in seconds. CPU time is reported for single-threaded jobs and wall clock time is reported for multi-threaded jobs. This measure may fluctuate from run to run, depending on the load on the machine executing the jobs.
Mem Amount of memory used by BARON’s data structures. This does not include memory used by external subsolvers such as CPLEX that may allocate/deallocate memory between different BARON calls.
Lower Bound Current lower bound on the model.
Upper Bound Current upper bound on the model.
Progress This is a rough estimate of the % of the branch-and-bound search that is completed. The estimate may be inaccurate in early iterations and unavailable for feasibility problems.

After searching the branch-and-reduce tree, BARON isolates the best solution and calculates a corresponding dual solution. It then reports the total number of branch-and-reduce iterations (search tree nodes), followed by the node where it identified the best solution (a -1 indicates preprocessing, as explained in Section 9.2).

9.2 Where the best solution was found

Upon normal termination, BARON reports the node where it found the optimal solution. We refer to this node as nodeopt. The log message has the following form:

  Best solution found at node:  (nodeopt)

where nodeopt can take the following values:

𝚗𝚘𝚍𝚎𝚘𝚙𝚝={3no feasible solution found,2the best solution found was the user-supplied,1the best solution was found during preprocessing,ithe best solution was found in the ith node of the tree.

9.3 BARON solution output

When BARON runs with AIMMS, AMPL, GAMS, JuMP, MATLAB, Oximo, Pyomo, or YALMIP, the corresponding interface imports BARON results directly into the modeling environment. Users of these systems can skip this section. When running BARON alone, users can read the solution from three output files:

  • The results file contains the solutions found by BARON. BARON writes each solution to this file as soon as it finds them. Variable values and dual values for variables and constraints appear in the order in which they are defined in the BARON file. At the end of this file, BARON prints a termination message, such as “*** Normal Completion ***”, followed by the best solution in two formats. The second format uses the variable names from the BARON input file.

  • The summary file contains the information printed to the screen. It also reports expressions with missing bounds, if any.

  • The time file contains a single line summarizing the solution, including a breakdown of iterations and solution times. The same information appears at the end of the summary file.

As detailed in Section 11, users control whether BARON writes any of these files and can specify their names and paths. File names must be unique for each BARON run in case of parallel runs in the same execution directory.

9.3.1 The time file

After BARON terminates, read the time file first to determine the termination status. It contains a single line with the following space-separated fields, in order:

# Field
1 ProName, the problem name.
2 Number of constraints of the optimization problem.
3 Number of variables of the optimization problem.
4 Number of constraints in one of BARON’s core reformulations of the problem.
5 Number of variables in one of BARON’s core reformulations of the problem.
6 BARON’s lower bound for the global optimum of the problem.
7 BARON’s upper bound for the global optimum of the problem.
8 BARON’s solver status; see Section 12.2.
9 BARON’s model status; see Section 12.3.
10 If model status is 4 or 5, the number of missing bounds on variables/expressions that make BARON unable to guarantee global optimality; otherwise 0.
11 Number of branch-and-bound iterations taken.
12 The node where the best solution was found, nodeopt (Section 9.2).
13 Maximum number of nodes stored in memory.
14 Total CPU time in seconds.
15 Total wall clock time in seconds.
16 Total work units consumed by the run.
9.3.2 Reading the results file

If 𝚗𝚘𝚍𝚎𝚘𝚙𝚝=3, the results file contains no solution. Otherwise, the solution can be located in the results file by starting from the end of the file and searching backward for “***” and then reading forward, one variable at a time. Variables appear in the order in which they were defined in the VARIABLES section of the BARON file. If available, BARON also reports the corresponding dual solution immediately thereafter. The file additionally provides the best primal solution using variable names. If the solution process is interrupted, for example, by Ctrl-C, the results file will contain the primal solution but may not contain the corresponding dual solution.

If BARON declares the problem as unbounded, it reports the best solution found and may also report a vertex and direction of an unbounded ray at the end of the results file.

If 𝚗𝚞𝚖𝚜𝚘𝚕>1, BARON returns the best numsol solutions found. These solutions appear immediately after the “***” described above and are ordered from worst to best. BARON may not return dual solutions for every primal solution. When a corresponding dual is available, BARON prints it immediately after the primal solution. A dual solution is typically available for the best solution found and for local optima, but not for non-KKT points, which commonly arise in practice.

When 𝚗𝚞𝚖𝚜𝚘𝚕=1 (find all feasible solutions), BARON reports solutions in the results file as soon as it finds them. These solutions appear before the “***”. To read them, search for each occurrence of “found” and read the solution that follows. Many of these solutions may not have corresponding duals. At the end of the file, i.e., after “*** Succ…”, BARON reports the best solution and its corresponding dual. This option is primarily intended for bounded integer problems. Using it for problems with continuous variables can make BARON very inefficient.

10 Features and recipes

The features described in this section use options detailed in Section 11. For details on their algorithmic implementation, see Section 5 and the bibliography at the end of this manual.

10.1 No starting point is required

Unlike many NLP algorithms, BARON does not require a feasible starting point. Users may optionally provide starting points for all or some problem variables, and BARON initializes any remaining variables automatically. Even if BARON cannot evaluate the problem functions at a user-provided starting point, it can still perform its global search.

10.2 Relaxation-only and convex constraints

Two equation declarations let users provide BARON with information about a constraint that it may not infer on its own.

Relaxation-only constraints.

BARON uses a constraint declared with RELAXATION_ONLY_EQUATIONS to strengthen the relaxation at every node. However, BARON does not use the constraint to test feasibility or pass it to the local solver during upper bounding. This declaration is intended for constraints that are valid (satisfied by every optimal solution) but redundant, so they leave the optimal solution unchanged while tightening the dual bound [44].

The canonical example is a set of first-order optimality conditions. Consider a model whose optimal solution must satisfy a stationarity condition that is expensive to enforce numerically but cheap to state. As an ordinary equation, that condition burdens every local search and feasibility test. Declared instead as

EQUATIONS e1, e2, kkt1, kkt2;
RELAXATION_ONLY_EQUATIONS kkt1, kkt2;

it does only what it is good at, which is cutting off parts of the relaxation. Products of pairs of existing constraints, and reformulation-linearization inequalities more generally belong in the same category.

A word of caution: these constraints must be valid. If a relaxation-only constraint excludes the global optimum, BARON may return a suboptimal solution without warning because it assumes the declaration is correct.

Convex constraints.

A constraint declared with CONVEX_EQUATIONS defines a convex feasible set known to the user. BARON then generates supporting hyperplanes for that set directly, rather than relaxing the constraint operation by operation through the factorable decomposition. This produces a tighter, often much tighter, relaxation that is also cheaper to build. The OutGrid option controls the number of grid points per variable used to generate these outer approximators.

The same caution applies even more strongly: if a constraint declared convex is not convex, the “supporting” hyperplanes are invalid and BARON may return an incorrect answer without warning. Declare a constraint convex only when its convexity has been established. BARON also performs its own convexity recognition. For example, it recognizes a convex function that is a sum of convex univariate terms, a norm, a quadratic with a positive semidefinite Hessian, or a log-sum-exp. Declaring these cases withCONVEX_EQUATIONS is redundant.

10.3 Finding a few of the best or all feasible solutions

BARON’s NumSol option lets users find the best few, or even all feasible, solutions to a model. The option applies to both combinatorial and continuous problems. For combinatorial problems, BARON does not rely on integer cuts to find multiple solutions. Instead, it uses a single search tree, which provides a computationally efficient way to identify multiple solutions. Because this approach also applies to continuous problems, BARON can find all feasible solutions systems of nonlinear equality and inequality constraints. Using this feature, however, can make the branch-and-bound search much slower than usual.

After solving a model with the NumSol option, users can read the solutions from the BARON results file. To illustrate this feature, consider a problem in kinematic analysis of robot manipulators [54], known as the indirect-position or inverse kinematics problem. Given the desired position and orientation of a robot hand, the problem is to determine the corresponding joint displacements. The example below uses the following system of equations for the PUMA robot:

γ1x1x3+γ2x2x3+γ3x1+γ4x2+γ5x4+γ6x7+γ7=0
γ8x1x3+γ9x2x3+γ10x1+γ11x2+γ12x4+γ13=0
γ14x6x8+γ15x1+γ16x2=0
γ17x1+γ18x2+γ19=0
x12+x221=0
x32+x421=0
x52+x621=0
x72+x821=0
1xi1,i=1,,8

where

γ1=0.004731 γ6=1 γ11=0.07745 γ16=0.004731
γ2=0.3578 γ7=0.3571 γ12=0.6734 γ17=0.7623
γ3=0.1238 γ8=0.2238 γ13=0.6022 γ18=0.2238
γ4=0.001637 γ9=0.7638 γ14=1 γ19=0.3461
γ5=0.9338 γ10=0.2638 γ15=0.3578

The first four equations are bilinear, while the last four are generalized cylinders. BARON’s method for finding all feasible solutions works well in continuous spaces when the solutions are isolated from one another. The isoltol option (default 104) specifies the isolation tolerance used to distinguish among solutions. BARON considers two feasible solution vectors different if at least one coordinate differs by at least isoltol.

The BARON file for the robot problem is as follows:

//  Filename: robot.bar
//
//  Purpose: Find all solutions of the PUMA robot problem
//  L.-W. Tsai and A. P. Morgan, "Solving the kinematics of the
//  most general six- and five-degree-of-freedom manipulators by
//  continuation methods," ASME J. Mech. Transm. Automa. Des.,
//  107, 189-200, 1985.

OPTIONS{
numsol: 20;
}

VARIABLES  x1,x2,x3,x4,x5,x6,x7,x8;

LOWER_BOUNDS{
x1: -1;
x2: -1;
x3: -1;
x4: -1;
x5: -1;
x6: -1;
x7: -1;
x8: -1;
}

UPPER_BOUNDS{
x1: 1;
x2: 1;
x3: 1;
x4: 1;
x5: 1;
x6: 1;
x7: 1;
x8: 1;
}

EQUATIONS  e2,e3,e4,e5,e6,e7,e8,e9,e10,e11,e12,e13,e14,e15,e16;


e2: 0.004731*x1*x3 - 0.1238*x1 - 0.3578*x2*x3 - 0.001637*x2 - 0.9338*x4 + x7
        <= 0.3571;

e3: 0.1238*x1 - 0.004731*x1*x3 + 0.3578*x2*x3 + 0.001637*x2 + 0.9338*x4 - x7
        <= -0.3571;

e4: 0.2238*x1*x3 + 0.2638*x1 + 0.7623*x2*x3 - 0.07745*x2 - 0.6734*x4 - x7
        <= 0.6022;

e5: (-0.2238*x1*x3) - 0.2638*x1 - 0.7623*x2*x3 + 0.07745*x2 + 0.6734*x4 + x7
        <= -0.6022;

e6: x6*x8 + 0.3578*x1 + 0.004731*x2  <= 0;

e7:  - x6*x8 - 0.3578*x1 - 0.004731*x2  <= 0;

e8:  - 0.7623*x1 + 0.2238*x2 == -0.3461;

e9: x1^2 + x2^2  <= 1;

e10: (-x1^2) - x2^2  <= -1;

e11: x3^2 + x4^2  <= 1;

e12: (-x3^2) - x4^2  <= -1;

e13: x5^2 + x6^2  <= 1;

e14: (-x5^2) - x6^2  <= -1;

e15: x7^2 + x8^2  <= 1;

e16: (-x7^2) - x8^2  <= -1;

OBJ: minimize    0;

The above problem has 14 different solutions. Looking at the BARON results file, these solutions can be found after the “*** Normal Completion ***” message.

10.4 Using BARON as a multi-start heuristic solver

To assess the difficulty of a nonlinear program, especially the possibility of multiple local solutions, modelers often perform local searches from multiple randomly generated starting points. BARON’s NumLoc option controls the number of local searches performed during preprocessing. To stop BARON after preprocessing, set MaxIter to 0.

In addition to local search, BARON’s preprocessor performs extensive range reduction. To sample the search space for local minima without range reduction, set the range reduction options TDo, MDo, LBTTDo, and OBTTDo to zero. Leaving these options at their default values, however, increases the likelihood of finding high-quality local optima during preprocessing.

If NumLoc is set to 1, BARON performs local searches from randomly generated starting points until it proves global optimality or exhausts the CPU-time or work-unit limits specified by (MaxTime and MaxWork).

For example, consider the following model:

VARIABLES  x1,x2,x3,x4,x5;

EQUATIONS  e1,e2,e3;

e1: x2^2 + x3^2 + x1 == 6.24264068711929;
e2: -x3^2 + x2 + x4 == 0.82842712474619;
e3: x1*x5 == 2;

OBJ: minimize x1^2 + (x1 - x2)^2 + (x2 - x3)^3
             + (x3 - x4)^4 + (x4 - x5)^4;

The options

OPTIONS{
numloc: 1000;
locres: 1;
maxiter: 0;
}

request a thousand local searches, ask that their outcomes be reported, and stop the run at the end of preprocessing. BARON reports:

Local search found the following     7  distinct solution value(s):
597.003735876           123  times
69.6080893018            19  times
50.9718393653           282  times
41.4464884606           108  times
24.9788095391            88  times
24.6573279371           129  times
1.28838290225           251  times

The model has seven local minima spanning more than two orders of magnitude, and the best, 1.28838290225, was reached from about a quarter of the starting points. The counts are informative in their own right: a value reached from only a handful of starting points lies in a small basin, while a model whose best value is found rarely is one for which a single local search is unlikely to suffice.

It is important to distinguish what such a run does and does not establish. It shows that a feasible point with value 1.28838290225 exists and suggests that no better one may exist. It does not prove global optimality. Multistart produces no lower bound, so only the branch-and-bound search can provide that guarantee.

10.5 Deterministic heuristic termination

Many practical runs do not need a proof of global optimality. They require a good solution and confidence that further search is unlikely to improve it. DeltaTerm provides this. When it is set to 1, BARON monitors the incumbent over a moving window of δt work units and stops when improvement over that window falls below both an absolute threshold δa and a relative threshold δr. Because BARON measures the window in work units rather than seconds (Section 5.6), the termination point is deterministic. The same model produces the same answer on every machine.

The default δt=100 is a relative specification. BARON sets the window to 100 times the work consumed through the end of root-node processing, allowing the window to adapt to the difficulty of the model rather than fixing it in advance. BARON applies the condition only after preprocessing the root node and only after finding a feasible solution, so DeltaTerm never causes BARON to terminate without a solution.

10.6 Systematic treatment of unbounded problems

If BARON declares a problem unbounded, it searchers for and may report a vertex and direction of an unbounded ray. BARON also reports the best solution found. This solution is a feasible point as far along an unbounded ray as possible without causing numerical errors from floating-point arithmetic.

10.7 Systematic treatment of infeasible problems

If BARON declares a problem as infeasible, it can identify a subset of the constraints that becomes feasible when any one of them is removed. BARON can compute such an irreducibly inconsistent system (IIS) [38] for all types of problems it handles, including linear and nonlinear, continuous and integer, convex and nonconvex, and problems with complementarity constraints. Use the CompIIS option to identify an IIS.

For example, consider the problem of minimizing the nonconvex function x1x3 over the following nonconvex constrained set:

e1: 85+0.006x2x5+0.0006x1x40.002x3x592
e2: 0.8x2x5+0.003x1x2+0.002x32=110
e3: 9+0.005x3x5+0.001x1x3+0.002x3x425
78x1102
33x245
27xi45,i=3,,5

When this problem is solved with CompIIS equal to 1, BARON provides the following infeasible set in the results file:

 IIS contains 1 row and 3 columns as follows:
  e2   Upper
  x1   Lower
  x2   Lower
  x5   Lower

The IIS consists of the lower bounds on variables x1, x2, and x5, along with the part of equality constraint e2. This suggests that constraint e2 and the entire model can be made feasible by lowering the lower bound of any of the three variables that are part of the IIS, whereas modifying the bounds of x3 would not make the model feasible.

If the problem is known to be infeasible and the user wants to identify an IIS, setting BARON’s NumLoc option to zero may improve performance. This disables BARON’s initial upper bounding search, which performs multiple local searches. Keep DoLocal nonzero to allow local search when BARON solves certain subproblems during IIS detection. Because identifying an IIS requires BARON to disable some presolve facilities, activating IIS detection for a feasible model may significantly degrade performance.

10.8 Handling of complementarity constraints

BARON automatically recognizes and exploits complementarity relationships of the form f(x)g(x)=0. The functions f and g may be univariate or multivariate, linear or nonlinear, convex or nonconvex, and may involve continuous and/or integer variables, subject to additional model constraints. BARON can also infer complementarity relationships implied by problem constraints and variable bounds. As a result, BARON can solve general mathematical programs with equilibrium constraints (MPECs) [30, 12, 18]. This class of problems includes the classical linear complementarity problem

(LCP): Find z0 and q such that Mz+q0 and zt(Mz+q)=0

as well as the more general mixed complementarity problem

(MCP): Given a function f:nn and bounds l,un with
¯={,+}, find zn and w,v+n such that
f(z)=wv,lzu,(zl)tw=0,(uz)tv=0

BARON automatically recognizes and exploits both problems without requiring users to identify the complementarities explicitly.

10.9 Parallel capabilities

For difficult problems with integer variables, BARON often spends most of its time solving MIP relaxations. Parallel solution of these MIP subproblems can therefore improve performance [58]. Thethreads option specifies the number of cores available to BARON’s MIP subsolver. Its default value is 1, which restricts the subsolver to a single core.

The threads option also applies to continuous problems for which BARON may use a MIP relaxation or reformulation. It also applies to BARON’s NLP subsolvers and other aspects of the BARON algorithm.

See Section 5.6 for the interaction between parallelism and reproducibility. Keep in mind that parallelism is often inefficient for most problems. Even highly efficient MILP solvers see diminishing returns as the number of threads increases [58, 15].

11 The BARON options

BARON options let users control termination tolerances, branching and relaxation strategies, heuristic local search frequencies, and output features, as detailed in this section. Appendix A lists every option alphabetically with its type, default value, and a one-line description.

Conventions. Unless an individual option states otherwise, tolerances must be real numbers no smaller than 1012; 0-1 indicator options accept only 0 and 1; options defined by an enumeration accept only the listed values.

11.1 Termination options

Option Description Default
EpsA (ϵa) Absolute termination tolerance. BARON terminates if |UL|ϵa, where U and L are the values of the incumbent and best estimate, respectively, for the optimization problem at the current iteration. 1e-6
EpsR (ϵr) Relative termination tolerance. BARON terminates if |UL|ϵrmax(|L|,|U|), where U and L are the values of the incumbent and best estimate, respectively, for the optimization problem at the current iteration. EpsR must be a nonnegative real. 1e-6
DeltaTerm Users can ask BARON to terminate when it makes insufficient progress over δt work units. BARON measures progress using the absolute and relative improvement thresholds δa and δr defined below. It terminates if, over δt consecutive BARON work units, the best solution does not improve by at least an absolute amount δa or a relative amount equal to δr times the incumbent value at work unit tδt. BARON applies this termination condition only after processing the root node and finding a feasible solution. Because it relies on deterministic work-unit measurements that do not depend on machine load, this option produces fully deterministic behavior. See Section 10.5. 0: do not enforce this termination condition 1: terminate if progress is insufficient 0
DeltaT (δt) If DeltaTerm is set to 1, BARON terminates if it makes insufficient progress over δt consecutive work units. If δt is nonpositive, BARON automatically sets δt equal to δt times the work units consumed through the end of root-node processing. DeltaT can take any real value. -100
DeltaA (δa) Absolute improvement termination threshold.
DeltaR (δr) Relative improvement termination threshold. 1
CutOff BARON ignores parts of the search space that contain solutions with objective values worse than CutOff. The option can take any real value. Its default is for minimization problems and for maximization problems. Supplying a valid cutoff, such as the value of a solution obtained from a heuristic, activates BARON’s range reduction machinery (Section 5.3) from the first node onward. A cutoff that is not valid, that is, one better than the true global optimum, will cause BARON to report infeasibility. ±
Target BARON may terminate as soon as a solution is identified that is at least as good as this value. Target can take any real value. The default is for minimization problems and for maximization problems. ±
AbsConFeasTol Absolute constraint feasibility tolerance. BARON considers a point feasible if each constraint and bound satisfies either the absolute or relative constraint feasibility tolerance. 1e-6
RelConFeasTol Relative constraint feasibility tolerance. This tolerance is used for general constraints and variable bounds. A point is considered feasible for a constraint or bound if its distance from that constraint or bound does not exceed the product of RelConFeasTol and the absolute value of the constraint/bound. RelConFeasTol must be a real between 0 and 0.1. 0
AbsIntFeasTol Absolute integer feasibility tolerance. All integer variable values must satisfy this tolerance. A point is considered integer feasible for a variable if integrality is satisfied using the absolute or relative integer feasibility tolerance. 1e-5
RelIntFeasTol Relative integer feasibility tolerance. All integer variable values must satisfy this tolerance. A point is considered integer feasible for a variable if integrality is satisfied using the absolute or relative integer feasibility tolerance. RelIntFeasTol must be a real between 0 and 0.1. 0
PrimalCSTol Absolute tolerance for primal complementary slackness conditions. This tolerance is used as part of BARON’s checks for local optimality conditions. 1e-7
DualCSTol Absolute tolerance for dual complementary slackness conditions. This tolerance is used as part of BARON’s checks for local optimality conditions. 1e-7
DualFeasTol Absolute tolerance for dual feasibility slackness conditions. This tolerance is used as part of BARON’s checks for local optimality conditions. 1e-6
ECTol Absolute tolerance for equilibrium condition complementarity. This tolerance is used as part of BARON’s checks for local optimality conditions. 1e-6
BoxTol Boxes will be eliminated if smaller than this tolerance. 1e-8
FirstFeas If set to 1, BARON will terminate once it finds NumSol feasible solutions, irrespective of solution quality. By default, FirstFeas is 0, meaning that BARON will search for the best NumSol feasible solutions. 0: do not enforce this termination condition 1: terminate as soon as NumSol feasible solutions are found 0
FirstLoc If set to 1, BARON will terminate once it finds a local optimum, irrespective of solution quality. By default, FirstLoc is 0, meaning that BARON will search for the best NumSol feasible solutions. When this option is set to 1, termination due to optimality tolerances may result in termination without a local minimum. 0: do not enforce this termination condition 1: terminate as soon as a local optimum is found 0
MaxIter Maximum number of branch-and-reduce iterations allowed. 1 implies unlimited. Setting MaxIter to 0 will force BARON to terminate after root node preprocessing. Setting MaxIter to 1 will result in termination after the solution of the root node. MaxIter must be an integer greater than or equal to 1. -1
MaxTime Maximum time allowed (seconds). For single-threaded jobs, i.e., when threads equals 1, this limit is enforced on CPU time consumed by the job. For multi-threaded jobs, the MaxTime limit is enforced on wall clock time. Setting MaxTime to 1 will make BARON ignore the time limit. MaxTime must be a real equal to 1 or greater than 0. A run terminated by MaxTime is not reproducible, since the point at which the limit is reached depends on machine speed and load; use MaxWork where reproducibility matters (Section 5.6). 500
MaxWork Maximum number of BARON work units allowed. A work unit is BARON’s internal, deterministic measure of computational effort; see Section 5.6. Unlike MaxTime, this limit is independent of machine speed and load, so a run stopped by MaxWork stops at exactly the same point of the search on every machine and returns exactly the same answer. Setting MaxWork to 1 will make BARON ignore the work limit. MaxWork must be a real equal to 1 or greater than 0. -1
WantDual If set to 1, BARON will return a dual solution. BARON uses an inexpensive technique to solve a KKT system for finding a dual solution corresponding to the best primal solution identified. If WantDual is set to 0, BARON may or may not return a dual solution. 1
DualBudget Maximum time allowed (seconds) for calculating a dual solution in case BARON times out and WantDual equals 1. DualBudget is in addition to MaxTime and will apply only in case the run times out and BARON does not have a dual solution for the primal solution currently at hand. DualBudget must be a real greater than or equal to 0. 0
NumSol Number of feasible solutions to be found. By default, only one solution is sought. If this option is utilized, multiple solutions can be found, possibly at the expense of (much) higher CPU time. If FirstFeas is 0, then the NumSol option will return the best NumSol solutions of the problem; if FirstFeas is 1, then NumSol option will return the first NumSol solutions identified. In both cases, solutions found will be listed in the results file and will be sorted from best to worst. If NumSol is set to 1, BARON will search for all feasible solutions to the given model. For problems with a very large number of feasible solutions, setting NumSol to 1 may exhaust the machine’s available memory and terminate prematurely. NumSol must be an integer equal to 1 or greater than or equal to 1. 1
IsolTol Separation distance between solutions. This option is used in conjunction with NumSol. For combinatorial optimization problems, feasible solutions are isolated. For continuous problems, feasible solution points within an l distance that does not exceed IsolTol > 0 will be treated as identical by BARON. 1e-4

11.2 Relaxation options

These options control how finely BARON’s convex relaxation is outer-approximated by linear inequalities; see Section 5.2. Larger values give tighter node relaxations at the cost of larger LP subproblems.

Option Description Default
NOuter1 Number of outer approximators of convex univariate functions. NOuter1 must be a nonnegative integer. 4
NOutPerVar Number of outer approximators per variable for convex multivariate functions. NOutPerVar must be a nonnegative integer. 4
NOutIter Number of rounds of cutting plane generation at node relaxation. NOutIter must be a nonnegative integer. 4
OutGrid Number of grid points per variable for convex multivariate approximators of BARON’s CONVEX_EQUATIONS (Section 10.2). OutGrid must be a nonnegative integer. 20

11.3 Range reduction options

These options control the four range reduction mechanisms described in Section 5.3. All are enabled by default, and disabling them is rarely advantageous except for diagnostic purposes or when using BARON as a multistart heuristic (Section 10.4).

Option Description Default
TDo Nonlinear-feasibility-based range reduction option (poor man’s NLPs). 0: no bounds tightening is performed 1: bounds tightening is performed 1
MDo Marginals-based reduction option. 0: no range reduction based on marginals 1: range reduction done based on marginals 1
LBTTDo Linear-feasibility-based range reduction option (poor man’s LPs). 0: no range reduction based on feasibility 1: range reduction done based on feasibility 1
OBTTDo Optimality-based tightening option. 0: no range reduction based on optimality 1: range reduction done based on optimality 1
PDo Number of probing problems allowed. -2: automatically decided by BARON 0: no range reduction by probing -1: probing on all variables n: probing on n variables -2

11.4 Tree management options

Option Description Default
BrVarStra Branching variable selection strategy. 0: BARON’s dynamic strategy 1: largest violation 2: longest edge 0
BrPtStra Branching point selection strategy. 0: BARON’s dynamic strategy 1: ω-branching 2: bisection-branching 3: convex combination of ω and bisection 0
NodeSel Specifies the node selection rule to be used for exploring the search tree. 0: BARON’s strategy 1: best bound 2: LIFO 3: minimum infeasibilities 0

Per-variable branching priorities are set in the input file through the BRANCHING_PRIORITIES section (Section 8.4).

11.5 Local search options

Option Description Default
DoLocal Local search option for upper bounding. 0: no local search is done during upper bounding 1: BARON automatically decides when to apply local search based on analyzing the results of previous local searches 1
NumLoc Number of local searches during preprocessing. The first begins from the user-specified starting point. Subsequent local searches begin from judiciously chosen starting points. If NumLoc is set to 1, BARON performs local searches during preprocessing until it proves global optimality or reaches MaxTime. If NumLoc is set to 2, BARON determines the number of local searches based on problem and NLP solver characteristics. NumLoc must be an integer greater than or equal to 2. 2

11.6 Output and file name options

During run time, BARON utilizes a number of files. The generation of some of them is optional. In all cases, file names can be controlled by the user. File names must be unique for each BARON run in case of parallel runs in the same execute directory. The contents of each file are described in Section 9.3.

Option Description Default
PrFreq Log output frequency in number of nodes. 1000000
PrTimeFreq Log output frequency in number of seconds. This form of reporting is not deterministic and is ignored whenever PrTimeFreq is nonpositive. 0
PrWorkFreq Log output frequency in amount of deterministic work units (Section 5.6). If the value of PrTimeFreq is nonpositive, the log output is reproducible across machines and runs. Set PrWorkFreq to 0 to report by elapsed time instead. If both PrWorkFreq and PrTimeFreq are positive, printing will occur as soon as either has elapsed. 30
PrLevel Option to control log output. 0: all log output is suppressed 1: print log output 1
LocRes Option to control output to log from local search. 0: no local search output 1: detailed results from local search will be printed to the results file 0
ProName Problem name. This option must be provided in double quotes and be no longer than 10 characters. problem
results Indicator if a results file is to be created. 0: do not create file 1: create file named according to the ResName option 1
ResName Name of results file to be written. This option must be provided in double quotes in the .bar file. res.lst
summary Indicator if a summary file is to be created. 0: do not create file 1: create file named according to the SumName option. 1
SumName Name of summary file to be written. This option must be provided in double quotes in the .bar file. sum.lst
times Indicator if a times file is to be created. 0: do not create file 1: create file named according to the TimName option. 1
TimName Name of times file to be written. This option must be provided in double quotes in the .bar file. tim.lst
OptName Name of options file to be written (this file is for BARON usage only during run time and is not returned to the user). This option must be provided in double quotes in the .bar file. options

11.7 Subsolver options

Option Description Default
LPSol Specifies the LP/MIP solver to be used. By default, BARON will select the LP solver and may switch between different LP solvers during the search according to problem characteristics and solver performance. A single specific LP solver can be specified by setting this option to a value other than the default. If the specified solver is not licensed, BARON will default to automatic solver selection. Which solvers automatic selection is allowed to consider is controlled by the corresponding Allow* options below. -1: automatic LP solver selection 3: CPLEX 8: CLP/CBC 15: HSL’s LA04 16: HiGHS -1
AllowCPLEX In case of automatic LP/MIP solver selection, this option can be used to selectively permit or disallow the use of CPLEX as an LP/MIP/QP subsolver. 0: do not use CPLEX for LP/MIP/QP subproblems 1: consider CPLEX for LP/MIP/QP subproblems 1
AllowCBC In case of automatic LP/MIP solver selection, this option can be used to selectively permit or disallow the use of CBC as an LP/MIP subsolver. 0: do not use CBC for LP/MIP subproblems 1: consider CBC for LP/MIP subproblems 1
AllowHiGHS In case of automatic LP/MIP solver selection, this option can be used to selectively permit or disallow the use of HiGHS as an LP/MIP/QP subsolver. 0: do not use HiGHS for LP/MIP/QP subproblems 1: consider HiGHS for LP/MIP/QP subproblems 1
AllowHSL In case of automatic LP/MIP solver selection, this option can be used to selectively permit or disallow the use of HSL’s LA04 as an LP/MIP subsolver. 0: do not use HSL’s LA04 for LP/MIP subproblems 1: consider HSL’s LA04 for LP/MIP subproblems 1
CplexLibName If utilized, this option must be supplied in double quotes and provide the entire path to the location of the CPLEX callable libraries on the user’s computer. If left unspecified and LPSol is 3, BARON will utilize standard library location facilities to locate CPLEX and use it for the solution of LP/MIP subproblems. In the latter case, the CPLEX libraries should be in the user’s LIBRARY PATH. When searching for the libraries on Windows systems, BARON will look for cplex2212.dll. On Linux systems, it will look for libcplex.so, and on MAC OSX, it will look for libcplex.dylib. If a CPLEX library named CplexLibName is not found, BARON will search for alternate versions (currently cplex2211.dll, libcplex2212.so or libcplex2212.dylib, depending on the platform). If CPLEX is still not found, BARON will resort to using CLP/CBC instead. As an alternative to the CplexLibName option, users of the stand-alone BARON code may copy the CPLEX libraries or use symbolic links to place the default library name on their user LIBRARY PATH. On Unix systems, the environment variable that controls the LIBRARY PATH is specified by $LD_LIBRARY_PATH; on OSX, it is $DYLD_LIBRARY_PATH. The CplexLibName option is not applicable to BARON under AIMMS, AMPL, or GAMS. See Section 2.5. libcplex.so cplex2212.dll libcplex.dylib
LPAlg Specifies the LP algorithm to be used. 0: automatic selection of LP algorithm 1: primal simplex 2: dual simplex 3: barrier 0
NLPSol Specifies the NLP solver to be used. By default, BARON will select the NLP solver and may switch between different NLP solvers during the search according to problem characteristics and solver performance. Any combination of licensed NLP solvers may be used in that case. A single specific NLP solver can be specified by setting this option to a value other than the default. If the specified solver is not licensed, BARON will default to automatic solver selection. -1: automatic solver selection 0: Local search based on function evaluations alone with no calls to local solvers 9: IPOPT 10: FilterSD 14: FilterSQP -1
AllowFilterSD In case of automatic NLP solver selection, this option can be used to selectively permit or disallow the use of FilterSD as an NLP subsolver. 0: do not use FilterSD for local search 1: consider FilterSD for local search 1
AllowFilterSQP In case of automatic NLP solver selection, this option can be used to selectively permit or disallow the use of FilterSQP as an NLP subsolver. 0: do not use FilterSQP for local search 1: consider FilterSQP for local search 1
AllowIpopt In case of automatic NLP solver selection, this option can be used to selectively permit or disallow the use of IPOPT as an NLP subsolver. 0: do not use IPOPT for local search 1: consider IPOPT for local search 1

11.8 Licensing options

Option Description Default
LicName License file name. If used, supply this option in double quotes with the full path to the BARON license file. If left unspecified, BARON searches the user PATH for baronlice.txt. This option does not apply to BARON under AIMMS, AMPL, or GAMS. baronlice.txt

11.9 Infeasibility diagnosis options

These options are used only when a model is, or is suspected to be, infeasible; see Section 10.7.

Option Description Default
CompIIS In case of an infeasible problem, this option can be used to search for an IIS. If this option is utilized, BARON prints the IIS it identifies in its summary file. Setting CompIIS equal to 1 works very well for most infeasible problems. Possible values are: 0: do not search for an IIS 1: the search for an IIS is based on a fast heuristic 2: an IIS is obtained using a deletion filtering algorithm 3: an IIS is obtained using an addition filtering algorithm 4: an IIS is obtained using an addition-deletion filtering algorithm 5: an IIS is obtained using a depth-first search algorithm 0
IISint When search for an IIS is requested through CompIIS, BARON assumes that that binary variable definitions are correct and interprets the IIS relative to those definitions. For general integer variables, users can choose whether BARON should treat their bounds as fixed or allow them to be questioned through the option IISint. BARON enforces integrality in either case. 0: do not consider general integers as part of an IIS 1: consider general integers (but not binaries) as part of an IIS 0
IISorder Defines the order in which problem constraints are considered in the search for an IIS. -1: auto set to aim for a small IIS depending on the value of CompIIS 1: arrange constraints in problem order 2: arrange constraints in ascending order of degree 3: arrange constraints in descending order of degree 4: random order using IISorder as seed -1

11.10 Parallelism and determinism options

Option Description Default
threads Specifies the number of cores that BARON is allowed to use for solution. By default, this option has the value of 1, meaning that a single core will be utilized. This option applies to all aspects of the BARON algorithm, including calls to any available MIP and NLP subsolvers. For instance, the value of this option is passed to CBC, CONOPT, CPLEX, and XPRESS through the options -threads, threads, CPX_PARAM_THREADS, and XPRS_THREADS, respectively. See Section 5.6 for the effect on reproducibility. 1
seed Specifies the initial seed for BARON’s random number generator. Changing the value of this option is likely to change the outcome of BARON’s randomized search steps, including starting points and solutions obtained from local search heuristics. It does not affect the validity of the results. Must be a positive integer. 19631963

11.11 Problem structure hints

These options let the modeler communicate structural knowledge that BARON may be unable infer. As with CONVEX_EQUATIONS (Section 10.2), an incorrect assertion may cause BARON to return an incorrect answer without a diagnostic.

Option Description Default
ProblemIsConvex If set to 1, this option tells BARON that the problem or its continuous relaxation is convex. Assert this only when convexity has been established. 0: do not assume that the continuous relaxation of the problem is convex 1: assume that the continuous relaxation of the problem is convex 0

12 Termination conditions, statuses, and error messages

12.1 Termination messages

Upon termination, BARON issues one of the following statements along with the nodeopt value described in Section 9.2. The corresponding numeric solver status appears in parentheses, is written to the time file, and detailed in Section 12.2.

  • *** Normal completion *** (status 1). This is the most desirable termination status. The problem has been solved within tolerances in this case. If BARON returns a nodeopt of -3, then no feasible solution exists.

  • *** Max. allowable work units exceeded *** (status 2). The user will need to increase the maximum number of allowable work units. The BARON option is MaxWork. See Section 5.6.

  • *** Max. allowable BaR iterations reached *** (status 3). The user will need to increase the maximum number of allowable iterations. The BARON option is MaxIter.

  • *** Max. allowable time exceeded *** (status 4). The user will need to increase the maximum of allowable time. The BARON option is MaxTime.

  • *** Problem is numerically sensitive *** (status 5). BARON is designed to automatically handle problems with numerical difficulties. However, for certain problems, the global optimum is numerically sensitive. This occurs, for instance, when the objective function value varies significantly over small neighborhoods of points that are strictly outside the feasible region but are nonetheless feasible within numerical tolerances. When BARON returns this message, the “Best possible” reported on the objective is likely correct.

  • *** Search interrupted by user *** (status 6). The run was interrupted by the user (Ctrl-C). The results file will contain the best primal solution found, though not necessarily a corresponding dual.

  • *** Insufficient Memory for Data structures *** (status 7). More memory is needed to set up the problem data structures. The user will need to increase the physical memory available on the computer in order to accommodate problems of this size.

  • *** Heuristic termination *** (status 12). While global optimality is not guaranteed in this case, BARON will terminate with this message when (a) a feasible solution has been found and (b) the progress of lower/upper bounds satisfies the heuristic termination criterion set by the user through BARON’s DeltaTerm option (Section 10.5).

  • *** User did not provide appropriate variable bounds ***. This message does not replace one of the termination messages above; it is printed in addition to whichever one applies, including *** Normal completion ***. When bounds are missing, BARON sets values for them itself so that the search can proceed, and reports both counts after root node processing in the following form (where the number 9 is an example and will vary from problem to problem):

    Number of missing variable or expression bounds =     9
    Number of variable or expression bounds autoset =     9
    

    The run then continues normally and may report a finite lower bound, full progress, and normal completion. None of that constitutes a proof because the relaxations were built over autoset rather than user-supplied ranges. Although BARON prints relaxation bounds on the screen to indicate convergence, these bounds may not be valid for the problem at hand. The BARON summary file identifies variables and expressions with missing bounds. Users should modify the model to provide bounds on variables and intermediate expressions that allow BARON to construct reliable relaxations. The message is accompanied by one of the following two messages:

    • *** Infeasibility is therefore not guaranteed ***. This indicates that, because of missing bounds, no feasible solution was found but model infeasibility was not proven.

    • *** Globality is therefore not guaranteed ***. This indicates that, because of missing bounds, a feasible solution was found but global optimality was not proven.

    Section 13.1 provides a worked example of diagnosing and repairing such a model.

  • *** A potentially catastrophic access violation just took place. In the unlikely event of an access violation, BARON will terminate the search and return the best known solution. Please report problems that lead to this termination condition to (info@minlp.com).

12.2 Solver status

The eighth field of the time file (Section 9.3.1) carries BARON’s solver status, which can take one of the following values:

  1. 1.

    If normal completion occurred, i.e., the problem was solved within tolerances.

  2. 2.

    If the maximum allowed number of work units was exceeded (increase maxwork).

  3. 3.

    If the maximum allowed number of iterations was exceeded (increase maxiter).

  4. 4.

    If the maximum allowed time was exceeded (increase maxtime).

  5. 5.

    If the problem is numerically sensitive.

  6. 6.

    If the run was interrupted by user (Ctrl-C).

  7. 7.

    If there was insufficient memory to setup BARON’s data structures (increase physical memory).

  8. 8.

    This return code is reserved for development purposes.

  9. 9.

    If the run was terminated by BARON.

  10. 10.

    If the run was terminated by BARON’s parser because of a syntax error in the BARON input file.

  11. 11.

    If the run was terminated because of a licensing error.

  12. 12.

    If the heuristic termination rule was invoked by the user.

12.3 Model status

The ninth field of the time file carries BARON’s model status, which can take one of the following values:

  1. 1.

    optimal within tolerances

  2. 2.

    infeasible

  3. 3.

    unbounded

  4. 4.

    intermediate feasible

  5. 5.

    unknown

If the model status is 4 or 5, the tenth field of the time file gives the number of missing bounds on variables or expressions that made BARON unable to guarantee global optimality.

13 Troubleshooting

This section is organized by symptom.

13.1 BARON reports that variable bounds are missing

This is the most common difficulty for new users. It rarely means that the user overlooked an obvious bound. More often, the constraints imply no such bound, and the user must supply one based on knowledge of the underlying problem. As the example below shows, the bound need not be tight or elaborate. A single finite value on one well-chosen variable is often enough for BARON derive the rest. Consider again the model of Section 10.4:

VARIABLES  x1,x2,x3,x4,x5;

EQUATIONS  e1,e2,e3;

e1: x2^2 + x3^2 + x1 == 6.24264068711929;
e2: -x3^2 + x2 + x4 == 0.82842712474619;
e3: x1*x5 == 2;

OBJ: minimize x1^2 + (x1 - x2)^2 + (x2 - x3)^3
             + (x3 - x4)^4 + (x4 - x5)^4;

Run as it stands, BARON does not stop. It finds the solution, announces that bounds are missing, supplies values for them itself, and completes:

 Doing local search
 Preprocessing found feasible solution with value 24.9788
 Solving bounding LP
 Starting multi-start local search
 Preprocessing found feasible solution with value 1.28838
 Done with local search
========================================================================
    Iter       WUs  Time (s)     Mem  Lower bound  Upper bound Progress
       1      0.02      0.09    13MB    -infinity       1.2884       NA
========================================================================
 User did not provide appropriate variable bounds.
 Some model expressions are unbounded.
 We may not be able to guarantee globality.
 Number of missing variable or expression bounds =     13
 Number of variable or expression bounds autoset =     13
========================================================================
       1      0.03      0.10    13MB      -395.78       1.2884       NA
      17      0.10      0.21    13MB       1.2884       1.2884  100.00%
                         *** Normal completion ***
         *** User did not provide appropriate variable bounds ***
               *** Globality is therefore not guaranteed ***

This is the outcome that requires the most caution. The run reports a normal completion, the bounds meet at 1.2884, and progress reaches 100%, yet the last line says that globality is not guaranteed. Thirteen bounds were missing, and BARON autoset all 13. The root lower bound of 395.78, and every lower bound after it, came from relaxations built over those autoset ranges and therefore need not be valid for the model the user wrote.

The reported value happens to be the global minimum, as the multistart run of Section 10.4 suggests, but this run has not proved it. A user who reads only the normal-completion message and the 100% progress indicator may draw a conclusion that the output does not support.

No variable is bounded, and none can be bounded by propagation through the constraints, primarily due to interactions between unbounded variables in the objective.

However, assigning an upper bound of 106 to x4 is enough for BARON to solve the problem:

    Iter       WUs  Time (s)     Mem  Lower bound  Upper bound Progress
       1      0.08      0.20    13MB      -17.800       24.657       NA
*      2      0.10      0.23    13MB      -17.800       1.2884       NA
      19      0.16      0.31    13MB       1.2884       1.2884  100.00%

                         *** Normal completion ***

The warning is gone, and the completion is now a proof. Note what the log shows about the root node: the first relaxation over that loose box gives a lower bound of 17.8, yet the search closes the gap in nineteen iterations.

BARON uses x4106 and constraint e2 to derive a lower bound of x2. That floor puts a floor under the one objective term that could go to , which lets the solver constrain the four even-power terms, and then every remaining variable. The precise value of the bound is almost irrelevant (30 works as well as 106). What matters is that it is finite and small enough to keep the derived bounds within BARON’s usable range.

The procedure in general.
  1. 1.

    Open the summary file and read the list of variables and expressions with missing bounds. Use this list as the diagnostic; the screen message only announces that it exists.

  2. 2.

    For each entry, identify the operation that produces it. A division, a logarithm, or a fractional power is often the culprit, as in 1/x or log(x) when the variable range reaches zero.

  3. 3.

    Supply a bound justified by the application wherever one exists. Do not invent an enormous bound merely to silence the message: a bound of 1010 may make the relaxation valid but useless, and the run will be slow rather than wrong.

  4. 4.

    Use problem insight and intuition to derive bounds. They need not be the tightest possible, as long as they are within a few instead of ten orders of magnitude of the tightest possible bounds.

  5. 5.

    If neither route works, reformulate. A term such as 1/x with x genuinely able to approach zero indicates a modeling problem, not a solver problem.

13.2 The run terminates on a limit

Check the termination message (Section 12.1) to identify which limit was reached. The reported solution remains valid. It is a feasible point, and the reported lower bound is a valid bound on the global optimum. The gap between them shows how much remains to prove.

If the gap is small, the practical remedy is usually to loosen EpsR rather than to extend the limit. If the gap is large, extending the limit alone is unlikely to help. See Section 13.3.

For reproducible experiments, users should prefer MaxWork over MaxTime (Section 5.6).

13.3 The search is slow or the bound does not move

In rough order of expected payoff:

  1. 1.

    Tighten variable bounds. See Section 4.1. Nothing else in this list is normally as effective.

  2. 2.

    Supply a cutoff or a target. If a good solution is known from any source, pass its value through CutOff; this activates range reduction from the first node. If any solution better than a threshold is acceptable, set Target.

  3. 3.

    Rescale. Bring variable ranges and constraint coefficients to comparable magnitudes.

  4. 4.

    Declare convex constraints with CONVEX_EQUATIONS, and set ProblemIsConvex if the whole continuous relaxation is convex.

  5. 5.

    Break symmetry if the model contains interchangeable entities.

  6. 6.

    Add valid redundant constraints as RELAXATION_ONLY_EQUATIONS (Section 10.2).

  7. 7.

    Accept a heuristic answer. Set DeltaTerm to 1 to stop when progress stalls (Section 10.5), or loosen EpsR.

  8. 8.

    Raise threads but don’t expect miracles from parallelization for NP-hard problems (Section 10.9).

If everything else fails, send us the .bar file with your model. We may be able to identify special structure and improve BARON’s performance for your model.

13.4 BARON returns a solution I believe is not optimal

Verify, in order:

  1. 1.

    That the termination message is *** Normal completion *** and not one of the limit or missing-bounds messages. A run stopped on a limit reports the best solution found, not the global optimum.

  2. 2.

    That no CutOff was supplied that excludes the true optimum, and no Target caused early termination.

  3. 3.

    That no constraint was declared with CONVEX_EQUATIONS that is not convex, that no RELAXATION_ONLY_EQUATIONS constraint is invalid, and that ProblemIsConvex was not asserted incorrectly. These three declarations are believed by BARON without verification, and an incorrect one produces a wrong answer silently.

  4. 4.

    That the tolerances EpsA and EpsR are as tight as the application requires. A solution within 106 relative tolerance may still differ visibly from the optimum when the objective is large.

  5. 5.

    That the model as parsed is the model intended: check the summary file, and check for the precedence pitfalls of Section 7.

If you still believe BARON is making an incorrect optimality claim, send us the .bar file with your model. We may be able to identify a bug or address numerical issues for that type of model.

13.5 BARON declares my model infeasible

Use CompIIS to obtain an irreducibly inconsistent system (Section 10.7). The IIS localizes the inconsistency to a small subset of constraints and bounds. An infeasibility report is not reliable if BARON issued the missing-bounds message. In that case, BARON also reports *** Infeasibility is therefore not guaranteed ***.

If you still believe BARON is making an incorrect infeasibility claim, send us the .bar file with your model. We may be able to identify a bug or address numerical issues for that type of model.

13.6 Results differ between machines or between runs

See Section 5.6. Set threads to 1, fix seed, replace MaxTime with MaxWork, and leave PrWorkFreq nonzero. Confirm that both runs use the same BARON version and the same subsolvers. For example, a machine with CPLEX installed and one without may select different LP subsolvers under the default LPSol setting.

BARON is compiled conservatively to facilitate reproducibility. However, differences in hardware or operating systems may lead to small differences in round-off processes and therefore different search paths or different solutions. All reported solutions obtained remain valid within the specified termination tolerances.

If you still believe BARON is returning inconsistent solutions, send us the .bar file with your model so that we can investigate possible causes.

Appendix A: Alphabetical option index

Every BARON option, with its type, default value, and a one-line description. Options marked GAMS are available only with GAMS/BARON. See Section 11 for full descriptions.

Option Type Description Default
AbsConFeasTol real Absolute constraint feasibility tolerance. 1e-6
AbsIntFeasTol real Absolute integer feasibility tolerance. 1e-5
AllowCBC 0-1 Permit CBC as LP/MIP subsolver under automatic selection. 1
AllowCPLEX 0-1 Permit CPLEX as LP/MIP/QP subsolver under automatic selection. 1
AllowExternal 0-1 Permit the external GAMS NLP solver (GAMS). 1
AllowFilterSD 0-1 Permit FilterSD as NLP subsolver. 1
AllowFilterSQP 0-1 Permit FilterSQP as NLP subsolver. 1
AllowHiGHS 0-1 Permit HiGHS as LP/MIP/QP subsolver. 1
AllowHSL 0-1 Permit HSL’s LA04 as LP/MIP subsolver. 1
AllowIpopt 0-1 Permit IPOPT as NLP subsolver. 1
AllowMinos 0-1 Permit MINOS as NLP subsolver (GAMS). 0
AllowSnopt 0-1 Permit SNOPT as NLP subsolver (GAMS). 0
AllowXPRESS 0-1 Permit XPRESS-MP as LP/MIP subsolver (GAMS). 1
BoxTol real Boxes smaller than this are eliminated. 1e-8
BrPtStra integer Branching point selection strategy. 0
BrVarStra integer Branching variable selection strategy. 0
ClockType string Clock used when reporting time to GAMS (GAMS). wall
CompIIS integer Search for an irreducibly inconsistent system. 0
CplexLibName string Path to the CPLEX callable library. platform
CutOff real Ignore solutions worse than this value. ±
DeltaA real Absolute improvement threshold for heuristic termination.
DeltaR real Relative improvement threshold for heuristic termination. 1
DeltaT real Work-unit window for heuristic termination. 100
DeltaTerm 0-1 Enable heuristic termination on insufficient progress. 0
DoLocal 0-1 Local search during upper bounding. 1
DualBudget real Extra time (sec) allowed for computing a dual after a timeout. 0
DualCSTol real Dual complementary slackness tolerance. 1e-7
DualFeasTol real Dual feasibility tolerance. 1e-6
ECTol real Equilibrium condition complementarity tolerance. 1e-6
EpsA real Absolute termination tolerance. 1e-6
EpsR real Relative termination tolerance. 1e-6
equclass integer Per-constraint class: regular, relaxation-only, convex (GAMS). 0
ExtNLPSolver string GAMS NLP solver used when NLPSol=6 (GAMS). CONOPT
FirstFeas 0-1 Stop at the first NumSol feasible solutions. 0
FirstLoc 0-1 Stop at the first local optimum. 0
GDXOut string GDX file prefix for multiple solutions (GAMS).
IISint 0-1 Consider general integers as part of an IIS. 0
IISorder integer Constraint ordering used in the IIS search. 1
IsolTol real Separation distance between distinct solutions. 1e-4
LBTTDo 0-1 Linear feasibility-based range reduction. 1
LicName string BARON license file name/path. baronlice.txt
LocRes 0-1 Print detailed local search results to the results file. 0
LPAlg integer LP algorithm: auto, primal, dual, barrier. 0
LPSol integer LP/MIP subsolver selection. 1
MaxIter integer Maximum branch-and-reduce iterations; 1 unlimited. 1
MaxTime real Maximum time in seconds; 1 unlimited. 500
MaxWork real Maximum deterministic work units; 1 unlimited. 1
MDo 0-1 Marginals-based range reduction. 1
NLPSol integer NLP subsolver selection. 1
NodeSel integer Node selection rule. 0
NOuter1 integer Outer approximators of convex univariate functions. 4
NOutIter integer Rounds of cutting plane generation per node. 4
NOutPerVar integer Outer approximators per variable, multivariate case. 4
NumLoc integer Local searches performed in preprocessing. 2
NumSol integer Number of feasible solutions sought; 1 for all. 1
OBTTDo 0-1 Optimality-based range reduction. 1
OptName string Name of the run-time options file. options
OutGrid integer Grid points per variable for CONVEX_EQUATIONS. 20
PDo integer Number of probing problems; 2 automatic. 2
PrFreq integer Log frequency in nodes. 1000000
PrimalCSTol real Primal complementary slackness tolerance. 1e-7
PrLevel 0-1 Print or suppress all log output. 1
ProblemIsConvex 0-1 Assert convexity of the continuous relaxation. 0
ProName string Problem name, at most 10 characters. problem
PrTimeFreq integer Log frequency in seconds; ignored if nonpositive or if PrWorkFreq0. 0
PrWorkFreq integer Log frequency in deterministic work units. 30
RelConFeasTol real Relative constraint feasibility tolerance. 0
RelIntFeasTol real Relative integer feasibility tolerance. 0
ResName string Name of the results file. res.lst
results 0-1 Whether to create the results file. 1
seed integer Seed of BARON’s random number generator. 19631963
SumName string Name of the summary file. sum.lst
summary 0-1 Whether to create the summary file. 1
Target real Stop as soon as a solution this good is found. ±
TDo 0-1 Nonlinear feasibility-based range reduction. 1
threads integer Number of cores BARON may use. 1
TimName string Name of the times file. tim.lst
times 0-1 Whether to create the times file. 1
WantDual 0-1 Return a dual solution for the best primal solution. 1

Bibliography

  • [1] AIMMS. AIMMS Modeling Language, Current as of 3 August, 2026. http://www.aimms.com/.
  • [2] X. Bao, A. Khajavirad, N. V. Sahinidis, and M. Tawarmalani. Global optimization of nonconvex problems with multilinear intermediates. Mathematical Programming Computation, 7:1–37, 2015.
  • [3] X. Bao, N. V. Sahinidis, and M. Tawarmalani. Semidefinite relaxations for quadratically constrained quadratic programming: A review and comparisons. Mathematical Programming, 129:129–157, 2011.
  • [4] A. Brooke, D. Kendrick, and A. Meeraus. GAMS–A User’s Guide. The Scientific Press, Redwood City, CA, 1988.
  • [5] M. R. Bussieck, A. S. Drud, and A. Meeraus. MINLPLib–A collection of test models for mixed-integer nonlinear programming. INFORMS Journal on Computing, 15:114–119, 2003.
  • [6] R. H. Byrd, J. Nocedal, and R. A. Waltz. KNITRO: An integrated package for nonlinear optimization. In Large-Scale Nonlinear Optimization, Di Pillo G., Roma M. (eds.), Springer, Boston, MA, pages 35–59, 2006.
  • [7] COIN-OR Project. CBC Coin Branch and Cut programming solver, Current as of 3 August, 2026. https://github.com/coin-or/Cbc.
  • [8] COIN-OR Project. FilterSD Coin FilterSD solver, Current as of 3 August, 2026. https://github.com/coin-or/filterSD.
  • [9] A. Drud. CONOPT 3.17A, User’s Manual. ARKI Consulting and Development A/S, Bagsvaerd, Denmark, 2016.
  • [10] I. Dunning, J. Huchette, and M. Lubin. JuMP: A modeling language for mathematical optimization. SIAM Review, 59:295–320, 2017.
  • [11] J. M. Elble and N. V. Sahinidis. Scaling linear optimization problems prior to application of the simplex method. Computational Optimization and Applications, 52:345–371, 2012.
  • [12] F. Facchine and J. S. Pang. Finite-Dimensional Variational Inequalities and complementarity Problems. Springer Verlag, New York, NY, 2003.
  • [13] FICO. FICO® Xpress Optimization Suite, Current as of 3 August, 2026.
    http://www.fico.com/en/products/fico-xpress-optimization-suite/.
  • [14] R. Fourer, D. M. Gay, and B. W. Kernighan. AMPL: A Modeling Language for Mathematical Programming. Duxbury Press, Pacific Grove, CA, 2nd edition, 2003.
  • [15] G. Glockner. Parallel and Distributed Optimization with Gurobi Optimizer, Current as of 3 August, 2026. https://assets.gurobi.com/pdfs/webinar-parallel-and-distributed-optimization-english.pdf.
  • [16] P. E. Gill, W. Murray, and M. A. Saunders. User’s Guide for SNOPT 7: A FORTRAN Package for Large-Scale Nonlinear Programming. Technical report, University of California, San Diego and Stanford University, CA, 2008.
  • [17] W. E. Hart, C. D. Laird, J.-P. Watson, D. L. Woodruff, G. A. Hackebeil, B. L. Nicholson, and J. D. Siirola, editors. Pyomo—Optimization Modeling in Python. Springer-Verlag, New York, 2nd edition, 2017.
  • [18] J. Hu, J. E Mitchell, J.-S. Pang, K. P. Bennett, and G. Kunapuli. On the global solution of linear programs with linear complementarity constraints. SIAM Journal on Optimization, 19:445–471, 2008.
  • [19] Q. Huangfu and J. A. J. Hall. Parallelizing the dual revised simplex method. Mathematical Programming Computation, 10:119–142, 2018.
  • [20] IBM. CPLEX Optimizer, 2023.
  • [21] J. Löfberg. YALMIP, Current as of 3 August, 2026. https://yalmip.github.io/.
  • [22] A. Khajavirad, J. J. Michalek, and N. V. Sahinidis. Relaxations of factorable functions with convex-transformable intermediates. Mathematical Programming, 144:107–140, 2014.
  • [23] A. Khajavirad and N. V. Sahinidis. Convex envelopes of products of convex and component-wise concave functions. Journal of Global Optimization, 52:391–409, 2011.
  • [24] A. Khajavirad and N. V. Sahinidis. Convex envelopes generated from finitely many compact convex sets. Mathematical Programming, 137:371–408, 2013.
  • [25] A. Khajavirad and N. V. Sahinidis. A hybrid LP/NLP paradigm for global optimization relaxations. Mathematical Programming Computation, 10:383–421, 2018.
  • [26] M. Kılınç and N. V. Sahinidis. State-of-the-art in mixed-integer nonlinear programming. In T. Terlaky, M. Anjos and S. Ahmed (eds.), Advances and Trends in Optimization with Engineering Applications, MOS-SIAM Book Series on Optimization, SIAM, Philadelphia, pages 273–292, 2017.
  • [27] M. Kılınç and N. V. Sahinidis. Exploiting integrality in the global optimization of mixed-integer nonlinear programming problems in BARON. Optimization Methods and Software, 33:540–562, 2019.
  • [28] A. Kuznetsov and N. V. Sahinidis. Nonconvex optimization problems involving the Euclidean norm: Challenges, progress, and opportunities. SIAM Review, 2025. Accepted.
  • [29] A. Lodi and A. Tramontani. Performance variability in mixed-integer programming. TutORials in Operations Research, pages 1–12, 2014.
  • [30] Z. Q Luo, J. S. Pang, and D. Ralph. Mathematical Programs with Equilibrium Constraints. Cambridge University Press, Cambridge, United Kingdom, 1996.
  • [31] G. P. McCormick. Computability of global solutions to factorable nonconvex programs: Part I—Convex underestimating problems. Mathematical Programming, 10:147–175, 1976.
  • [32] G. P. McCormick. Nonlinear Programming: Theory, Algorithms and Applications. John Wiley & Sons, 1983.
  • [33] B. A. Murtagh and M. A. Saunders. MINOS 5.5 User’s Guide. Technical Report SOL 83-20R, Systems Optimization Laboratory, Department of Operations Research, Stanford University, CA, 1995.
  • [34] C. J. Nohra, A. U. Raghunathan, and N. V. Sahinidis. Spectral relaxations and branching strategies for global optimization of mixed-integer quadratic programs. SIAM Journal on Optimization, 31:142–171, 2021.
  • [35] C. J. Nohra, A. U. Raghunathan, and N. V. Sahinidis. SDP-quality bounds via convex quadratic relaxations for global optimization of mixed-integer quadratic programs. Mathematical Programming, 196:203–233, 2022.
  • [36] C. J. Nohra and N. V. Sahinidis. Global optimization of nonconvex problems with convex-transformable intermediates. Journal of Global Optimization, 72:255–276, 2018.
  • [37] Y. Puranik and N. V. Sahinidis. Bounds tightening based on optimality conditions for nonconvex box-constrained optimization. Journal of Global Optimization, 67:59–77, 2017.
  • [38] Y. Puranik and N. V. Sahinidis. Deletion presolve for accelerating infeasibility diagnosis in optimization models. INFORMS Journal on Computing, 29:754–766, 2017.
  • [39] Y. Puranik and N. V. Sahinidis. Domain reduction techniques for global NLP and MINLP optimization. Constraints, 22:338–376, 2017.
  • [40] R. Fletcher and S. Leyffer. User manual for filterSQP, Current as of 3 August, 2026. https://www.mcs.anl.gov/~leyffer/papers/SQP_manual.pdf.
  • [41] H. S. Ryoo and N. V. Sahinidis. Global optimization of nonconvex NLPs and MINLPs with applications in process design. Computers & Chemical Engineering, 19:551–566, 1995.
  • [42] H. S. Ryoo and N. V. Sahinidis. A branch-and-reduce approach to global optimization. Journal of Global Optimization, 8:107–139, 1996.
  • [43] H. S. Ryoo and N. V. Sahinidis. Analysis of bounds for multilinear functions. Journal of Global Optimization, 19:403–424, 2001.
  • [44] N. V. Sahinidis and M. Tawarmalani. Accelerating branch-and-bound through a modeling language construct for relaxation-specific constraints. Journal of Global Optimization, 32:259–280, 2005.
  • [45] H. Schichl and A. Neumaier. Interval analysis on directed acyclic graphs for global optimization. Journal of Global Optimization, 33:541–562, 2005.
  • [46] H. D. Sherali and W. P. Adams. A Reformulation-Linearization Technique for Solving Discrete and Continuous Nonconvex Problems, volume 31 of Nonconvex Optimization and its Applications. Kluwer Academic Publishers, Dordrecht, 1999.
  • [47] H. D. Sherali and J. C. Smith. Improving discrete model representations via symmetry considerations. Management Science, 47:1396–1407, 2001.
  • [48] M. Tawarmalani and N. V. Sahinidis. Convex extensions and convex envelopes of lower semi-continuous functions. Mathematical Programming, 93:247–263, 2002.
  • [49] M. Tawarmalani and N. V. Sahinidis. Convexification and Global Optimization in Continuous and Mixed-Integer Nonlinear Programming: Theory, Algorithms, Software, and Applications. Kluwer Academic Publishers, Dordrecht, 2002.
  • [50] M. Tawarmalani and N. V. Sahinidis. Global optimization of mixed-integer nonlinear programs: A theoretical and computational study. Mathematical Programming, 99:563–591, 2004.
  • [51] M. Tawarmalani and N. V. Sahinidis. A polyhedral branch-and-cut approach to global optimization. Mathematical Programming, 103:225–249, 2005.
  • [52] The MathWorks, Inc. MATLAB 2015a. http://www.mathworks.com/.
  • [53] The Optimization Firm, LLC. NLP and MINLP test problems, Current as of 3 August, 2026. https://minlp.com/nlp-and-minlp-test-problems.
  • [54] L.-W. Tsai and A. P. Morgan. Solving the kinematics of the most general six- and five-degree-of-freedom manipulators by continuation methods. ASME J. of Mechanisms, Transmissions and Automation in Design, 107:48–57, 1985.
  • [55] A. Wächter and L. T. Biegler. On the implementation of an interior-point filter line-search algorithm for large-scale nonlinear programming. Mathematical Programming, 106:25–57, 2006.
  • [56] Y. Zhang and N. V. Sahinidis. Solving continuous and discrete nonlinear programs with BARON. Computational Optimization and Applications, 92:1123–1161, 2025.
  • [57] Y. Zhang, N. V. Sahinidis, C. J. Nohra, and G. Rong. Optimality-based domain reduction for inequality-constrained NLP and MINLP problems. Journal of Global Optimization, 77:425–454, 2020.
  • [58] K. Zhou, M. Kılınç, X. Chen, and N. V. Sahinidis. An efficient strategy for the activation of MIP relaxations in a multicore global MINLP solver. Journal of Global Optimization, 70:497–516, 2018.
  • [59] K. Zorn and N. V. Sahinidis. Global optimization of general nonconvex problems with intermediate bilinear substructures. Optimization Methods and Software, 29:442–462, 2013.
  • [60] K. Zorn and N. V. Sahinidis. Global optimization of general nonconvex problems with intermediate polynomial substructures. Journal of Global Optimization, 59:673–693, 2014.