Darwin Optimization Framework


Darwin optimization framework is based on fast messy Genetic Algorithm (fmGA) solver, which has been developed and applied to a number of optimization modeling tools including Darwin Calibrator, Darwin Designer and Darwin Scheduler for water distribution optimization. These applications employ the same solver of fmGA and share the similar architecture. fmGA optimization solver is decoupled from the specific applications and developed as a generic, scalable and extensible optimization solver. The common optimization solver is further generalized and implemented as parallel optimization framework.

Darwin Optimization Framework can be downloaded at the following links

Darwin optimization framework (version 0.9) user manual

Darwin optimization framework (version 0.9) installation files (Currently unavailable)

Darwin optimization framework is developed to meet the following criteria.

1) Generic Framework: The framework provides an architecture which has a strong decoupling between the problem definition and the framework. The framework can be used to solve any optimization problem.

2) Parallel Architecture: The framework provides application independent from the parallel optimization framework. All the parallel computation is done inside the framework. User needs minimum knowledge about parallel computing.

3) Graphical User Interface: In addition a generic parallel framework, it also has a generic user interface which allows a user to set all the optimization controls. The user interface also provides a runtime optimization convergence updates to the user.

Figure 1 Darwin Optimization User Interface

Parallel computation model

A manager/worker model, as shown in Figure 2, is implemented for parallel genetic optimization. After GA initialization, manager process sends chromosomes to worker processes where EPS and fitness calculation is performed for solution evaluation. Then manager process collects the fitness value of chromosomes from worker processes. The manager process is also responsible for GA operations (selection and reproduction) to search for the optimal chromosome based on the searching criteria. A task parallelism model is implemented over a cluster of computers or processes so that we can greatly enhance our computation capability while making the best use of computer resources. MPI is employed as the communication API among computers. The communication and computation scope for manager/worker task parallelism is as follows.

1) Manager process sends chromosomes to worker processes for evaluation.

2) Worker process performs solution evaluation.

3) Worker processes sends the fitness value back to manager process.

4) Manager process searches for the optimal chromosome based on fitness value.

 Figure 2 Manager-worker Parallel Computation Model

MPI is employed for high-performance, easy-to-use implementation of the framework. It provides support for all of the .NET languages, and offers significant extensions, such as automatic serialization of objects, so that it makes far easier to build parallel programs. The framework is desired to have the following characteristics.

1) Generalized Parallel Executable and decoupled GA engine. All the parallel computation is done in the Generic Parallel Executable. The GA engine is the dynamically linked library (DLL) that comprises fmGA library. The DLL is readily extensible to incorporate other optimization methods.

2) Thin Client UI. The Thin client UI uses the framework to start the optimization solver. It specifies the input file to define decision variables and the number of processes to run the application in parallel. It is responsible for starting the generalized parallel executable using mpiexec.

3) User defined DLL. The framework allows a user to specify the objective functions and the constraints based on what the problem is. This is achieved using a user defined DLL. This DLL defines the objective functions and the constraints. It accepts the decision variables from the parallel executable and returns the objective function values and the constraints back to the framework.

Darwin optimization framework demo

 Darwin (version 0.91) Demo 

 Darwin (version 0.9) Optimization Framework Demo