why ga does not respect upper bounds ?

1 Ansicht (letzte 30 Tage)
HML
HML am 7 Mai 2021
Kommentiert: John D'Errico am 7 Mai 2021
hi,
I'm surprise by the results of my genetic algorithm that I use to find the minimum of my cost function.
fun = @gestion1;
lb = [10 100 1e3 100 300 800 400];
ub = [40 1e6 1e6 1e6 1e4 1e4 9000];
Intcon = [1 2 3 4 5 6 7 8];
eff_pv = 0.2;
A = [-eff_pv*Epv 0 0 0 0 0 0 0];
b = -Echarge;
options = optimoptions('ga','FunctionTolerance',10,'UseParallel',true,'Display','Iter');
[x, fval] = ga(fun,8,A,b,[],[],lb,ub,[],Intcon,options);
and this is my result:
x = [13 3703 31408 12972 349 1038 1027 10212]
As you can see, x(8) is clearly above ub(8).
Can someone explain me why ?
Thank you for your help

Akzeptierte Antwort

John D'Errico
John D'Errico am 7 Mai 2021
Bearbeitet: John D'Errico am 7 Mai 2021
Um,
ub = [40 1e6 1e6 1e6 1e4 1e4 9000];
numel(ub)
ans = 7
I can count, but I let MATLAB do it for me. As you should see, you posed only 7 (SEVEN) bounds on your variables. the 8th variable was left unconstrained. So what should you expect?
ga is very respectful. But you need to tell it what you want. Mindreading is not among its strong points. :)
  2 Kommentare
HML
HML am 7 Mai 2021
Bearbeitet: HML am 7 Mai 2021
Ooups...
Looking it for several minutes and didn't see it.
Thank you
John D'Errico
John D'Errico am 7 Mai 2021
No problem. In one of the papers I wrote many years ago, I made a simple error in the very first formula. It was one of those boilerplate things that you look at and because you know exactly what it should be, your eyes pass right over it. Then I gave it to my colleague to proofread. He also did not see the error, because he knew what it should say, and since we had both seen the same thing so many times, neither of us looked at it, instead, just knowing what it should be.
Sometimes, simple things get past you.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by