Skip to main content

BARON Frequently Asked Questions

Welcome, Anonymous

This page is for general questions about using BARON and solutions to common error messages. For further technical support, please contact info@minlp.com.

Getting Started

BARON (short for Branch And Reduce Optimization Navigator) is a global optimization solver developed by The Optimization Firm. It is designed to find globally optimal solutions to a broad class of mathematical programming problems–including LP, NLP, MIP, and MINLP–and is the leading solver for MINLPs. Since 2001, BARON has been used by Fortune 500 companies, national research labs, and universities worldwide.

BARON supports the following operating systems:

  • Windows
  • Linux
  • macOS (OS X)

You can download platform-specific executables from the BARON Downloads page.

BARON runs on 64-bit CPUs and is designed to be lightweight in hardware requirements. While exact resource needs depend on the problem, BARON can solve many models with just a few hundred megabytes of RAM. It uses dynamic memory allocation and will notify you if a problem exceeds your system's available resources.

To set up BARON:

  1. Download the executable from minlp.com/baron-downloads for your platform (Windows, Linux, or macOS).
  2. Place the BARON executable in a directory of your choice, like C:\baron\.
  3. Add that directory to your system PATH so BARON can be called from the command line or modeling environments like Pyomo or JuMP.
  4. Install your license file (baronlice.txt) in the same directory as the BARON executable or in your home directory.
  5. Verify the installation by running baron from a terminal or command prompt. You should see version and usage information.

For more help integrating BARON, see the relevant sections in this FAQ.

Yes, BARON can be used completely offline. Once it is installed with a license on your machine, it does not require an internet connection to run.

Licensing

To license BARON:

  • Go to minlp.com/baron-licenses to view licensing options, then email sales@minlp.com to purchase a license.
  • You will receive a license file named baronlice.txt by email. Save it in one of the following locations:
    • In the same directory as the BARON executable, or
    • In your home directory (e.g., C:\Users\YourName\ on Windows or ~/ on Linux/macOS).
  • Run BARON to confirm that your license is active. If not, a license error message will appear. For help, see the Error Messages and Support section below or contact info@minlp.com.

Free academic licenses are currently available only to individuals affiliated with Carnegie Mellon University, the University of Illinois at Urbana-Champaign, or the University System of Georgia.

However, all academic users receive discounted academic pricing on BARON licenses. These licenses are fully featured with no restrictions on problem size. 

For details, visit the BARON Licenses page.

Yes. When you purchase a BARON license, you receive free upgrades and technical support for the duration of your license. For perpetual licenses, you can renew your maintenance after the first year to continue receiving updates and support. Renewal is strongly recommended to ensure ongoing access to the latest features and fixes.

Yes, BARON licenses are issued on a per-user basis, not per machine. This means you may install and use BARON on multiple machines—like a desktop, laptop, and across a computing cluster—as long as only the licensed user is using the software. If multiple people want to use BARON, you must have a multi-user license.

Problem Scope

BARON uses a branch-and-reduce algorithm, which it pioneered in the 1990s, to solve MINLP problems to global optimality. This approach combines techniques like branch-and-bound, convex relaxations, and domain reduction to systematically eliminate regions of the search space that cannot contain the global optimum.

BARON's algorithmic innovations have set the standard in global optimization, and many other solvers have since followed its approach.

For a deeper explanation of the methods behind BARON, visit our BARON Publications page.

Yes. As long as your objective function and constraints are provided in algebraic form, BARON can solve MINLP problems that include linear inequality constraints. To see examples, visit the BARON Downloads page.

Yes, BARON can solve problems with many mixed-integer or binary variables and nonlinear (including quadratic) objective functions. Its global optimization algorithms are designed for exactly this type of problem.

However, whether BARON can solve a specific problem efficiently depends on the structure and difficulty of the model, not just its size.

BARON proves infeasibility only when a valid relaxation—such as a linear, integer, or convex nonlinear relaxation—is infeasible. It does not rely on local solutions of nonconvex subproblems or solver timeouts, as these do not provide formal infeasibility certificates.

Most infeasibility proofs come from infeasible LP relaxations or infeasibilities identified through constraint propagation. BARON includes safeguards to ensure that its solvers do not make false infeasibility claims, maintaining the rigor of its global infeasibility results.

BARON guarantees global optimality for a broad class of factorable nonlinear programs—problems that can be written as recursive compositions of sums and products of univariate functions such as powers, exponentials, and logarithms. These guarantees hold as long as the domains of all functions are bounded.

For more details, see Section 2 of the BARON User Manual, and explore the BARON Optimization Test Problems for examples of solvable models.

Yes, during its search for the global optimum, BARON may identify multiple local optima. It reports all improving local optima in the screen log and results file, and at the end of the run, returns the best local optimum found.

There is no fixed limit on the size of problems BARON can solve. Its ability to handle large-scale models depends on the structure and complexity of the problem, not just the number of variables or constraints.

BARON has successfully solved problems with hundreds of thousands of variables and constraints, especially when the model is well-structured. It uses dynamic memory allocation and will notify the user if a problem exceeds the available hardware resources.

Yes, BARON supports parallel computing when solving MINLPs that include integer variables. During the lower bounding step of its algorithm, BARON can run solvers like CPLEX or CBC in parallel mode, automatically utilizing multiple CPU cores to improve performance.

No, BARON requires algebraic expressions for both the objective function and constraints. It cannot be used for problems where evaluations rely on external simulators or models without explicit equations. This applies across all modeling languages, including Pyomo and MATLAB.

However, The Optimization Firm is planning to offer a separate tool for black-box (derivative-free) optimization in the future.

Usage Tips

No, BARON's parser does not support iterative model construction—all variables and constraints must be defined explicitly. For large models, users typically generate BARON input files programmatically using C, C++, or other languages, or use modeling interfaces like Pyomo or MATLAB, which offer more convenient ways to handle large-scale formulations.

No, BARON does not provide tools for converting problem formulations to other formats like AMPL or GAMS.

Use BARON's file name options to set custom paths. For example:

  • On UNIX/Linux/macOS:

    TimName: "/home/username/mytim.lst";
  • On Windows:

    TimName: "C:\Users\username\mytim.lst";

You can set similar options for BARON's results, summary, and other output files.

BARON writes temporary files during execution using default filenames, unless specified otherwise. You can control file names and locations using BARON’s output and file name options (see Section 7.6 in the BARON manual).

Set the ProName option in your model:

model = Model(() -> BARON.Optimizer(ProName = "PATH_TO/MY_FILE.bar"))

This saves the .bar file to the specified path and prevents it from being deleted.

Pyomo Interface

Using BARON with Pyomo is simple—just replace the solver name in your existing Pyomo code (e.g., change IPOPT to BARON).

For a small usage example, see e03.py.

For additional resources:

Configuring BARON in Pyomo is the same as with other solvers. You can try something like this example.

You can pass BARON options using the options keyword in the solve method. For example, to set a time limit of 1000 seconds:

results = SolverFactory('baron').solve(model, options={'MaxTime': 1000})

You can use this method to set any option listed in the BARON User Manual.

Pyomo supports passing starting points to solvers, including BARON. To do this, assign .value attributes to your model variables before calling the solver. BARON does not require starting values for all variables—you can specify only those you want to initialize. Pyomo will automatically include these values when generating the BARON input file.

To view BARON’s progress in real time, use the tee=True option in your solve command. To keep all temporary files generated during the run, also include keepfiles=True. For example:

results = SolverFactory('baron').solve(model, tee=True, keepfiles=True, options={'MaxTime': 1000})

If you want BARON to return multiple feasible solutions (with increased computational time), see the NumSol option in the user manual.

Use Pyomo's keepfiles=True option to view the .bar file generated for BARON. Refer to this example.

Error Messages and Support

This error typically means BARON cannot proceed due to a licensing issue. Common causes include:

  • No license file is found. BARON cannot locate baronlice.txt in the expected directory.
  • The license file exists but is expired or invalid.
  • You are using the demo version, which restricts model size or type and does not support the problem you are attempting.

To fix this, make sure you have a valid baronlice.txt file in the correct location and that your license matches your BARON version and usage. Contact BARON support at info@minlp.com if you are unsure.

This usually means there is a mismatch between your BARON version and the license file. Most likely, you are running an older version of BARON, but your new license is valid only for newer versions.

To resolve this:

  • Remove the older BARON version from your system, or
  • Update your system PATH to prioritize the latest BARON version that matches your license.

BARON shows this error when it cannot locate the required baronlice.txt license file. To resolve it:

  1. Check your system PATH – Ensure the directory containing baronlice.txt is included in your PATH environment variable.
  2. Use the LicName option – You can explicitly tell BARON where to find the license file:

On UNIX/Linux: LicName: "/home/username/baronlice.txt";

On Windows: LicName: "C:\Users\username\baronlice.txt";

Include this line in the OPTIONS section of your .bar file, or configure your modeling system (e.g., Pyomo, GAMS) to pass this option directly to BARON.

This error may occur due to formatting issues or version mismatches. Common causes include:

  • Corruption from editing – Some Windows text editors (like Notepad) may introduce extra characters or line endings.
    ➤ Solution: Recopy the license file to the correct location without opening or modifying it in an editor.
  • Version mismatch – You might be using a BARON version older than the license's effective date.
    ➤ Solution: Make sure you're using a BARON version released after the license date. Consider updating to the latest version.

Pyomo relies on the BARON executable being in your system PATH. If it is not found, follow these steps:

Check your PATH by running:

echo $PATH

This shows the directories Pyomo searches for executables.

  • Add BARON to your PATH.
    If BARON is installed in, say, /usr/local/baron, add it like this:

    export PATH=/usr/local/baron:$PATH
  • Make it permanent.
    Add the above line to your ~/.bashrc or ~/.bash_profile to preserve it across sessions.

After this, restart your terminal, and Pyomo should be able to locate BARON.

This issue usually occurs when BARON cannot locate the required CPLEX library files on your system. To resolve it:

  1. Add the CPLEX library folder to your system’s dynamic library path, not just the PATH.
    • On Linux, update LD_LIBRARY_PATH.
    • On Windows, ensure the DLL folder is in your system environment variables.
  2. Use the cplexlibname option to explicitly specify the library location. For example:
    • On Linux: cplexlibname: "/opt/ibm/ILOG/CPLEX_Studio221/cplex/bin/x86-64_linux/libcplex2211.so";
    • On Windows: cplexlibname: "C:\Program Files\ibmcplex\cplex2211.dll";
  3. Allow time for changes to take effect, or restart your terminal/session if needed.

Include this option in your .bar file or pass it through your modeling interface.

Please visit our MATLAB/BARON FAQ Page for solutions to common error messages and setup issues. If you need additional assistance, contact info@minlp.com for technical support.

This error may indicate that the license is not valid or the executable is corrupted. To troubleshoot:

  • Run BARON from the command line to verify the installation:

    For example, on Windows, open the Command Prompt (cmd), then navigate to the folder where baron.exe is installed, and run: baron.exe path-to-your-input-file

If the error persists, consider reinstalling BARON or checking file permissions in the working directory.

If CompIIS appears to have no effect, check the results file—this is where BARON reports the Irreducible Infeasible Set (IIS), not the standard output.

Make sure:

  • You are using a recent version of BARON that supports CompIIS.
  • The results file is being properly generated and reviewed.

Please email info@minlp.com for assistance. To help us diagnose the issue more effectively, include the following in your message:

  • A screenshot of any warning or error messages
  • Your .bar file (if BARON runs) related to the problem

This information helps our technical team investigate and provide targeted support.