A Fortran Implementation of an Ant Colony Optimization Algorithm for General Optimization

Version 2.0 (2011)


MIDACO is a black-box optimizer, specially developed for mixed integer nonlinear programs (MINLPs). As the class of MINLPs covers purely continuous and purely combinatorial optimization problems, MIDACO can be employed on a wide range of optimization problems. Its usage is particularly intended for global optimization problems, where the problem formulation is unknown (true black-box) or invokes critical properties like non-convexity, discontinuities, flat spots or stochastic distortions.

Numerical Method

The underlying algorithm is based on a stochastic Gauss approximation technique (also known as Ant Colony Optimization) and its combination with the oracle penalty method. It's development was focused especially on constrained mixed integer nonlinear programming (MINLP) problems, but due to the generality of this problem class, the software is well applicable on many different kind of optimization problems. MIDACO is constructed as a derivative free black-box solver, handling all its parameter by itself.

Program Organization

Originally, MIDACO is a double precision Fortran subroutine where all parameters are passed through subroutine arguments. Problem functions and gradients must be provided by the user by reverse communication.

Special Features

  • reverse communication
  • full documentation
  • Matlab, Fortran, C/C++ versions available
  • features massive parallelization options for various computer architectures like multicore CPUs, HPC or GPU (CUDA, FERMI)
  • selects all parameters by autopilot mode, which also includes automatic internal restarts to escape from local solutions or to refine the solution quality


MIDACO has been used for example on various space applications (interplanetary missions, vehicel launch maneuvers, heat shield protection systems) and distillation column sequencing.


  • M. Schlueter, M. Gerdts, The oracle penalty method, Journal of Global Optimization, Vol. 47, 293-325 (2010)