File Exchange

image thumbnail

INTSOLVER: An interval based solver for Global Optimization

version (44.2 KB) by Tiago Montanher
Interval based functions to solve small global optimization problems with guaranteed bounds.


Updated 03 Sep 2009

View License

We present a set of functions based on interval arithmetic to solve small size global optimization problems with guaranteed bounds on solutions. Interval analysis can be used to bound ALL solutions of nonlinear optimization problem, equality constrained or not as well to bound ALL solutions of a nonlinear system of equation. Our functions can deal with these problems using an implementation of the interval Newton method with a bissection scheme. The capabilities of our functions can be showed through the analysis of some important global optimization examples that we provide with the main functions.

Comments and Ratings (5)

Dear Tiago,

I have downloaded your library and I found a bug in it.

I am trying to find global minima of a function which is a fraction. I know that the global optimum is in [0, pi].

The problem is that the denominator evaluated with interval operations contains zero. This results in a problem with the Hessian.

The value of the eH variable in the 187-th line of intminunc is as follows

intval Hessian value eH.x =
intval Hessian first derivative(s) eH.dx =
intval Hessian second derivative(s) eH.hx =

After this, the svd decomposition fails and I could not get around this problem with trivial modifications.

If you intend to fix the issue and you need more details on reproducing it, let me know.


I'm trying to run the code
f = @(x) (x(1)^2+ x(2)^2 - 1)^2 + (x(1)^2 - x(2))^2
x0 = [infsup(-10,10), infsup(-10,10)];
x = intminunc(f, x0)
which was provided by the author. However, I got the error message as below
Cannot find an exact (case-sensitive) match for 'isNaN'.
Do you want: isnan......?
Error in nullgs (line 72)
if all(isNaN(y))

Error in intminunc (line 417)
[XNew, gap, info] = nullgs(XNew, mx, b, M);
Anyone can help?

Dear Dmitrey,

Thank you for use my intsolver and point some issues on it. I observed that you found some problems which make Intsolver works improperly. I will work on that and post a correction as soon as possible.


free (even for commercial usage) solver interalg ( seems to work tens-hundreds-thousands times faster and is more stable, the bench is provided there.


Excuse me,I've Intlab and insolver in my machine, I've a problems with Insolver, I want to solve a nolinear system of equations with intksolve.m, and intksolve.m, because the result isn't an interval, it's solution of real numers not intervals. see this:

>> x0 = [infsup(-10,10), infsup(-10,10), infsup(-10,10), infsup(-10,10)];
f = @(x) [-2*(x(1)+x(2)-x(3)-1)-2*(x(1)+x(2))-10*x(1)+2*x(4),-2*(x(1)+x(2)-x(3)-1)-2*(x(1)+x(2)),2*(x(1)+x(2)-x(3)-1)+x(4), 2*x(1)+x(3)]
x = intksolve(f, x0)
f =
@(x) [-2*(x(1)+x(2)-x(3)-1)-2*(x(1)+x(2))-10*x(1)+2*x(4),-2*(x(1)+x(2)-x(3)-1)-2*(x(1)+x(2)),2*(x(1)+x(2)-x(3)-1)+x(4), 2*x(1)+x(3)]
intval x =
0.1428 0.2142 -0.2857 0.7142

I need to obtain the interval solution of x(1),x(2)... x(4)
What I have to do?
I need the article of hansen& greenberg for information about your implementation (intsolve) for free thanks

MATLAB Release Compatibility
Created with R2008b
Compatible with any release
Platform Compatibility
Windows macOS Linux

Discover Live Editor

Create scripts with code, output, and formatted text in a single executable document.

Learn About Live Editor