Офигеть! Фитнес это же реально решение многих проблем по жизни)))❤вы очень умный, спасибо вам за то, что простым языком объясняете. Поверьте, вы учите людей не только ии)
подвижный шест - это маятник Капицы, что бы он не падал, точка подвеса должна совершать колебания, параметры которых можно рассчитать, об этом рассказывал Владимир Арнольд, на ютубе есть видео.
Сергей добрый день. При просмотре Ваших уроков возник вопрос по теме отбора. В этом видео и в видео про методы обора не совсем понятно чем заменяются кандидаты НЕ прошедшие отбор? Например в турнирном отборе отбирается один из трех кандидатов. Выбор происходит несколько раз. В итоговом отборе кандидатов в 3 раза мемньше чем в исходном. Как в результате сохраняется размер популяции ?
давно делал, нужно уточнить, одно из двух: 1. либо дублируются особи в новой популяции 2. либо при отборе сразу делается скрещивание и появляются новые непохожие особи
1. В трех экземплярах дублируется особь которая "выиграла" отбор ? 2. А если скрещивание отключено тогда как ? Разве при скрещиваниии количество особей увеличивается?.
Про турнирный отбор. Если популяция до турнира и после турнира остается одинаковой и все имеют равные шансы на спаривание, не означает ли это, что в ней нет смысла? По алгоритму похоже что из исходной популяции в получившуюся некоторые удачливые попадают более одного раза. Так ли это, или я чтото упускаю? Хотелось бы понять, где прячется механизм ухода слабых.
Добрый день, хотела бы у вас спросить, каким образом можно применять генетические алгоритмы в планировании расписания с пожеланиями участников ? Не могу разобраться, спасибо
Здравствуйте, хотел бы задать вам вопрос. Не совсем понял как(или почему) количество родителей после отбора должно быть равно размеру начальной популяции?
Человек просто делает круто и качественно. Пусть ваши старания окупятся. Спасибо!
Прям как чувствуете! Недели 2 назад сам начал изучать GA и тут вы ролик выпускаете) спасибо, на русскоязычном Ютуб это не хватает.
У меня также)
Офигеть! Фитнес это же реально решение многих проблем по жизни)))❤вы очень умный, спасибо вам за то, что простым языком объясняете. Поверьте, вы учите людей не только ии)
Наглядно, доступно, с толком и расстановкой. Спасибо!
Огромное спасибо за все те старания, что вы вкладываете в обучающие видео.
Как всегда-с огромным интересом просматриваю все ваши видео!!! Очень понятно и очень интересно! СПАСИБО!
Как же интересно! Спасибо за урок!!
Спасибо, Сергей!
Очень рад, что нашел ваш канал! Смотрю взахлеб
Класс
Спасибо Вам большое! Ваша подача материала просто шикарна)
Как всегда, подача и материалы супер!!!! Спасибо!
Это лайк без вопросов
Как всегда лайк. Даешь больше обучающего видео по Data science!
Ооо, уже начинаю смотреть!) Долго искал такой курс
Ждём с нетерпением )
подвижный шест - это маятник Капицы, что бы он не падал, точка подвеса должна совершать колебания, параметры которых можно рассчитать, об этом рассказывал Владимир Арнольд, на ютубе есть видео.
Спасибо! ❤
Очень интересно, генетический mortal combat.
Очень круто
Кому нужно подробнее может почитать книгу "Hands-On Genetic Algorithms with Python". Возможно автор брал ее за основу.
Спасибо!
Это что то очень сложное. Но очень интересное. Надеюсь получиться понять.
Если тебе это сложно, то программирование тебе не по пути
спасибо
Все впринципе звучит легко пока что, только нужно теперь попробовать написать код
интересно! хоть сейчас и не надо😀
ох как интересно, надеюсь запрогаем своих "животных" с графическим отображением)
до тележки точно дойдем :)
Сергей добрый день. При просмотре Ваших уроков возник вопрос по теме отбора. В этом видео и в видео про методы обора не совсем понятно чем заменяются кандидаты НЕ прошедшие отбор? Например в турнирном отборе отбирается один из трех кандидатов. Выбор происходит несколько раз. В итоговом отборе кандидатов в 3 раза мемньше чем в исходном. Как в результате сохраняется размер популяции ?
давно делал, нужно уточнить, одно из двух:
1. либо дублируются особи в новой популяции
2. либо при отборе сразу делается скрещивание и появляются новые непохожие особи
1. В трех экземплярах дублируется особь которая "выиграла" отбор ?
2. А если скрещивание отключено тогда как ?
Разве при скрещиваниии количество особей увеличивается?.
Про турнирный отбор. Если популяция до турнира и после турнира остается одинаковой и все имеют равные шансы на спаривание, не означает ли это, что в ней нет смысла? По алгоритму похоже что из исходной популяции в получившуюся некоторые удачливые попадают более одного раза. Так ли это, или я чтото упускаю? Хотелось бы понять, где прячется механизм ухода слабых.
да, одинаковые особи могут быть в новой популяции; уходят те, кто не прошел турнирный отбор )
@@selfedu_rus понял) спасибо за ответ и за ваш труд
+++ спасибо! ps Осталось тебе затронуть тему изучения английского языка)))
👍👍👍👍👍
ЧОЛОВІЧЕ, НА ТВОМУ КАНАЛІ АБСОЛЮТНО ВСЕ ЩО МЕНІ ПОТРІБНО
ДЯКУЮ ТОБІ ВЕЛИЧЕЗНЕ
Такой знакомый голос...
Это вы ведете канал Begin End?
нет )
Добрый день, хотела бы у вас спросить, каким образом можно применять генетические алгоритмы в планировании расписания с пожеланиями участников ? Не могу разобраться, спасибо
По подробнее пожалуйста
Здравствуйте, хотел бы задать вам вопрос. Не совсем понял как(или почему) количество родителей после отбора должно быть равно размеру начальной популяции?
Это не обязательно, в самом простом варианте, чтобы популяция не вырождалась и не разрасталась мы делаем такую логику
@@selfedu_rus так получается если после отбора количество родителей равно первоначальному, то никакого отбора и не произошло)
@@ЮрийКлименко-к3щ Нет
ВЫ...ПРЕДСТАВЛЯЕТЕ....КАКОЙ....ГЕНЕТИКОЙ---АЛГОРИТМОВ....ВЛАДЕЛЛ....СОЗДАТЕЛЬ....НАШЕГО---МИРА.........И...ЭТО....ЧЕЛОВЕК...НО...РОЖДЕННЫЙ......НЕ...КАК....МЫ☝️☝️☝️☝️🔴🔴🔴🔴
Можно но ли мой код как-то оптимизировать? Или у него все уже хорошо?
import random
class Osobi:
def Standard_Values():
_1 = [random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1)]
_2 = [random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1)]
_3 = [random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1)]
_4 = [random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1)]
_5 = [random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1)]
_6 = [random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1)]
_7 = [random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1)]
_8 = [random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1)]
return _1,_2,_3,_4,_5,_6,_7,_8
class Genetic_Algoritm_Start:
For_mutations = random.randint(0,7)
def Otbor(_1,_2,_3,_4,_5,_6,_7,_8):
choice_1 = random.randint(0,7)
choice_2 = random.randint(0,7)
if choice_2 == choice_1:
choice_2 = random.randint(0,7)
return choice_1, choice_2
def Otbor_Part_Two(choice_1, choice_2):
if Osobi[choice_1] > Osobi[choice_2]:
_1_ = Osobi[choice_1]
else:
_1_ = Osobi[choice_2]
if Osobi[choice_1] < Osobi[choice_2]:
_2_ = Osobi[choice_1]
else:
_2_ = Osobi[choice_2]
return _1_,_2_
def New_Age(_1_,_2_):
For_Born = [_1_,_2_]
_1 = For_Born[random.randint(0,1)]
_2 = For_Born[random.randint(0,1)]
_3 = For_Born[random.randint(0,1)]
_4 = For_Born[random.randint(0,1)]
_5 = For_Born[random.randint(0,1)]
_6 = For_Born[random.randint(0,1)]
_7 = For_Born[random.randint(0,1)]
_8 = For_Born[random.randint(0,1)]
return _1,_2,_3,_4,_5,_6,_7,_8
def Mutations(Osobi,For_mutations):
For_mutations = random.randint(0,7)
Sector = random.randint(0,7)
if Osobi[For_mutations][Sector] == 0:
Osobi[For_mutations][Sector] = 1
else:
Osobi[For_mutations][Sector] = 0
return Osobi[For_mutations],For_mutations
[_1,_2,_3,_4,_5,_6,_7,_8] = Osobi.Standard_Values()
# Запуск Цикла
run = True
pokol = 0
while run:
pokol += 1
Osobi = [_1,_2,_3,_4,_5,_6,_7,_8]
choice_1, choice_2 = Genetic_Algoritm_Start.Otbor(_1,_2,_3,_4,_5,_6,_7,_8)
_1_,_2_ = Genetic_Algoritm_Start.Otbor_Part_Two(choice_1, choice_2)
_1,_2,_3,_4,_5,_6,_7,_8 = Genetic_Algoritm_Start.New_Age(_1_,_2_)
Osobi = [_1,_2,_3,_4,_5,_6,_7,_8]
Osobi[Genetic_Algoritm_Start.For_mutations],Genetic_Algoritm_Start.For_mutations = Genetic_Algoritm_Start.Mutations(Osobi,Genetic_Algoritm_Start.For_mutations)
print(Osobi)
if Osobi[0] == [1,1,1,1,1,1,1,1]:
run = False
print("Genetic_Algoritm_Working Поколение номер: ", pokol)
Как я понимаю это ведь нормально, что многое зависит от удачи? Количество итерация варьируется от 5 до 707
Тут обновленная версия, в прошлой версия 2 родитель из-за неизвестных причин постоянно уходил от детей. Правда теперь требуется 17000 итераций
import random
class Osobi:
def Standard_Values():
_1 = [random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1)]
_2 = [random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1)]
_3 = [random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1)]
_4 = [random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1)]
_5 = [random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1)]
_6 = [random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1)]
_7 = [random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1)]
_8 = [random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1)]
return _1,_2,_3,_4,_5,_6,_7,_8
class Genetic_Algoritm_Start:
For_mutations = random.randint(0,7)
def Otbor(_1,_2,_3,_4,_5,_6,_7,_8):
choice_1 = random.randint(0,7)
choice_2 = random.randint(0,7)
if choice_2 == choice_1:
choice_2 = random.randint(0,7)
return choice_1, choice_2
def Otbor_Part_Two(choice_1, choice_2,_1_,_2_):
if Osobi[choice_1] > Osobi[choice_2]:
_1_ = Osobi[choice_1]
if Osobi[choice_2] > Osobi[choice_1]:
_1_ = Osobi[choice_2]
if Osobi[choice_1] < Osobi[choice_2]:
_2_ = Osobi[choice_1]
if Osobi[choice_2] < Osobi[choice_1]:
_2_ = Osobi[choice_2]
return _1_,_2_
def New_Age(_1_,_2_):
For_Born = [_1_,_2_]
_1 = For_Born[random.randint(-1,1)]
_2 = For_Born[random.randint(-1,1)]
_3 = For_Born[random.randint(-1,1)]
_4 = For_Born[random.randint(-1,1)]
_5 = For_Born[random.randint(-1,1)]
_6 = For_Born[random.randint(-1,1)]
_7 = For_Born[random.randint(-1,1)]
_8 = For_Born[random.randint(-1,1)]
return _1,_2,_3,_4,_5,_6,_7,_8
def Mutations(Osobi,For_mutations):
For_mutations = random.randint(0,7)
Sector = random.randint(0,7)
if Osobi[For_mutations][Sector] == 0:
Osobi[For_mutations][Sector] = 1
else:
Osobi[For_mutations][Sector] = 0
return Osobi[For_mutations],For_mutations
[_1,_2,_3,_4,_5,_6,_7,_8] = Osobi.Standard_Values()
# Запуск Цикла
run = True
pokol = 0
_1_, _2_ = 1,2
while run:
pokol += 1
Osobi = [_1,_2,_3,_4,_5,_6,_7,_8]
choice_1, choice_2 = Genetic_Algoritm_Start.Otbor(_1,_2,_3,_4,_5,_6,_7,_8)
_1_,_2_ = Genetic_Algoritm_Start.Otbor_Part_Two(choice_1, choice_2, _1_, _2_)
_1,_2,_3,_4,_5,_6,_7,_8 = Genetic_Algoritm_Start.New_Age(_1_,_2_)
Osobi = [_1,_2,_3,_4,_5,_6,_7,_8]
Osobi[Genetic_Algoritm_Start.For_mutations],Genetic_Algoritm_Start.For_mutations = Genetic_Algoritm_Start.Mutations(Osobi,Genetic_Algoritm_Start.For_mutations)
print(Osobi)
if Osobi[0] == [1,1,1,1,1,1,1,1]:
if Osobi[1] == [1,1,1,1,1,1,1,1]:
if Osobi[2] == [1,1,1,1,1,1,1,1]:
if Osobi[3] == [1,1,1,1,1,1,1,1]:
if Osobi[4] == [1,1,1,1,1,1,1,1]:
if Osobi[5] == [1,1,1,1,1,1,1,1]:
if Osobi[6] == [1,1,1,1,1,1,1,1]:
if Osobi[7] == [1,1,1,1,1,1,1,1]:
run = False
print("Genetic_Algoritm_Working Поколение номер: ", pokol)
Хотя оно и логично, я просто сделал подобие скрещивания, как-бы скоро это исправлю
Ух, наконец-то закончил, теперь он и с узорами справляется не за 10002939 итераций
import random
class Osobi:
def Standard_Values():
_1 = [random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1)]
_2 = [random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1)]
_3 = [random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1)]
_4 = [random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1)]
_5 = [random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1)]
_6 = [random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1)]
_7 = [random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1)]
_8 = [random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1),random.randint(0,1)]
return _1,_2,_3,_4,_5,_6,_7,_8
class Genetic_Algoritm_Start:
For_mutations = random.randint(0,7)
def Otbor(_1,_2,_3,_4,_5,_6,_7,_8):
choice_1 = random.randint(0,7)
choice_2 = random.randint(0,7)
if choice_2 == choice_1:
choice_2 = random.randint(0,7)
return choice_1, choice_2
def Otbor_Part_Two(choice_1, choice_2,_1_,_2_):
if Osobi[choice_1] > Osobi[choice_2]:
_1_ = Osobi[choice_1]
if Osobi[choice_2] > Osobi[choice_1]:
_1_ = Osobi[choice_2]
if Osobi[choice_1] < Osobi[choice_2]:
_2_ = Osobi[choice_1]
if Osobi[choice_2] < Osobi[choice_1]:
_2_ = Osobi[choice_2]
return _1_,_2_
def New_Age(_1_,_2_):
For_Born = [_1_,_2_]
_1 = For_Born[random.randint(-1,1)]
_1[random.randint(0,7)] = For_Born[random.randint(-1,1)][random.randint(0,7)]
_2 = For_Born[random.randint(-1,1)]
_2[random.randint(0,7)] = For_Born[random.randint(-1,1)][random.randint(0,7)]
_3 = For_Born[random.randint(-1,1)]
_3[random.randint(0,7)] = For_Born[random.randint(-1,1)][random.randint(0,7)]
_4 = For_Born[random.randint(-1,1)]
_4[random.randint(0,7)] = For_Born[random.randint(-1,1)][random.randint(0,7)]
_5 = For_Born[random.randint(-1,1)]
_5[random.randint(0,7)] = For_Born[random.randint(-1,1)][random.randint(0,7)]
_6 = For_Born[random.randint(-1,1)]
_6[random.randint(0,7)] = For_Born[random.randint(-1,1)][random.randint(0,7)]
_7 = For_Born[random.randint(-1,1)]
_7[random.randint(0,7)] = For_Born[random.randint(-1,1)][random.randint(0,7)]
_8 = For_Born[random.randint(-1,1)]
_8[random.randint(0,7)] = For_Born[random.randint(-1,1)][random.randint(0,7)]
return _1,_2,_3,_4,_5,_6,_7,_8
def Mutations(Osobi,For_mutations):
For_mutations = random.randint(0,7)
Sector = random.randint(0,7)
if Osobi[For_mutations][Sector] == 0:
Osobi[For_mutations][Sector] = 1
else:
Osobi[For_mutations][Sector] = 0
return Osobi[For_mutations],For_mutations
[_1,_2,_3,_4,_5,_6,_7,_8] = Osobi.Standard_Values()
# Запуск Цикла
run = True
pokol = 0
_1_, _2_ = 1,2
while run:
pokol += 1
Osobi = [_1,_2,_3,_4,_5,_6,_7,_8]
choice_1, choice_2 = Genetic_Algoritm_Start.Otbor(_1,_2,_3,_4,_5,_6,_7,_8)
_1_,_2_ = Genetic_Algoritm_Start.Otbor_Part_Two(choice_1, choice_2, _1_, _2_)
_1,_2,_3,_4,_5,_6,_7,_8 = Genetic_Algoritm_Start.New_Age(_1_,_2_)
Osobi = [_1,_2,_3,_4,_5,_6,_7,_8]
Osobi[Genetic_Algoritm_Start.For_mutations],Genetic_Algoritm_Start.For_mutations = Genetic_Algoritm_Start.Mutations(Osobi,Genetic_Algoritm_Start.For_mutations)
print(Osobi)
if _1 == [1,0,0,1,1,0,0,1] and _2 == [1,0,0,1,1,0,0,1] and _3 == [1,0,0,1,1,0,0,1] and _4 == [1,0,0,1,1,0,0,1] and _5 == [1,0,0,1,1,0,0,1] and _6 == [1,0,0,1,1,0,0,1] and _7 == [1,0,0,1,1,0,0,1] and _8 == [1,0,0,1,1,0,0,1]:
run = False
print("Genetic_Algoritm_Working Поколение номер: ", pokol)
Спасибо
👏👍