Генетический алгоритм - выбор родителей против вероятности пересечения - PullRequest
0 голосов
/ 28 декабря 2018

Я прочитал учебник по TutorialsPoint и , этот вопрос и ответ по StackOverflow .Тем не менее, я до сих пор не понимаю значения вероятности кроссовера в процессе выбора родителей и кроссовера генетического алгоритма.

Скажем, у меня есть популяция размером 100, а вероятность кроссовера равна 0,9.Что это значит?Должен ли я:

  • выбрать точно 10 родителей (поскольку 90% потомков должны быть получены путем кроссовера), или
  • выполнить ГСЧ 100 раз, и для каждого случая, когда вероятность 0,9 не удается,Я выбираю родителя?

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

Ответы [ 2 ]

0 голосов
/ 28 декабря 2018

Как упомянуто Carcingenicate, реализации могут отличаться.Коэффициент пересечения 0,90 указывает, что 90% потомства, или дочерней популяции, будут созданы с помощью операции пересечения родительских решений.Это может быть реализовано так, что ровно 90% дочерних элементов рождается кроссовером в каждом поколении, или это может быть реализовано вероятностно (как это делается в примере AI_Learning).Дети, рожденные в результате кроссовера, могут или не могут быть подвержены мутации.

Способ выбора родительских решений также может варьироваться.Может случиться так, что более подходящие родительские решения с большей вероятностью будут выбраны для производства потомства, и то, что произведено, будет составлять родительскую популяцию следующего поколения.Альтернативно, родительские решения могут быть случайно выбраны для получения потомства.Затем выполняется отбор совокупной родительской и потомственной популяций для создания родительской популяции следующего поколения.

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

0 голосов
/ 28 декабря 2018

Это не совсем 10 родителей, в среднем 10 родителей.Ниже приведен псевдокод, которому я следую.

current_population <- comes from previous generation
new_population <- []

for i upto number of chromosomes in current_population :
    parent1, parent2 <- pick 2 parents from current population based on fitness function

    if random_number is less than cross_over_ratio :
        offspring <- crossover (parent1, parent2)
    else:
        if random_number is 0.5:
            offspring <- parent1
        else:
            offspring <- parent2

    append the offspring to new_population

for i upto number of chromosomes in new_population :

    if random_number is less than mutation_ratio :
        i_th chromosome in new_population <- mutation (i_th chromosome in new_population)
...