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

แชร์
ฝัง
  • เผยแพร่เมื่อ 12 ก.ย. 2024
  • Пример реализации генетического алгоритма на языке Python для решения задачи OneMax.
    Телеграм-канал: t.me/machine_l...
    ga_2.py: github.com/sel...
    Инфо-сайт: proproprogs.ru/ga

ความคิดเห็น • 39

  • @user-xe1fi9dc8r
    @user-xe1fi9dc8r 3 ปีที่แล้ว +10

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

  • @user-zs4kv4ii7d
    @user-zs4kv4ii7d 25 วันที่ผ่านมา +1

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

  • @misterygame7593
    @misterygame7593 3 ปีที่แล้ว +7

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

  • @learningmeansdoing
    @learningmeansdoing 2 ปีที่แล้ว +3

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

  • @sergka3626
    @sergka3626 3 หลายเดือนก่อน +1

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

  • @vegameta
    @vegameta ปีที่แล้ว +2

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

  • @archyt88
    @archyt88 3 ปีที่แล้ว +3

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

  • @fedotik827
    @fedotik827 2 ปีที่แล้ว +1

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

  • @dfcf7555
    @dfcf7555 3 ปีที่แล้ว +10

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

  • @ВасяИванов-щ6з
    @ВасяИванов-щ6з 2 ปีที่แล้ว +2

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

    • @selfedu_rus
      @selfedu_rus  2 ปีที่แล้ว +2

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

  • @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 9 หลายเดือนก่อน +1

    👍

  • @timursurkhaev5483
    @timursurkhaev5483 2 ปีที่แล้ว +3

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

    • @user-fi9ng3fl6b
      @user-fi9ng3fl6b ปีที่แล้ว

      а какой был сид до перезалива?

  • @user-ts8rf2fo3j
    @user-ts8rf2fo3j 3 ปีที่แล้ว +3

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

    • @selfedu_rus
      @selfedu_rus  3 ปีที่แล้ว +4

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

    • @sergeyv1534
      @sergeyv1534 3 ปีที่แล้ว

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

    • @selfedu_rus
      @selfedu_rus  3 ปีที่แล้ว +1

      @@sergeyv1534 подумаю

  • @matthewgiovannini2360
    @matthewgiovannini2360 11 หลายเดือนก่อน

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

  • @PrimaLuceAstronaut
    @PrimaLuceAstronaut 2 ปีที่แล้ว +1

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

    • @selfedu_rus
      @selfedu_rus  2 ปีที่แล้ว +2

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

    • @PrimaLuceAstronaut
      @PrimaLuceAstronaut 2 ปีที่แล้ว +1

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

  • @tosick4
    @tosick4 3 หลายเดือนก่อน +2

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

  • @user-kp1po5wd2f
    @user-kp1po5wd2f 3 ปีที่แล้ว +2

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

    • @selfedu_rus
      @selfedu_rus  3 ปีที่แล้ว +2

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

    • @user-kp1po5wd2f
      @user-kp1po5wd2f 3 ปีที่แล้ว +2

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

    • @user-kp1po5wd2f
      @user-kp1po5wd2f 3 ปีที่แล้ว +2

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

    • @user-ry5jg8gr6u
      @user-ry5jg8gr6u 2 ปีที่แล้ว +1

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

  • @pal181
    @pal181 3 ปีที่แล้ว +2

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

    • @selfedu_rus
      @selfedu_rus  3 ปีที่แล้ว +1

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

  • @igor_quantumman
    @igor_quantumman 2 ปีที่แล้ว

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

    • @selfedu_rus
      @selfedu_rus  2 ปีที่แล้ว +1

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

  • @uchenoche
    @uchenoche 3 ปีที่แล้ว +2

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

  • @higiro9333
    @higiro9333 ปีที่แล้ว +3

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

    • @matthewgiovannini2360
      @matthewgiovannini2360 11 หลายเดือนก่อน +2

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

    • @eternal.strength
      @eternal.strength 5 หลายเดือนก่อน +1

      🤡