Projeto onde várias Redes Neurais competem para aprender a dirigir em uma pista de corrida com obstáculos.
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!
O tempo de aprendizagem variou entre 5 ~ 20 minutos.
Para mais informações e explicações acesse o vídeo demonstrativo.
Desenvolvi esse projeto por curiosidade e diversão :)
Para mais projetos como esse visite o canal.
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);
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!