#2. Делаем генетический алгоритм для задачи OneMax | Генетические алгоритмы на Python

Поділитися
Вставка
  • Опубліковано 26 лис 2024

КОМЕНТАРІ • 41

  • @ЮрийСурнин-ш6с
    @ЮрийСурнин-ш6с 3 роки тому +11

    Огромное спасибо за то, что взялись осветить на простых и понятных примерах эту тему!
    Это огромная мотивация, чтобы наконец-то понять принципы работы ГА!

  • @misterygame7593
    @misterygame7593 3 роки тому +7

    Это просто нереально) Все доходчиво и понятно, да ещё и код на github. Спасибо!

  • @АлександрВальвачев-я6ъ

    Просто супер!. Четко. ясно. понятно. Спасибо.

  • @learningmeansdoing
    @learningmeansdoing 2 роки тому +4

    Спасибо за видео! По вашему примеру попробовал написать генетический алгоритм для поиска минимального покрывающего множества и все получилось. Мне кажется, что на 6:30 отбор трех кандидатов из популяции можно сделать с помощью random.sample. Возможно, так было бы проще.

  • @vegameta
    @vegameta Рік тому +2

    Супер вообще! Спасибо!

  • @archyt88
    @archyt88 3 роки тому +3

    очень круто!!!! спасибо

  • @sergka3626
    @sergka3626 5 місяців тому +2

    за ролик спасибо, но на код без слез не взглянешь

  • @fedotik827
    @fedotik827 2 роки тому +1

    спасибо за видео!

  • @matthewgiovannini2360
    @matthewgiovannini2360 Рік тому

    Спасибо за ролик. Но зачем изобретать велосипед?
    Разве deep_copy не сможет клонировать объект?

  • @Armkeyter
    @Armkeyter 2 роки тому +1

    В строчке 75 у вас есть :
    mutant[indx] = If mutant[indx] == 1 else 1
    Я бы заменил на обычный mutant[indx] = abs(mutant[indx]-1)
    Так когда у нас 1 то будет | 1-1 |= 0
    А когда у нас 0 то будет | 0 - 1 | = 1
    Впринцепи тоже самое, просто красивее )

    • @cow-a-banga
      @cow-a-banga Рік тому +2

      можно же просто 1 - mutant[index[

  • @jamjam3337
    @jamjam3337 Рік тому +1

    👍

  • @ВасяИванов-щ6з
    @ВасяИванов-щ6з 2 роки тому +2

    Вы не могли бы пояснить, что означает запятая после return() в определении функции oneMaxFitness? Также для меня необычна нотация последней строки в определении функции mutFlipBit() - ее можно как-то другим (обычным) образом записать? Спасибо

    • @selfedu_rus
      @selfedu_rus  2 роки тому +2

      Это основы Python. Если пишем return 1, 2, то создается кортеж.

  • @tosick4
    @tosick4 5 місяців тому +2

    Пожалуйста, соблюдайте PEP8: названия калассоа в Camel case, функции через _

  • @timursurkhaev5483
    @timursurkhaev5483 2 роки тому +3

    Небольшое дополнение (вдруг кому-то поможет).
    При RANDOM_SEED = 42 у меня отбор завершается на 33-м поколении:
    Поколение 33: Макс приспособ. = 100, Средняя приспособ. = 97.59
    Результат как в финале видео получается если запустить исходную версию программы (до перезалива).

  • @PrimaLuceAstronaut
    @PrimaLuceAstronaut 2 роки тому +1

    Здравствуйте, Сергей! Скорее всего, я уже надоел вам своими вопросами, но все же я хотел бы уточнить один момент:
    если в функциях нет return, то как мы оттуда получаем измененные/новые значения?

    • @selfedu_rus
      @selfedu_rus  2 роки тому +2

      Через ссылки на объекты, которые передаем в качестве параметров. Например, если передать список, то он изменяемый объект и если внутри функции его поменять, то он поменяется и в основной программе.

    • @PrimaLuceAstronaut
      @PrimaLuceAstronaut 2 роки тому +1

      @@selfedu_rus большое спасибо за помощь и ответы на возникающие вопросы!

  • @ДмитрийЛысов-х1з
    @ДмитрийЛысов-х1з 3 роки тому +3

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

    • @selfedu_rus
      @selfedu_rus  3 роки тому +4

      На мой взгляд, лучшая на русском - это Николенко С., Кадурин А., Архангельская Е. Глубокое обучение. - СПб.: Питер, 2018. - 480 с.

    • @sergeyv1534
      @sergeyv1534 3 роки тому

      @@selfedu_rus Как смотрите на то, чтобы дополнять курсы списком рекомендуемой литературы?

    • @selfedu_rus
      @selfedu_rus  3 роки тому +1

      @@sergeyv1534 подумаю

  • @dfcf7555
    @dfcf7555 3 роки тому +10

    Далее этого канала можно на ютуб не ходить

  • @СомалиЛеснойдух
    @СомалиЛеснойдух 3 роки тому +2

    Можно попросить снять серию видео по работе с Ubuntu?)

    • @selfedu_rus
      @selfedu_rus  3 роки тому +2

      У меня нет такого опыта, поэтому не получится.

    • @СомалиЛеснойдух
      @СомалиЛеснойдух 3 роки тому +2

      @@selfedu_rus Эх, очень печально...
      Но спасибо тебе за твои старания) всего доброго

    • @СомалиЛеснойдух
      @СомалиЛеснойдух 3 роки тому +2

      @@selfedu_rus а jpyter notebook как обстоят дела?
      Потому что в некоторых видео слышал, что это сильно помогает и ускоряет процесс обучения

    • @СвятославВерцанов
      @СвятославВерцанов 2 роки тому +1

      @@СомалиЛеснойдух разве что процесс обучения пользователя) Юпитер - просто удобная среда для Data Science. Там удобно заниматься анализом данных и разработкой ИИ. Но все что касается скриптов - лучше делать в стандартной IDE

  • @pal181
    @pal181 3 роки тому +2

    а почему перезалив?

    • @selfedu_rus
      @selfedu_rus  3 роки тому +1

      были ошибки в реализации, поправил, теперь вроде все верно :)

  • @igor_quantumman
    @igor_quantumman 2 роки тому

    Почему при турнирном отборе популяция того же размера получается? Выходит все особи кандидаты в родители или дубликаты образуются чтобы сами с собой размножаться?

    • @selfedu_rus
      @selfedu_rus  2 роки тому +1

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

  • @desu-desu
    @desu-desu Місяць тому +1

    странно, у меня не получилось при помощи этого алгоритма достичь максимума и за 100 поколений, хотя на графике устойчивый рост приспособленности.
    еще: на мой взгляд есть более интересный вариант турнирного отбора: дать КАЖДОМУ индивидууму поучаствовать в турнире с 2 случайными индивидуумами. У автора в турнире участвуют 3 СЛУЧАЙНЫХ индивидуума. В моей версии нет вероятности отбраковки боле приспособленных индивидуумов.
    еще: в данном примере увеличение вероятности мутации приводит к ускорению приспособленности популяции

  • @uchenoche
    @uchenoche 3 роки тому +2

    Можно добавить лекции на ту же тему, но не на Python, а на Common Lisp?

  • @higiro9333
    @higiro9333 Рік тому +3

    Как можно ваще на пайтон программировать, это же просто ущербно

    • @matthewgiovannini2360
      @matthewgiovannini2360 Рік тому +3

      А что в этом ущербного? Если руки прямые, можно писать оптимизированный код, который будет исполняться достаточно быстро.
      Но главной его особенностью является обширный набор библиотек, который позволяет делать удобно и, что самое главное, читабельно, что угодно в области машинного обучения (зачастую эти библиотеки написаны на С), анализа данных и их визуализации.
      А с использованием чего ещё вы собрались заниматься машинным обучением? C++? Похвально, но там можно застрелиться

    • @eternal.strength
      @eternal.strength 8 місяців тому +1

      🤡