Ignore:
Timestamp:
Dec 16, 2009, 5:26:00 PM (15 years ago)
Author:
Rick van der Zwet
Message:

Made it MatLab compatible

Location:
liacs/nc/low-correlation
Files:
3 added
3 edited
2 copied

Legend:

Unmodified
Added
Removed
  • liacs/nc/low-correlation/mcs-call.m

    r34 r38  
    55% Brute-force result of length 20
    66% 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
    287
    298% Basic variables
     
    3211length = 20;
    3312
    34 
    3513% Plot the stuff
    3614fitnesses = [];
     
    3816    fitness = [];
    3917    for rep = 1:repetitions
    40         printf('Iter:%i, Rep:%i\n',iteration,rep);
     18        fprintf('Iter:%i, Rep:%i\n',iteration,rep);
    4119        [new_fitness, value] =  mcs(length,iteration);
    4220        fitness = [fitness, new_fitness];
     
    4422        % Little hack to display output nicely
    4523        % disp(rot90(value,-1));
    46     endfor
    47    
     24    end
    4825    fitnesses = [fitnesses,mean(fitness)];
    49 endfor
     26end
    5027
    5128plot(iterations,fitnesses);
     
    5532grid on;
    5633legend(sprintf('Length %i',length));
    57 print("mcs-fitness.eps","-depsc2");
     34print('mcs-fitness.eps','-depsc2');
    5835
  • liacs/nc/low-correlation/mcs.m

    r31 r38  
    2121            best_value = s;
    2222            best_fitness = fitness;
    23         endif
    24     endfor
     23        end
     24    end
    2525    fitness = best_fitness;
    2626    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 
     27end
  • liacs/nc/low-correlation/sa-call.m

    r34 r38  
    22% BSDLicence
    33% 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 number = randint(low,high)
    10     number = round(rand() * (high - low)) + low;
    11 endfunction
    12 
    13 function new = mutation(old)
    14     loc = randint(1,length(old));
    15     old(loc) = old(loc) * -1;
    16     new = old;
    17 endfunction
    18 
    19 function s = initseq(n)
    20     % Generate a random column s={-1,1}^n
    21     s = rand(n,1);
    22     s = round(s);
    23     s = s - (s == 0);
    24 endfunction
    25 
    26 function [fitness,value] = sa(length, temperature, stopLimit)
    27     best_fitness = 0;
    28     s = initseq(length);
    29     stopCounter = 0;
    30 
    31     while (stopCounter < stopLimit)
    32         % Generate new mutation
    33         newseq = mutation(s);
    34 
    35         % Better is always accept
    36         fitness = autocorrelation(newseq);
    37         if (fitness > best_fitness)
    38             best_value = s;
    39             best_fitness = fitness;
    40             s = newseq;
    41             fitness
    42             disp(rot90(newseq,-1));
    43             stopCounter = 0;
    44         else
    45             % Make the next 'move' less atractive
    46             temperature =- 1;
    47 
    48             stopCounter += 1;
    49             % Accept on an certain probability
    50             if (temperature < 0)
    51                 break;
    52             else
    53                 if(randint(0,temperature) > temperature / 4)
    54                     s = newseq;
    55                 endif
    56             endif
    57         endif
    58     endwhile
    59     value = best_value;
    60     fitness = best_fitness;
    61 endfunction
    624
    635%% Basic variables
     
    679temperature = 1000;
    6810
     11iteration_history = [];
     12fitness_history = [];
    6913
    7014% Plot the stuff
    71 fitnesses = [];
    7215for iteration = iterations
    7316    fitness = [];
    7417    for rep = 1:repetitions
    75         printf('Iter:%i, Rep:%i\n',iteration,rep);
     18        fprintf('Iter:%i, Rep:%i\n',iteration,rep);
    7619        [new_fitness, value] =  sa(length,iteration,temperature);
    7720        fitness = [fitness, new_fitness];
     
    7922        % Little hack to display output nicely
    8023        % disp(rot90(value,-1));
    81     endfor
    82    
    83     fitnesses = [fitnesses,mean(fitness)];
    84 endfor
     24   end
     25    iteration_history = [iteration_history,iteration];
     26    fitness_history = [fitness_history,mean(fitness)];
     27end
    8528
    86 plot(iterations,fitnesses);
     29plot(iteration_history,fitness_history);
    8730title(sprintf('Simulated Annealing on Low-Corretation set - repetitions %i',repetitions));
    8831ylabel('fitness');
     
    9033grid on;
    9134legend(sprintf('Length %i',length));
    92 print("sa-fitness.eps","-depsc2");
     35print('sa-fitness.eps','-depsc2');
    9336
  • liacs/nc/low-correlation/sa.m

    r32 r38  
    22% BSDLicence
    33% 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 number = randint(low,high)
    10     number = round(rand() * (high - low)) + low;
    11 endfunction
    12 
    13 function new = mutation(old)
    14     loc = randint(1,length(old));
    15     old(loc) = old(loc) * -1;
    16     new = old;
    17 endfunction
    18 
    19 function s = initseq(n)
    20     % Generate a random column s={-1,1}^n
    21     s = rand(n,1);
    22     s = round(s);
    23     s = s - (s == 0);
    24 endfunction
    254
    265function [fitness,value] = sa(length, temperature, stopLimit)
     
    3918            best_fitness = fitness;
    4019            s = newseq;
    41             fitness
    42             disp(rot90(newseq,-1));
     20            % disp(rot90(newseq,-1));
    4321            stopCounter = 0;
    4422        else
     
    4624            temperature =- 1;
    4725
    48             stopCounter += 1;
     26            stopCounter =+ 1;
    4927            % Accept on an certain probability
    5028            if (temperature < 0)
     
    5331                if(randint(0,temperature) > temperature / 4)
    5432                    s = newseq;
    55                 endif
    56             endif
    57         endif
    58     endwhile
     33               end
     34           end
     35       end
     36   end
    5937    value = best_value;
    6038    fitness = best_fitness;
    61 endfunction
    62 
    63 %% Basic variables
    64 iterations = [1:10:1000];
    65 repetitions = 20;
    66 length = 20;
    67 temperature = 1000;
    68 
    69 
    70 % Plot the stuff
    71 fitnesses = [];
    72 for iteration = iterations
    73     fitness = [];
    74     for rep = 1:repetitions
    75         printf('Iter:%i, Rep:%i\n',iteration,rep);
    76         [new_fitness, value] =  sa(length,iteration,temperature);
    77         fitness = [fitness, new_fitness];
    78 
    79         % Little hack to display output nicely
    80         % disp(rot90(value,-1));
    81     endfor
    82    
    83     fitnesses = [fitnesses,mean(fitness)];
    84 endfor
    85 
    86 plot(iterations,fitnesses);
    87 title(sprintf('Simulated Annealing on Low-Corretation set - repetitions %i',repetitions));
    88 ylabel('fitness');
    89 xlabel('iterations');
    90 grid on;
    91 legend(sprintf('Length %i',length));
    92 print("sa-fitness.eps","-depsc2");
    93 
     39end
Note: See TracChangeset for help on using the changeset viewer.