# Rigorous global optimisation: First release of \`IntervalOptimisation.jl\`

**URL:** https://discourse.julialang.org/t/rigorous-global-optimisation-first-release-of-intervaloptimisation-jl/4336
**Category:** Optimization (Mathematical)
**Created:** [June 18, 2017, 1:24pm UTC](https://discourse.julialang.org/t/rigorous-global-optimisation-first-release-of-intervaloptimisation-jl/4336 "2017-06-18T13:24:29Z")
**Posts on this page:** 6
**Page:** 1

<div class="post-metadata">

### Author: ![dpsanders](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dpsanders/32/3573_2.png) [@dpsanders](https://discourse.julialang.org/u/dpsanders)
#### Post date: [June 18, 2017, 1:24pm UTC](https://discourse.julialang.org/t/rigorous-global-optimisation-first-release-of-intervaloptimisation-jl/4336/1 "2017-06-18T13:24:29Z")

</div>

I am excited to announce the first release of the [`IntervalOptimisation.jl`] ([https://github.com/JuliaIntervals/IntervalOptimisation.jl](https://github.com/JuliaIntervals/IntervalOptimisation.jl)) package, which performs (box-constrained) global optimisation for functions, including non-smooth functions, of one or several variables in a **rigorous** (guaranteed) way. Lower and upper bounds are given for the global minimum, as well as the location(s) of the minimizer(s).

This is done using interval methods, based on the `IntervalArithmetic.jl` package, also part of the `JuliaIntervals` organisation. (That package recently received a speed boost [on master branch] of around 3x, thanks to Jeffrey Sarnoff’s [FastRounding.jl](https://github.com/JeffreySarnoff/FastRounding.jl) package.)

In particular, the package contains a reasonably efficient implementation of the Moore-Skelboe [“branch and bound”](https://en.wikipedia.org/wiki/Branch_and_bound) algorithm, which seems to be quite fast for low-dimensional functions. Julia allows, as usual, a very clean, readable implementation, and allows us to easily experiment with different versions and algorithms.

In the near future, methods to find all maxima / minima of a function will be added.  
Constrained global optimisation would also be possible, by combining this with IntervalConstraintProgramming.jl; I will discuss both packages in my JuliaCon talk on Wednesday.  
I am, of course, very interested in trying out hard test problems and in any other collaborations.

**Note on spelling** : The package name uses the British English spelling “optimiSation”, with `s`. The functions `minimise` and `maximise` provided by the package have American English aliases `minimize` and `maximize`, with `z`.

**Note for Windows users** : Currently, all of the `JuliaIntervals` packages should work on Windows, but will be slow when using elementary functions (`sin`, `exp` etc.), since they fall back to using `BigFloat`s (i.e. the MPFR package).  
This would be fixed by providing a compiled version of the `CRlibm` library and interfacing it from the `CRlibm.jl` package. Any help with this (e.g. during JuliaCon) will be appreciated.

---

<div class="post-metadata">

### Author: ![juliohm](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/juliohm/32/215266_2.png) [@juliohm](https://discourse.julialang.org/u/juliohm)
#### Post date: [June 18, 2017, 8:25pm UTC](https://discourse.julialang.org/t/rigorous-global-optimisation-first-release-of-intervaloptimisation-jl/4336/2 "2017-06-18T20:25:12Z")

</div>

I find it super strange to write “Optimisation” with a “s” instead of a “z”. Why did you choose the British spelling?

Thanks for the package!

---

<div class="post-metadata">

### Author: ![mzaffalon](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mzaffalon/32/214168_2.png) [@mzaffalon](https://discourse.julialang.org/u/mzaffalon)
#### Post date: [June 18, 2017, 8:30pm UTC](https://discourse.julialang.org/t/rigorous-global-optimisation-first-release-of-intervaloptimisation-jl/4336/3 "2017-06-18T20:30:26Z")

</div>

Maybe because he is British?

---

<div class="post-metadata">

### Author: ![dpsanders](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dpsanders/32/3573_2.png) [@dpsanders](https://discourse.julialang.org/u/dpsanders)
#### Post date: [June 18, 2017, 8:32pm UTC](https://discourse.julialang.org/t/rigorous-global-optimisation-first-release-of-intervaloptimisation-jl/4336/4 "2017-06-18T20:32:59Z")

</div>

Since it is causing problems for tab-completion, I will probably end up removing the Americani(s/z)ed aliases.

---

<div class="post-metadata">

### Author: ![juliohm](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/juliohm/32/215266_2.png) [@juliohm](https://discourse.julialang.org/u/juliohm)
#### Post date: [June 18, 2017, 8:40pm UTC](https://discourse.julialang.org/t/rigorous-global-optimisation-first-release-of-intervaloptimisation-jl/4336/5 "2017-06-18T20:40:54Z")

</div>

@mzaffalon I am Brazilian, but my packages are given names in American English. I don’t see a very good reason. Anyways, this discussion is getting off-topic.

Thank you @dpsanders again for the contribution.

Cheers,

---

<div class="post-metadata">

### Author: ![DNF](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dnf/32/10191_2.png) [@DNF](https://discourse.julialang.org/u/DNF)
#### Post date: [June 18, 2017, 10:21pm UTC](https://discourse.julialang.org/t/rigorous-global-optimisation-first-release-of-intervaloptimisation-jl/4336/6 "2017-06-18T22:21:23Z")

</div>

I learned some time ago that ‘-ise’ isn’t really any more British than ‘-ize’, and that ‘-ise’ is more of a neologism that is supplanting the more traditional ‘-ize’ in the UK and Australia.

The OED, for example, prefers ‘-ize’: [Oxford Languages | The Home of Language Data](http://blog.oxforddictionaries.com/2011/03/ize-or-ise/)

Now, I use the ‘-ize’ ending, particularly in my code, for historical reasons, but, more importantly, to promote consistency of spelling.

A more opinionated piece: [It's time to recognize and internalize the US suffix 'ize'](http://theconversation.com/its-time-to-recognize-and-internalize-the-us-suffix-ize-19828)
