OPTI Toolbox Wiki

If you are interested in optimization, use MATLAB and like free stuff, OPTI could be for you. See the What Is OPTI section for details on solving linear, nonlinear, continuous and discrete optimization problems using MATLAB!

To get right into it, jump to the downloads page!

Apologies while our Wiki was down. Something went wrong with one of the add-ins (BlogIt) and it took a while to track and fix.

OPTI Downloads should be available again.

Version 2.21 has just been released with minor updates. Changes include:

  • Rebuilt all solvers against MKL v11.3 R3
  • Fixed bug when nleq cannot accept x0 = zeros(n,1) during function testing (B. Duarte)
  • Fixed bug where fixed binary variables were written as normal binary variables in MPS files
  • Fixed bug where binary variables were not handled correctly by intlinprog
  • Fixed bug where SNLE problems not handled correctly by MATLAB solvers
  • Increased precision in writing MPS files
  • Updated coinRead to correctly identify binary variables

Version 2.20 has just been released with minor updates. Changes include:

  • The toolbox now only supports 64bit MATLAB[1] (mexw32 binaries no longer supplied)
  • Rebuilt all solvers against MKL v11.3 R2
  • Rebuilt all solvers in R2013a with Visual Studio 2015 & Intel XE 2016
  • Added primal and dual bounds to SCIP return arguments
  • Updated CLP to 1.16.10
  • Updated CBC to 2.9.8
  • Updated IPOPT to 3.12.4
  • Updated BONMIN to 1.8.4
  • Updated NOMAD to 3.7.2
  • Updated SCIP to 3.2.1 (note even more sensitive to unbounded problems now)
  • Updated RMathlib to 3.2.4
  • Updated CppAD source to 20160321
  • Updated VSBuilder to support Visual Studio 2015 and Intel XE 2016
  • Fixed bug plotting 1D maximization problems
  • Fixed bug in opti_scipasl returning the wrong status code and message (F. Bastos)
  • Improved compatibility with R2016a

[1] Older (Open Source) versions of OPTI that support 32bit MATLAB can be downloaded from Dropbox .

Version 2.16 has just been released with minor updates. Changes include:

  • Updated CBC to v2.9.5
  • Updated BONMIN to v1.8.3
  • Updated SCIP to v3.2.0 (note change in return codes if using scip directly)
  • Fixed bug when nlcon cannot accept x0 = zeros(n,1) during function testing (A. Khalid)
  • Minor bug fixes

I've had a few questions regarding White Box optimization using solvers like SCIP and BARON, so I have written a Wiki page explaining how they work with OPTI. Grab a cup of coffee and have a read.

Version 2.15 has just been released with several updates.

Changes include:


  • checkSolver has been renamed to optiSolver, same API.
  • Rebuilt all solvers against MKL v11.2 R3 and Visual Studio 2013
  • Updated and tidied supplied documentation, mostly on this Wiki now.
  • Updated CLP to v1.16.6
  • Updated CBC to v2.9.4
  • Updated IPOPT to v3.12.3
  • Updated BONMIN to v1.8.2
  • Updated SCIP to v3.1.1
  • Updated RMathlib to v3.2.0
  • Updated CppAD Source to 20150429

New Functionality

  • Added ability to set SCIP options. Check scipset in MATLAB, and this example.

Bug Fixes

  • Fixed bug in convBonmin when supplying options from another solver (G.Tsoukalas)
  • Fixed bug in >=R2014b when plotting OPTI plots with bounds
  • Fixed bug in >=R2014b when plotting quadratic constraints
  • Fixed bug with bintprog no longer available in R2014b
  • Fixed bug with orange line in data fitting plots in R2014b

I have created a new repository on GitHub for OPTI: https://github.com/jonathancurrie/OPTI

The repository will contain the latest version of the toolbox as I push my updates to it. However it will not contain the most recent MEX files - you must download the official toolbox version to get these (or compile them yourself).

Version 2.12 has just been released with minor updates. Changes include:

  • Added warning to problems which did not solve correctly.
  • Updated CLP to v1.16.5, removed Aboca support (MATLAB does not play with Intel XE 2015)
  • Updated CBC to v2.9.3
  • Updated IPOPT to v3.12.1
  • Updated BONMIN to 1.8.1
  • Re-added CLP to be able to solve QPs (earlier bug appears fixed)
  • Rebuilt all solvers against MKL v11.2 R2

Note the development of new features in OPTI has effectively ended with this release. I will continue to maintain OPTI, and answer questions, but I simply don't have the time to write new functionality (goodbye being a student!).

In the near future the OPTI source will be moving to Github. Keep an eye on the announcements.

Version 2.11 has just been released with minor updates. Changes include:

  • Rebuilt all solvers against MKL v11.2 R0
  • Added SymBuilder Examples page
  • Added extra error information to SCIP function processing
  • Fixed bug in SCNLE sparse test (thanks Stephen)
  • Fixed bug in confidence bound plotting with unsorted xdata
  • Fixed bug in DNLS problems with initialT ignored for single sampling rate problems

Version 2.10 has just been released with numerous updates. As before, please let me know if you encounter any problems with the new version so I can correct ASAP!

Changes include:


  • Reorganised OPTI folder structure to reduce the number of folders
  • Removed support for LIPSOL and QSOPT (too many LP solvers already)
  • Removed supplied demos, replaced with updated examples
  • Rebuilt all solvers against MKL v11.1 R3
  • Updated IPOPT to v3.11.8
  • Updated NLOPT to v2.4.2
  • Data fitting weights are now treated as sqrt(weights) internally

New Functionality

  • Added RMathLib with a library of statistical functions
  • Added ability to calculate fit statistics for NLS/DNLS problems - See NLS Example 7
  • Added simple fitting object optifit
  • Added automatic plotting of confidence bounds on curve fitting problems - See this NLS Example
  • Added C/C++ code generation (including automatic derivatives via CppAD) from SymBuilder models
  • SymBuilder now identifies QCQP models
  • Added experimental function optisym for symbolic derivative generation
  • Added support for intlinprog (2014a) including opti_ overload

Bug Fixes

  • Fixed options bug in opti_nomad with Inf bounds (M. Porcelli)
  • Fixed bug in SymBuilder with 0.5 in quadratic programs
  • Fixed bug in Cbc incorrectly missing infeasibility in some models
  • Fixed bug in derivative checker with Hessian with no NL constraints