1 | % Monte-Carlo Search Algoritm on low-autocorrelation program
|
---|
2 | % BSDLicence
|
---|
3 | % Rick van der Zwet - 0433373 - <hvdzwet@liacs.nl>
|
---|
4 |
|
---|
5 | % Brute-force result of length 20
|
---|
6 | % best_20 = [-1,1,1,-1,-1,-1,1,1,-1,1,-1,-1,-1,1,-1,1,1,1,1,1];
|
---|
7 | % autocorrelation(best_20);
|
---|
8 |
|
---|
9 | function [fitness,value] = mcs(length, iterations)
|
---|
10 | best_fitness = 0;
|
---|
11 | for i = 1:iterations
|
---|
12 | % Generate a random column s={-1,1}^n
|
---|
13 | n = length;
|
---|
14 | s = rand(n,1);
|
---|
15 | s = round(s);
|
---|
16 | s = s - (s == 0);
|
---|
17 |
|
---|
18 | % Find whether we are better than everything else
|
---|
19 | fitness = autocorrelation(s);
|
---|
20 | if (fitness > best_fitness)
|
---|
21 | best_value = s;
|
---|
22 | best_fitness = fitness;
|
---|
23 | endif
|
---|
24 | endfor
|
---|
25 | fitness = best_fitness;
|
---|
26 | value = best_value;
|
---|
27 | endfunction
|
---|
28 |
|
---|
29 | % Basic variables
|
---|
30 | iterations = [1:10:200];
|
---|
31 | repetitions = 20;
|
---|
32 | length = 20;
|
---|
33 |
|
---|
34 |
|
---|
35 | % Plot the stuff
|
---|
36 | fitnesses = [];
|
---|
37 | for iteration = iterations
|
---|
38 | fitness = [];
|
---|
39 | for rep = 1:repetitions
|
---|
40 | printf('Iter:%i, Rep:%i\n',iteration,rep);
|
---|
41 | [new_fitness, value] = mcs(length,iteration);
|
---|
42 | fitness = [fitness, new_fitness];
|
---|
43 |
|
---|
44 | % Little hack to display output nicely
|
---|
45 | % disp(rot90(value,-1));
|
---|
46 | endfor
|
---|
47 |
|
---|
48 | fitnesses = [fitnesses,mean(fitness)];
|
---|
49 | endfor
|
---|
50 |
|
---|
51 | plot(iterations,fitnesses);
|
---|
52 | title(sprintf('Monte-Carlo Search on Low-Corretation set - repetitions %i',repetitions));
|
---|
53 | ylabel('fitness');
|
---|
54 | xlabel('iterations');
|
---|
55 | grid on;
|
---|
56 | legend(sprintf('Length %i',length));
|
---|
57 | print("mcs-fitness.eps","-depsc2");
|
---|
58 |
|
---|