a simple evoulutionary algorithm 1. the user can enter any user defined string as the evolutionary tareget up to 30 characters max
Show older comments
clc
clear
t= 'Hell world!';
numRands=length(t);
tlength=numRands;
source=t(ceil(rand(1,tlength)*numRands));
fitval = fitness(source, t);
i = 0;
while 1
i = i + 1;
m = mutate(source);
fitval_m = fitness(m, t);
if fitval_m < fitval
fitval = fitval_m;
source = m;
fprintf('%5i %5i %14s', i, fitval_m, m);
end
if fitval == 0
break
end
end
function fitval = fitness(source, t)
fitval = 0
for i = 1 : length(source)
fitval = fitval + (double(t(i)) - double(source(i))) ^ 2;
end
end
function parts = mutate(source)
parts = source;
charpos = randi(length(source)) - 1;
parts(charpos) = char(double(parts(charpos)) + (randi(3)-2));
end
2 Comments
Walter Roberson
on 30 Mar 2018
Is there a question here?
yared Zeleke
on 30 Mar 2018
Edited: Walter Roberson
on 31 Mar 2018
Accepted Answer
More Answers (0)
Categories
Find more on Linear Algebra in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!