Azzera filtri
Azzera filtri

GA in Matlab 2014???

3 visualizzazioni (ultimi 30 giorni)
KHANH NGUYEN
KHANH NGUYEN il 7 Apr 2015
Hi Everyone, I'm researching GA in Matlab for My thesis. I have a Problem with it. I solve Problem with 5 Vars: x1; x2; x3; x4; x5 I want to setup lower bound and upper bound for 5 Vars as follow: lb=[0.3 0.4 0.5 1 2] ub=[0.9 0.9 0.9 5 6] I want the x value: x1= 0.3; 0.35; 0.4;.....0.9 x2= 0.4; 0.45; 0.5;.....0.9 x3= 0.5; 0.55; 0.6;.....0.9 x4=1; 2; 3;...5 x5=2; 3; 4;...6 How do you do? Thank you so much.
  1 Commento
Joep
Joep il 7 Apr 2015
Modificato: Joep il 7 Apr 2015
Sorry needed to rewrite it to read your question.
Hi Everyone, I'm researching GA in Matlab for My thesis. I have a Problem with it. I solve Problem with 5 Vars: x1; x2; x3; x4; x5 I want to setup lower bound and upper bound for 5 Vars as follow:
lb=[0.3 0.4 0.5 1 2]
ub=[0.9 0.9 0.9 5 6]
I want the x value:
x1= 0.3; 0.35; 0.4;.....0.9
x2= 0.4; 0.45; 0.4;.....0.9
x3= 0.4; 0.45; 0.5;.....0.9
x4=1; 2; 3;...5
x5=2;3;4...6
How do you do? Thank you so much.
x2 and x3 looks me wrong in your question.

Accedi per commentare.

Risposta accettata

Mohammad Abouali
Mohammad Abouali il 7 Apr 2015
Modificato: Mohammad Abouali il 7 Apr 2015
Since you have discrete values for x1 to x5 you need to define it as an integer problem. (I know x1,x2,x3 are not integer input so read to the end).
IntCon in:
x = ga(fitnessfcn,nvars,A,b,[],[],LB,UB,nonlcon,IntCon,options)
IntCon list all the parameters that need integer value. which in your case would be IntCon=1:5 since all your variables need to be expressed as integer.
x4 and x5 are already integer so no problem there. but you need to change x1, x2,and x3.
define:
xx1=0.3:0.05:0.9
xx2=0.4:0.05:0.9
xx3=0.4:0.05:0.9
Now define the lower bound and upper bound as:
LB=[1 1 1 1 2]
UB=[numel(xx1) numel(xx2) numel(xx3) 5 6]
Your original function is defined as fitnessfcn(x1,x2,x3,x4,x5) but now by defining LB,UB, IntCon as mentioned above x1,x2,x3 are fed integer values which you don't want it. for example GA will varry x1 from 1 to 13. You need to change your function definition. Wherever, it was x1 you need to replace it with xx1(x1). This way, correct value is used. Let's say your original function was
fitnessfcn=@(x1,x2,x3,x4,x5) x1+x2+x3+x4+x5;
You need to change it to
fitnessfcn=@(x1,x2,x3,x4,x5) xx1(x1)+xx2(x2)+xx3(x3)+x4+x5;
this way, x1 varies from 1 to 13 but x1=1 will return xx1(1) which is 0.3. Therefore, practically x1=1 is mapped to 0.3, x1=2 is mapped to 0.35 and so on.
  2 Commenti
KHANH NGUYEN
KHANH NGUYEN il 7 Apr 2015
Thank you so much. I'll consider it again.
Mohammad Abouali
Mohammad Abouali il 7 Apr 2015
You are welcome.

Accedi per commentare.

Più risposte (0)

Community Treasure Hunt

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

Start Hunting!

Translated by