Celine
Celine

Reputation: 105

Initialization of population for genetic algorithm in matlab

I randomly generated initial 10 population(let each of size n) of genetic algorithm as follows

for i = 1:10
    for j=1:n
        population(i,j)=randi([MinIntensity,MaxIntensity]);
    end
end

Assume that I have the values of one population.For example let the first population of size 10 is [100 110 120 130 140 150 160 170 180 190].Is it possible to generate the remaining 9 population such that the values are near to the first population?(It is for the quick convergence of genetic algorithm).Also each population is a grayscale image with intensity values represented in row major order.Hence the intensity values should be in the range of 0 - 255. Please help.Thanks in advance

Upvotes: 0

Views: 1379

Answers (1)

LegoBatman
LegoBatman

Reputation: 155

You can do one thing. Use the first string as it is for the rest of the 9 strings except randomly generate an index (between 1 to n) and assign a random integer only to that positions with that random index.

population(1,:) = [100 110 120 130 140 150 160 170 180 190];

for i = 2:10
    idx = randi([1 10]);
    population(i,:) = population(1,:);
    population(i,idx) = randi([0 255]);
end

With this you will get ten strings differing in only one position.

Edit: Image. Assuming you have a MXN image. Create a mask for example

randi([-10 10], M , N)

Now add this to your original image. Now you get a new image whose all the pixels are modified but only within the range of -10 to 10. Some of the pixel values might go out of range in that case just modify as below

 x(find(x < 0)) = 0 %Here X is your new image.

 x(find(x > 255)) = 255

Upvotes: 1

Related Questions