- 1.Представьте, что мы уже сгенерировали n случайных особей и вычислили их значение функции. Мы назвали отдельный элемент 'j' Xj, а имя его функционального значения - f(Xj). И мы находим и называем максимальное значение функции maxValue.
- 2. Ясно, что пригодность отдельного j равна f(Xj)/maxValue. Мы можем назвать его g(Xj).И затем мы вычисляем всю приспособленность особей.
- 3.Следующим шагом является поиск родителей. (Мы отказываемся от особи, значения приспособленности которой меньше 0). Классическим способом является игра в рулетку. Шанс выбора Xjи Xk равен g(Xj)*g(Xk)/[g(X1)+g(X2)+...+g(Xn)]^2.
- 1.выбрать двух случайных отдельных Xj и Xk
- 2.генерировать случайное число rn в диапазоне от 0 до 1.
- 3.если rn меньше, чем g(Xj) и g(Xk)(приспособленность Xj и Xk), то они способны воспроизводиться. Затем кроссовер и мутировать.
- 4.оцените, достаточно ли мы создали дочерних особей, если да, то закончите.
иначе повторите 1-3.
Код: Выделить всё
double randomNumToJudge=Math.random();//generate a random number to judge with the fitness
int randomMother=(int)(Math.random()*1000);
int randomFather=(int)(Math.random()*1000);//random generate parents
if((randomNumToJudge
Подробнее здесь: [url]https://stackoverflow.com/questions/53967728/is-this-way-to-select-parent-like-gambling-roulette-workable[/url]