MATLAB: Does ga change the ‘Vectorized’-option to ‘on’ by itself

gaMATLABOptimization Toolboxoptionvectoized

My ga optimizer problem always produces an error after some generations. The error is caused by calling my fitness function vectorized, even though I set the 'Vectorized'-option to 'off' before.
When I set a breakpoint directly before in 'galincon', I can see that the 'Vectorized'-option is set to 'on'. 'galincon' is called from 'gaminlpengine' (no code), which is called from 'gaminlp' (no code), which is called from 'ga'. If I set a breakpoint in 'ga', the 'Vectorized'-option is still set to 'off'.
It's no big problem, I could easily change my fitness function code to work vectorized. But it should not happen that way, should it? Why is that option changed automatically?

Best Answer

I am still not sure why you ran into this problem, but the development team tells me that it is not a bug that causes the internal state of the solver to change to Vectorized, this is something that the integer ga algorithm does. However, your fitness function is not supposed to see this, there is a wrapper for compatibility with non-vectorized fitness functions. So I am really not sure what is happening.
As to your second question or comment, you are free to change your crossover function by using your own version of integer ga in the following way. Set your population type to 'custom', and make your own creation, mutation, and crossover functions in a way that keeps your problem pure integer. Sorry, but if you want to use the built-in MILP solver, you have to use the built-in limitations of that solver.
If you still believe that you have uncovered a bug in the solver, please contact technical support--I am not equipped to diagnose a full-fledged detailed problem.
Good luck,
Alan Weiss
MATLAB mathematical toolbox documentation