On 5/13/2013 12:10 AM, Maninder wrote: > Hi Alan, > I have some similar doubts and would appreciate if you could give some > suggestions > > I am using Genetic Algorithm for optimization of a computationally > expensive fitness function which also has constraints . I am right now > imposing constraints in the form of penalty in to the objective > function since constraint violation can only be calculated at the end > of the function evaluation. I wanted to use nonlcon rather to satisfy > the constraints. > > But my problem is that the fitness function evaluation is expensive > and I cant afford to do it again for checking of constraint violation. > I have seen some nested function formulations where using output > function I can accumulate all the individual variable values for every > generation. > > As per what I was thinking, would it be possible to have sort of a > matrix in which I can store all the individual values at the beginning > of a generation update that matrix while my fitness evaluations and > when I call nonlcon for constraint evaluation, then to look up that > updated matrix for constraint violation. While I am trying to > implement this, I have some doubts. > > 1) I remember reading in some forum that outputfcn for Genetic algo > can be called either at the beginning of a generation or at the end. > By default, it is at the end. I wont be able to execute my method if > it calls at the end. Sadly I am not able to find how to call the > outputfcn at the beginning rather than the end of a generation. > > 2) Since my fitness function is computationally expensive, I am using > Parallel evaluations. So Would it be possible to implement the above > mentioned idea while using parallel option in matlab or it would > create some difficulties??
As for your particular tentative approaches, you have to be careful calling parfor with data files, you might have to use spmd commands or some other parallel construct. Sorry, I am not an expert on parallel computation in MATLAB.
Alan Weiss MATLAB mathematical toolbox documentation