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

Я только начал изучать генетические алгоритмы и, не глядя на какой-либо существующий GA в коде, я написал эту простую программу, цель которой состоит в том, чтобы угадать число из заданного диапазона, и это предполагаемое число должно правильно соответствовать ожидаемому числу.Я понимаю, что GA в основном развивается, пока не достигнет ожидаемого состояния.

Что делает эта программа, она генерирует случайное число, сравнивает его с правильным числом и корректирует его диапазон после каждого ошибочного предположения, и в течение определенного периода времени она правильно угадывает число, поскольку диапазон становится уже.Будет ли эта программа называться генетическим алгоритмом?

number_to_be_guessed = 10

attempt = 0
start = 0
end = 100
while True:
    guessed_number = random.randint(start,end)
    if guessed_number == number_to_be_guessed:
        print("Number found, which is {}".format(guessed_number))
        break
    elif guessed_number > number_to_be_guessed:
        end = guessed_number
    else:
        start = guessed_number   
    print("Attempt:{} -- Guessed Number:{} -- Start Value:{} -- End Value:{}"\
      .format(attempt,guessed_number,start,end))
    attempt += 1

Вывод

Попытка: 0 - Догаданный номер: 0 - Начальное значение: 0 - Конечное значение: 100

Попытка: 1 - Угаданное число: 27 - Начальное значение: 0 - Конечное значение: 27

Попытка: 2 - Угаданное число: 22 - Начальное значение: 0 - Конечное значение: 22

Попытка: 3 - Догаданный номер: 15 - Начальное значение: 0 - Конечное значение: 15

Попытка: 4 - Догаданный номер: 2 - Начальное значение: 2 -Конечное значение: 15

Попытка: 5 - Догаданный номер: 6 - Начальное значение: 6 - Конечное значение: 15

Попытка: 6 - Догаданный номер: 8 - Начальное значение: 8 - Конечное значение: 15

Попытка: 7 - Предполагаемое число: 9 - Начальное значение: 9 - Конечное значение: 15

Попытка: 8 - Предполагаемое число: 14- Начальное значение: 9 - Конечное значение: 14

Попытка: 9 - Догаданное число: 12 - Начальное значение: 9 - Конечное значение: 12

Попытка: 10 -Догаданный номер: 12 - Начальное значение: 9 - Конечное значение: 12

Найден номер, который равен 10

Ответы [ 2 ]

0 голосов
/ 27 сентября 2018

Есть несколько вещей, которые вам нужно знать, чтобы создать генетические / эволюционные алгоритмы

  1. Определить проблему
  2. Вы должны знать, что вы хотите получить
  3. Затем вы можете начать с разработки Генетического алгоритма

Код, который вы разместили, является лишь грубой силой, когда вы случайным образом берете число в цикле.

В реальном ГА есть некоторые изследующие шаги:

  1. Инициализация первого поколения
  2. Оценка этого поколения
  3. Выбор родителей
  4. Генетические операции (мутации и кроссовер) (воспитание детей)
  5. Оценка детей
  6. Взятие некоторых из них в качестве родителей
  7. Цикл до тех пор, пока ваша функция пригодности говорит о том, что ваш результат достаточно хорош

И вот оно у тебя.Здесь очень сложно все объяснить.Вы найдете его повсюду в Интернете:)

0 голосов
/ 25 сентября 2018

Вот хорошее резюме.

Я не верю, что ваше решение можно назвать генетическим алгоритмом.

Есть несколько вещей, к которым склонны генетические алгоритмыиметь:

Есть представление, которое облегчает "мутацию".Например, если вы можете представить состояние вашего алгоритма с помощью битового слова, а случайные перестановки битового слова создают действительные измененные состояния вашего алгоритма, то это напоминает то, что вы можете видеть в генетическом алгоритме.

Представительство может также способствовать скрещиванию.Итак, используя пример с битовым словом, если вы можете взять половину битов из одного решения и половину из другого и объединить их;и эта комбинация представляет действительное состояние алгоритма, тогда это похоже на то, что вы можете увидеть с помощью генетического алгоритма.

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

Ваш алгоритм этого не делает.

...