Реален ли такой способ выбора «родителя», как «азартная рулетка»?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Реален ли такой способ выбора «родителя», как «азартная рулетка»?

Сообщение Anonymous »

Мне пришло в голову, что использование случайного числа для выбора родителейкак азартная рулетка может оказаться эффективным. Позвольте мне объяснить это на примере поиска максимального значения функции. Пример показан ниже:
  • 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.
Шанс выбора Xj и Xk равен g(Xj)*g(Xk)/n^2, что похоже на азартную рулетку. Рассмотрим что оба знаменателя двух шансов имеют постоянную величину, они в определенном смысле равны.

Код: Выделить всё

            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]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»