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

# 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]

## Products

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?

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.