Genetic algorithm - 4: Flappy bird

Поделиться
HTML-код
  • Опубликовано: 20 дек 2024

Комментарии • 19

  • @dael9121
    @dael9121 6 лет назад +6

    I think you deserve a lot more publicity than you get. Your tutorials are the most understandable to me and not filled with 30 minutes of fluff and explanations that don't even get implemented. Keep up the great work! :)

    • @finneggers6612
      @finneggers6612  6 лет назад +3

      I am happy to hear that :)
      I am working on NEAT right now. But that one is really though. I got the basic things but you can prepare yourself for one of the most interesting topics (atleast in my mind) of genetic algorithms.
      (I might need 2 more weeks or so.)

    • @mcolsenet
      @mcolsenet 5 лет назад

      ​@@finneggers6612 same feeling here, your work is amazing, well done and hopefully you keep on uploading!

  • @MrAlessio14
    @MrAlessio14 3 года назад

    in this case if I want to save the result what should I do? What I'm doing now is to save the network of the fittest client and then when I load I copy it into some but not all clients (say 10%) to keep some diversity...Is this a good approach or there is some better method?

  • @mariovelez578
    @mariovelez578 5 лет назад

    My birds are not evolving at all, I've checked just about everything, however, I have 2 inputs, and they are each edge top and bottom of the gap of the pipe, 1 if it's above, 0 if it's below. where in my code should I check to fix this? Using a population of 100 birds, it seems to start at 1 bird passing, and then caps at around 8

    • @finneggers6612
      @finneggers6612  5 лет назад

      assuming you dont have bugs in your code, the information might not be sufficient for the network to learn the game.
      I had 4 inputs because I thought it is important to tell the network how far from the next pipe the bird is.
      Basically like this:
      input 1: height of upper pipe
      input 2: height of lower pipe
      input 3: x position of bird
      input 4: x position of pipe.
      Furthermore, your input should not be the value in pixels but some values around 1.

    • @mariovelez578
      @mariovelez578 5 лет назад

      @@finneggers6612 My inputs are like this:
      input 1: above lower pipe? 1:0
      input 2: below upper pipe? 1:0
      usually only 5 birds make it through the first few pipes, so my inputs work, the problem is it's not increasing the number of birds that do pass through

    • @finneggers6612
      @finneggers6612  5 лет назад

      @@mariovelez578 Its not wise to take some input data that can quickly jump from 0 to 1 or sth like that. think about you sitting in your car. you would not want your distance sensor to peep if you just touched the car.

  • @tutkinrannan2184
    @tutkinrannan2184 5 лет назад

    are the pipes coming random cause if so how can the network learn the game cause it has no information about what is coming next?

    • @finneggers6612
      @finneggers6612  5 лет назад +1

      the pipes are random but it doesnt learn when to do what.
      The input is the distance to the next pipe, the height of that one etc.
      So it has information about the upcoming pipe (but only about the next one, so basically the same information a human would have).
      and using that data, it predicts when to jump.

  • @tutkinrannan2184
    @tutkinrannan2184 6 лет назад

    since the pipes spawn in random positions how does the balls learn learn to jump at the right time if the pipes are in different positions in each new game

    • @finneggers6612
      @finneggers6612  6 лет назад +1

      For some reason I cannot see my answer that I gave to this yesterday so I will write a new one.
      We are basically optimizing something that takes an input and returns an output.
      If the input would be the x coordinate of the bird, the bird would fail because it has 0 information about the pipes.
      We need to give some information about the pipes. I am using 4 inputs: distance to next pipes, birds height, top pipe height, bottom pipe height.

  • @johanneszwilling
    @johanneszwilling 5 лет назад

    🤔This reminds me of OpenAI's CartPole Gym Thingy 😁 Seems similar, though Flappy Bird is more sexy
    😉👍🏼 Gute Arbeit!
    😌 Vielleicht muss ich noch mehr aufpassen, aber inwieweit ist das jetzt anders als NEAT?

    • @finneggers6612
      @finneggers6612  5 лет назад

      NEAT ist ein genetischer algorithmus. Aber nicht jeder genetischer Algorithmus ist NEAT.
      Die 3 Konzepte (selection, mutation, crossover) werden von jedem GA anders implementiert. NEAT ist eine Implementation der 3 Konzepte.

  • @oj0024
    @oj0024 6 лет назад

    Lol already did that exacly with my c++ version

    • @finneggers6612
      @finneggers6612  6 лет назад

      auch schon NEAT programmiert? Da sitz ich momentan dran. Wenn du ne challenge suchst, dann mach NEAT :)

    • @oj0024
      @oj0024 6 лет назад +1

      hab ich noch net, aber ich bin schon richtig hyped wenn q-learning kommt XD.
      github.com/oj002/OnPointMachineLerning

  • @unbreakable566
    @unbreakable566 5 лет назад

    Great video!

  • @socketbyte5348
    @socketbyte5348 6 лет назад

    Great :)