As of yesterday the ILNumerics Optimization Toolbox is out and online! It’s been quite a challenge to bring everything together: some of the best algorithms, the convenience you as a user of ILNumerics expect and deserve, and the high performance requirements ILNumerics sets the scale on for. We believe that all these goals could be achieved quite greatly.

During a lengthy beta phase we received a whole bunch of precise and enormous helpful feedback from you. We really appreciate that and again would like to say thanks!

ILNumerics Optimization Toolbox adds a number of functions to ILNumerics, useful to find solutions of common optimization problems. Since everything is nicely integrated into ILNumerics it helps you solve the problem easily and very efficiently. Optimization applications like the one shown as screenshot above can now get realized in a couple of minutes!

This blog post sheds some light on the very first steps for using the new Optimization Toolbox. It helps you to start quickly and lists some common documentation sources.

## Obtaining the Optimization Toolbox

The optimization toolbox is available as a dedicated package and so must be individually purchased and installed. ILNumerics 4.6 or above is needed for that to work. Existing customers can evaluate the new toolbox by installing an extended trial on top of your existing ILNumerics Ultimate VS installation. Just let us know and we will lead you the way to the download. Another option is the trial: it includes all toolboxes, hence you can start right away by downloading and installing a trial of ILNumerics Ultimate VS and get familiar with all optimization methods easily.

## Optimization Toolbox Setup

The optimization toolbox obviously depends on the ILNumerics Computation Engine. It installs the managed assemblies ILNumerics.Optimization.dll into the GAC and also makes them available inside Visual Studio as reference to your application projects:

Afterwards, the ILNumerics.Optimization class is found in the ILNumerics namespace which commonly is included in your source files anyway. A super-mini but complete starting example in a fresh new C# console application could look as follows:

using System; using ILNumerics; namespace ConsoleApplication1 { class Program : ILMath { static ILRetArray<double> myObjFunc(ILInArray<double> A) { using (ILScope.Enter(A)) { return sum((A - 1) * A); } } static void Main(string[] args) { ILArray<double> M = Optimization.fmin(myObjFunc, ones(1,4)); Console.WriteLine(M); } } }

Note how we derived our console class from ILNumerics.ILMath! This allows us to omit the namespace.class identifier and ‘ILMath.sum’ and ‘ILMath.ones’ become just: ‘sum’ and ‘ones’.

If you are lucky enough to use Visual Studio 2015, it will allow you the inclusion of the static ILNumerics.Optimization class into your ‘using’ directives on top of your source code files also. This will inject all public functions of the Optimization class into your scope also which gives an even shorter syntax. ‘fmin’ and all other optimization functions are now readily available right next to the common ILMath functions:

That’s it already! Happy optimizing!

## Optimization Examples

A number of example applications have been added to the examples section. Basically, they accompany the corresponding online documentation and let you follow the tutorials step by step on your own machine.

In order to start with an example application, you download the example as a zip package and extract it into a new folder on your local machine. Open the ‘*.csproj’ contained in the example package with Visual Studio. You will notice missing references in the References node of your project in the Solution Explorer:

Just remove these old references and replace them with references to the files actually installed on your system – using the common method described above.

Hit F5 and run the example!

## Documentation

The ILNumerics Optimization Toolbox online documentation is available here:

http://ilnumerics.net/ilnumerics-optimization-toolbox.html

The API /class documentation for all functions of ILNumerics.Optimization is available here:

http://ilnumerics.net/apidoc/?topic=html/T_ILNumerics_Optimization.htm

## Wrap up

We gave a short introduction in how to obtain and install ILNumerics Optimization Toolbox for ILNumerics Computing Engine. We pointed you to the common places of examples and documentation.

If you run into trouble or have useful suggestions and feedback, let us know! Contact sales@ilnumerics.net for any licensing questions.