What exactly does mutationadaptfeasible do in genetic algorithm?

I am using MATLAB to optimize an objective function with genetic algorithm. Because I have a lower bound for the variable, I am using mutationadaptfeasible to do mutations. The website explains mutationadaptfeasible: "The mutation chooses a direction and step length that satisfies bounds and linear constraints."
Unfortunately, this is a little handwavy to me. Could someone kindly explain what exactly mutationadaptfeasible does? I tried Google, but it seems that there are only similar questions left unanswered .

 Accepted Answer

You can read the source.
dbtype(which('mutationadaptfeasible'))

5 Comments

Thanks for answering! Right, I tried reading it, but it takes some time to understand. I think MATLAB should document this and shouldn't expect normal users to look into the function, because following this logic, they don't need documentation at all, since users can always read the source.
You are quite right, the description of mutationadaptfeasible does not give the algorithm by which it creates a feasible population. My question is, why do you want to know? It could be that you are unsure that the function correctly does what it promises. In that case, you can examine this example and see how the function not only works correctly, but biases the population to be along linear constraint boundaries.
Or you might want to program such a function for yourself. In that case, there is nothing better than to examine the code, no description of the algorithm would be as good.
If you think that I made a mistake in my judgment of how much to document here, please let me know. Really, I need to understand why someone wants to understand something before I can give a reasonable explanation at the appropriate level of detail.
Alan Weiss
MATLAB mathematical toolbox documentation
Eric, you asked to know "what exactly mutationadaptfeasible does", and the only way to know exactly what a program does is to read the source. If Mathworks had had a 25 megabyte description of how the function operated, I would still have referred you to the source. A description of something is not exactly the thing.
Documentation is very useful when people do not need to know exactly how something works. When they need to know exactly how something works, they need to read the code.
@Alan Thanks a lot for replying, and sorry for my late reply. In my case, the reason why I want to know how it works is that I intend to use it in my research problem. In writing a paper, one has to explain how each step is designed, even though it may be just one line of code from an existing tool box. So I don't want (or need) to go deep to the code-level details. Only algorithmic descriptions are enough (as long as they are "scientific", e.g., the documentation for mutationgaussian at http://www.mathworks.com/help/gads/genetic-algorithm-options.html#f6633 is at the perfect level for my purpose). Thanks!
@Walter Thanks a lot for answering and replying, and sorry for my late reply. You are absolutely right. The documentation level I need is at the algorithm level (see my comment to Alan above). I shouldn't have used the word "exactly." But you see, the documentation for mutationadaptfeasible is not even at the algorithmic level.

Sign in to comment.

More Answers (1)

I think for the adaptive mutation algorithm, you can refer to Chapter4: Representation, Mutation, and Recombination in Introduction to Evolutionary Computing
Here' the link below:

Community Treasure Hunt

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

Start Hunting!