Giter Site home page Giter Site logo

deepcars's Introduction

Deep Cars

Projeto onde várias Redes Neurais competem para aprender a dirigir em uma pista de corrida com obstáculos.

Preview-Screens

Sobre o Projeto

A ideia consiste em utilizar uma "seleção artificial" para evoluir os pesos de várias redes neurais, com o propósito de encontrar a melhor combinação e assim obter o melhor comportamento para os carros.

O simulador foi criado do zero(sem engines) utilizando a biblioteca gráfica Programming Interface Gaming (PIG) que por sua vez é baseada na tradicional Simple DirectMedia Layer (SDL).

A Rede Neural Artificial utilizada foi uma Perceptron Multilayer com 3 camadas!

  • Camada de Entrada com 18 sensores + 1 Viés, totalizando 19 Neurônios

  • Camada Escondida com 6 neurônios + 1 Viés, totalizando 7 Neurônios

  • Camada de Saída com 4 neurônios (Acelerar, Ré, Virar para a Esquerda, Virar para a Direita)

  • A função de ativação utilizada em todos os neurônios foi a ReLU.

  • O método de aprendizagem é comumente chamado de "Random Mutations".

  • O tamanho da população que utilizei foi de 1000 indivíduos.

  • O tempo de aprendizagem variou entre 5 ~ 20 minutos.

    Para mais informações e explicações acesse o vídeo demonstrativo.

Por quê?

Desenvolvi esse projeto por curiosidade e diversão :)

Para mais projetos como esse visite o canal.

Observações:

  • O arquivo 'redeNeural.c' contém todas as funções relativas à implementação da Rede Neural (tudo sobre a rede neural está nesse arquivo). Ele está genérico, ou seja, você pode baixar o arquivo e incluir no seu projeto e você conseguirá usar a rede neural facilmente.

    Exemplo:

    RedeNeural* Car = RNA_CriarRedeNeural(1,2,3,4);
    

    Nesse exemplo nós estamos criando uma variável chamada 'Car' que vai receber a Rede Neural que foi alocada dentro da função RNA_CriarRedeNeural()... Não esqueça de destruí-la após usar, utilizando a função:

    RNA_DestruirRedeNeural(Car);
    
  • A função 'ControlarEstadoCarros' dentro do arquivo 'main.cpp' contém o código que faz a comunicação entre o simulador e a rede neural.

  • O resto dos arquivos são apenas os códigos da implementação do simulador.

No arquivo DeepCars.rar você encontra o projeto completo (todos os códigos, imagens, biblioteca gráfica, e as dll's necessárias para executar o ambiente onde os carros vão aprender).

Um grande abraço!

deepcars's People

Contributors

jvictordias avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

deepcars's Issues

Como instalar o projeto no windows

Ola tudo certo? Nao domino muito c++, entao estou tendo dificuldade para rodar o projeto na minha maquina, gostaria de saber qual o processo de instalação, instalei o MinGW mas recebo esse erro ao rodar
gcc -o c.exe redeNeural.c redeNeural.c:1:10: fatal error: gsl/gsl_rng.h: No such file or directory #include <gsl/gsl_rng.h> ^~~~~~~~~~~~~~~ compilation terminated.

abraços

Training vs. Testing datasets

prefere em português ou inglês?
Primeiro: excelente código, muito legal. Eu também fiz alguns códigos de ML no Sololearn, e "hardcore" como o seu, sem tensorflow, etc.
Segundo: o labirinto de treino está bem complexo e interessante. Precisava pegar o aprendizado feito nessa pista e aplicar em outra pista (a mesma espelhada? Ou correndo no sentido inverso?) para ver a robustez da rede a novas situações desconhecidas.
Terceiro: nas suas novas gerações porque você também não mantém o pai/mãe original como um dos filhos (ou um filho sem mutação)? Isso iria evitar que a próxima geração fosse pior que a geração anterior.
Quarto: a sua linha de chegada não está sendo interpretada como uma parede? Se for assim, os carros vão evitar chegar lá.
Quinto: a visualização está show! Novamente, parabéns por tudo!!!
Edit: Sexto: os carros não veem a lama ou turbo, então é só por sorte que eles passam por isso. Talvez colocar sensores para isso seria interessante.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.