excel solver
optimization
simulation
solver dll downloads, genetic algorithms

   solver.com

Frontline Systems, Inc.  

quadratic programming, portfolio optimization, quadratic solver 
Developers of Your Spreadsheet's Solver  
robust optimization, stochastic programming, simulation optimization
   

Solver Platform SDK - Hybrid Evolutionary/Classical Solver


optimization, solver, DLL, Visual Basic

 
Home
Register
What's New
Solver Tutorial
Solver Technology
Select a Product
Excel Users
MATLAB Users
Developers
Government Users
Academic Users
Press/Analysts
Privacy Policy
 

 

 


The Solver Platform SDK includes Frontline's hybrid Evolutionary / Classical Solver to solve nonsmooth optimization problems -- that may include any kind of computation (for example, table lookups) in the objective or constraints.

Solving Nonsmooth Problems

The Evolutionary Solver uses genetic algorithm methods to solve nonsmooth optimization problems that cannot be handled effectively by the GRG nonlinear Solver engine, or similar gradient-based methods.  And where a "classical" Solver would find only a locally optimal solution, this Solver will often find globally optimal -- or near-optimal -- solution.  And it also handles integer variables and the "alldifferent" constraint.  To use the Evolutionary Solver instead of the GRG nonlinear Solver, you simply set the problem's Engine property to the correct element of the Engines collection:

problem.Engine = problem.Engines["Evolutionary"];

If you're programming in a procedural language such as C, you can accomplish the same thing with:

SolverProbEngineSet (problem, L"Evolutionary");

But this Solver is much more than a genetic or evolutionary algorithm -- it also uses "classical" optimization methods to solve for constraints and improve local solutions.  The result is breakthrough performance, better than virtually any genetic or evolutionary algorithm alone.

To learn more, click on Genetic Algorithms and Evolutionary Algorithms - Introduction

The hybrid Evolutionary/Classical Solver uses genetic algorithm methods such as mutation, crossover, selection and constraint repair, but it also uses deterministic, gradient-free direct search methods, classical gradient-based quasi-Newton methods, and even the Simplex method for linear subsets of the constraints.  The classical methods sometimes yield rapid local improvement of a trial solution, and they also help to solve for sets of constraints. This enables the hybrid Evolutionary/Classical Solver to handle problems with many (even hundreds of) constraints, which are typically beyond the capabilities of genetic and evolutionary algorithms alone.

Statistics on Population of Solutions

In the Solver Platform SDK, the FinalValue properties of the Variable and Function objects give you detailed information about the single "best solution" returned by the Solver.  But the Evolutionary Solver maintains a population of candidate solutions -- and you can access statistics on this population at the end of the solution process, through properties of the Statistics object.  For example, in C#:

Statistics VarStat = problem.Variables["MyVars"].Statistics;
for (i=0; i<n; i++) m_Log.Dump("Mean = " + VarStat.Mean[i]);

If you're programming in a procedural language such as C, you can accomplish the same thing with:

SolverVarStatistics (problem, L"MyVars", ..., Mean, ...);
for (i=0; i<n; i++) printf ("Var %d Mean = %g\n", i, Mean[i]);

The results returned by these functions can give you insight into the performance of the Evolutionary Solver as well as the characteristics of your model, and help you decide whether additional runs of the Solver are likely to yield even better solutions.

Back to Solver Platform SDK Product Overview

  evolutionary algorithms   pattern search, gradient search
spreadsheet solver
scarce resources