How to use nested function in main program as constraint for a Genetic Algorithm that optimizes the main?

3 views (last 30 days)
This is my main program:
function CDG=fuzz(a,b)
CDG=10*sum(b);
%code%
[a,b,c]=function flow(a,b)
[d,e,f]=function shrt(b)
end
The flow(a,b) and shrt(b) functions are in separate function-files. I'm using simple GA to minimize CDG. How to do this considering that a,b,c,d,e and f must be passed as constraint to the GA. The GA population vector is b.

Answers (1)

Alan Weiss
Alan Weiss on 19 Mar 2013
If you are looking for information about how to pass parameters, see this section. If you are looking for something else, feel free to ask again.
Alan Weiss
MATLAB mathematical toolbox documentation
  5 Comments
Alan Weiss
Alan Weiss on 25 Mar 2013
Again, I am having trouble understanding you. You say your constraints are functions of x such as g(x). To me, g(x) is a function, not a constraint. A constraint would be something like g(x) < 0. Therefore, it sounds to me as if you have a nonlinear constraint g(x) < 0. This is a supported type of constraint; see this section of the documentation.
Again, I urge you to look at the link on avoiding double evaluation of the objective and constraints.
Good luck,
Alan Weiss
MATLAB mathematical toolbox documentation
Bramer
Bramer on 25 Mar 2013
Thanks, your suggestion did help me although the problem still remains. Deb's NSGA-II paper mentions a scheme for handling constraints (i.e. not just bound constraints on the decision variables, but "constraint functions"). This is what I'm talking about. Matlab's gamultiobj is supposed to be NSGA-II based, why doesn't it have a 'constraint functions' options? Further the simple GA can have integer variables but gamultiobj doesn't. This is queer.

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!