Why I am getting "Constraints are not satisfied within constraint tolerance." from using "gamultiobj"?
15 views (last 30 days)
Show older comments
The detailed message is as below:
Infeasible individuals are present in the final population.
Optimization terminated: average change in the spread of Pareto solutions less than options.FunctionTolerance.
Constraints are not satisfied within constraint tolerance.
3 Comments
Walter Roberson
on 17 Sep 2019
Rendra Hakim hafyan: in your case, unless you changed your function or your constraints, it is happening because your constraints cannot be satisfied.
Rendra Hakim hafyan
on 17 Sep 2019
Hi walter,
surprisingly, you answered it. it means that you are able to know all of the questions here?
yeah, I think so. do you think what I have been doing to build my constraint has been right or not? Should I define new variable? or with two variables are sufficient?
I am not good at coding anyway. so I think, solving a multi-objective optimization through matlab is gonna be option. that's why what I do first is make an empirical model then use it as the equation to be used in MATLAB.
Answers (2)
Walter Roberson
on 17 Sep 2019
Infeasible individuals are present in the final population.
This means that not enough feasible locations were found to displace all members of the initial population. When the initial population is generated, it respects UB and LB, but does not try to respect nonlinear constraints. ga() and gamultiobj() permit some points outside of the constraints to be part of the population in order to help guide the swarms.
Optimization terminated: average change in the spread of Pareto solutions less than options.FunctionTolerance.
All of the locations being examined were returning values that were within options.FunctionTolerance of each other.
Constraints are not satisfied within constraint tolerance.
Basically this implies that no feasible points were found.
To proceed you use the options to supply an initial population that contains some feasible points. Or you can increase the initial population size a lot, hoping that one of the randomly generated points is within the basin of attraction of a feasible area.
This situation tends to occur in two different circumstances:
- Situations where there is a feasible region, but it is relatively small and not "downhill" from your starting points. Nonlinear equalities can be quite tough to satisfy.
- Situations where there is no feasible region, either due to mistakes in the constraints, or because the constraints were not analyzed in enough detail before-hand to notice that they could not be satisfied.
It is always possible to construct a function that is arbitrarily hard to locate a useful minima of. -1/((x-c)^(2*N)+delta) is effectively a well at x==c with width controlled by delta and steepness controlled by N. No numeric minimizer can find the well unless it just happens to probe very close to it. Therefore, numeric minimizers can never expect to find the minima even if there is one. Nonlinear constraints and especially nonlinear equality constraints can be mathematically difficult to solve.
0 Comments
ahmad mahmoodi
on 5 Dec 2019
Dear all,
I am using gamultiobj to optimize the objective functions, which are canculated in a simuation program. I use the system command, which is written in the FitFcn file, to run the software and write the outputs to a text file and the read the objective function values as well as the nonlinear constrains evaluation (ceq) from the text file.
1) How can I be sure that gamultiobj waits for the other program to finish (waits for the system command to run another program and doesn't get the results from the previous evaluation in the text file)?
2) How can I specify for gamultiobj to get the nonlinear constraint results after running the system command in the FitFcn file (I want the algorithm to consider the sequetional order of going through the FifFcn file and then to the nonlcon file for each selected point)?
I get the same messages when I try to do it the way I mentioned. But when I use the system command in both my matlab files (FitFcn and nonlcon), this message disapears but my simulation program is called twice from matlab.
Thank you in advance and Best regards
0 Comments
See Also
Categories
Find more on Multiobjective Optimization in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!