Genetic Algorithm (SGA) Constraints Calculated in Parallel in Fitness Function

14 views (last 30 days)
I'm performing an optimization where some of my constraints can only be calculated in parallel to the cost function. My fitness function consists of a number of modules which calculate a variety of parameters to ultimately return a single value of the fitness function and some supplemental parameters to check it's validity across a number of criteria. Not only do these constraints ensure that the value of the cost function is acceptable (i.e. the answer given by the module is converged) but also that it satisfies other multidisciplinary criteria.
In this case the constraint(s) in question cannot be calculated prior to the fitness function since they have to be calculated for each individual.
Hypothetically these should be nonlinear inequality constraints, however in my program right now they basically act as nested "if" statements where when triggered equate the fitness function to an extremely high value. I don't believe this is correct, but cannot find any alternatives.
Currently the pseudo code is basically:
  • -> Fitness function calls modules to calculate fitness value and other parameters (I'll call them nested constraints)
  • -> if value is not converged, fitness value = maximized
  • -> if nested constraint 1 equality/inequality not satisfied, fitness value = maximized
  • ...
  • -> if nested constraint n equality/inequality not satisfied, fitness value = maximized
  • -> return fitness value. GA continues...
I've found hints to look into either penalty function methods or nesting another optimization scheme in the fitness function however I cannot seem to find much information on how to implement these.
Any suggestions?
Thanks.

Answers (0)

Products

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!