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

Learn moreOpportunities for recent engineering grads.

Apply Today
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]

*No products are associated with this question.*

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?

Show 4 older comments

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.

## 0 Comments