The code of the optimizer is a complete C/C++ stand-alone package written
in pure structural programmation style. There is no call to fortran, external,
unavailable, expensive libraries. You can compile it under unix or windows. The
only library needed is the standard TCP/IP network transmission library based
on sockets (only in the case of the parallel version of the code) which is available
on almost every platform. You don't have to install any special libraries such
as MPI or PVM to build the executables. The clients on different platforms/OS'es
can be mixed together to deliver a huge computing power.
The code has been highly optimized (with extended use of memcpy function, special
fast matrix manipulation, fast pointer arithmetics, and so on...). However, BLAS
libraries have not been used to allow a full Object-Oriented approach. Anyways,
the dimension of the problems is rather low so BLAS is un-useful. OO style programming
allows a better comprehension of the code for the possible reader. The linear-algebra
package is NOT LaPack. It's a home-made code inspired by LaPack, but optimized
for C++ notations.
A small C++ SIF-file reader has also been implemented (to be able
to use the problems coded in SIF from the CUTEr database,
An AMPL interface has also been implemented. This is currently the most-versatile
and most-used language for mathematical programming (It is used to describe objective
If you are able to describe your problem in AMPL or in SIF, it means that the
time needed for an evaluation of the objective function is light (it's
NOT a high-computing-load objective function). You should thus use an other optimizer,
like the one described in annexe in Section 13.9.
The AMPL and SIF interface are mainly useful to test the code.
The fully stand-alone code is currently available at my homepage:
Frank Vanden Berghen