2015-04-10 4 views
1

Я генерируется случайным образом начальным 10 населения (пусть каждый из размера п) генетического алгоритма следующегоИнициализация популяции для генетического алгоритма в MATLAB

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

Предположит, что у меня есть значения одного примера population.For пусть первая популяция размером 10 [100 110 120 130 140 150 160 170 180 190]. Можно ли генерировать оставшееся 9 популяции таким образом, чтобы значения были близки к первой популяции? (Это для быстрой сходимости генетического алгоритма) . Также каждая популяция представляет собой изображение в оттенках серого с значениями интенсивности, представленными в строгом основном порядке. Значение интенсивности должно быть в диапазоне 0 - 255. Пожалуйста, помогите.Чтобы заблаговременно

ответ

2

Вы можете сделать одно. Используйте первую строку, как и для остальных 9 строк, кроме случайного создания индекса (от 1 до n) и присваивания случайного целого только тем позициям с этим случайным индексом.

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 

С этим вы получите десять строк, отличающихся только одним положением.

Редактировать: Изображение. Предполагая, что у вас есть изображение MXN. Создать маску, например

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

Теперь добавьте это в исходное изображение. Теперь вы получите новый образ которого все пиксели изменяются, но только в диапазоне от -10 до 10. Некоторые из значений пикселей может выйти из диапазона, в этом случае просто изменить, как показано ниже

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

x(find(x > 255)) = 255 
+0

На самом деле каждая популяция изображение. Таким образом, если изменяется только одна позиция, это похоже на почти аналогичное. Что я имел в виду, это добавление/вычитание некоторых значений интенсивности из первой совокупности в каждой позиции, но оно должно быть близко к первому населению. И также оно должно быть в диапазон 0-255 – Celine

+0

@Celine См. мое редактирование. – Shreyes

Смежные вопросы