Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

genetic algorithm tool (Bit string)

Asked by mohammed sportman on 29 Dec 2012
%first way%
function g =myfitnesstest(X)
s=0;
if (X(1)==1) 
    s=s+1;
end 
if (X(2)==1) 
    s=s+2;
end     
if (X(3)==1) 
    s=s+4;
end  
if (X(4)==1) 
    s=s+8;
end 
if (X(5)==1) 
    s=s+16;
end 
LAMDA=s;
 TYPE=1;
ITER=1000;
R1=Routing3a3(TYPE,LAMDA,ITER);
g=-R1;
   end
  ---------
%second way%
function g =myfitness2(X)
LAMDA=X(1)+X(2)*2+X(3)*4+X(4)*8
TYPE=1;
ITER=1000;
R1=Routing3a(TYPE,LAMDA,ITER);
g=-R1;
end

------ when i use this (first way) the matlab run it very very slowly. when i use (second way) the matlab run with out stopping with many solution with repeating. i want way to represent the value of X with bit string type to find the optimal solution (by using Matlab gatool )

[EDITED, Jan, code formatted]

0 Comments

mohammed sportman

Products

No products are associated with this question.

1 Answer

Answer by Jonathan Epperl on 30 Dec 2012

I can't try right now, but I am fairly certain that your first few if statements could be substituted by

s = 2.^(0:4) *X(:);

only this would be muuuuch faster, that should explain why your way 1 is so slow.

Of course we don't know what Routing3a does, so hard to help you if there's an error in there.

And lastly, it appears to me that

g=(R1);
while(g>=99)
  g
  break
end

is nothing but

if R1>=99
  R1
end

so what is that line supposed to be doing?

7 Comments

mohammed sportman on 4 Jan 2013

i get an error

Walter Roberson on 4 Jan 2013

Details, mohammed, details!

mohammed sportman on 8 Jan 2013

??? Error using ==> mtimes Inner matrix dimensions must agree.

Error in ==> @(b)-Routing3a(1,1+b*2.^(0:3),1000)

Error in ==> validate>@(x)fitness(x,FitnessFcnArgs{:}) at 136 fitness = @(x) fitness(x,FitnessFcnArgs{:});

Error in ==> fcnvectorizer at 14 y(i,:) = feval(fun,(pop(i,:)));

Error in ==> makeState at 47 Score = fcnvectorizer(state.Population(initScoreProvided+1:end,:),FitnessFcn,1,options.SerialUserFcn);

Error in ==> gaunc at 41 state = makeState(GenomeLength,FitnessFcn,Iterate,output.problemtype,options);

Error in ==> ga at 291 [x,fval,exitFlag,output,population,scores] = gaunc(FitnessFcn,nvars, ...

Caused by: Failure in user-supplied fitness function evaluation. GA cannot continue.

Jonathan Epperl

Contact us