Giter Club home page Giter Club logo

machinelearningrace's Introduction

Machine Learning Race

Build Status

master develop
Build Status Master Build Status Develop
Coverage Status Master Coverage Status Develop

General Idea

This project uses a genetic machine learning algorithm to control some little cars. The project is a work in progress and just started, so a lot of features are not working yet.

The screenshot below shows the current state. There are some automatic driving cars, which can measure distances to their surroundings. The distances will be used as inputs for a neural network. Basically, the neural network should return two outputs, one for acceleration/deceleration and the other one for turning the car... hopefully. :P

How to run the project

This project uses Maven as a build-tool, so make sure to download it and set it up on your machine.

  • Build the project with mvn clean package
  • Run in with mvn exec:java

New Ideas / Remaining Tasks

  • simple moving cars
  • race-track generator
  • interactive features like:
    • show only best car, hide others
    • change (increase/decrease/toggle) mutation rate
    • add trace for each car, which visualizes the driven path
    • save neural network of current best car
    • load neural network
    • use neural network of best car for all other cars
    • mouse events like zooming & panning
    • drawing new racetracks via mouse movement
  • better fitness function
  • fancy looking cars (image)
  • probably a lot of other stuff :D

machinelearningrace's People

Contributors

thommynator avatar

Stargazers

Mikael avatar Juan Antonio Breña Moral avatar

Watchers

James Cloos avatar

machinelearningrace's Issues

Interactive functionality

Goal

Implement some interactive functionality to the project, e.g.

  • show only best car, hide others
  • change (increase/decrease/toggle) mutation rate
  • add trace for each car, which visualizes the driven path (requires trace feature #4)
  • use neural network of best car for all other cars
  • save neural network of current best car (requires save feature #7)
  • load neural network (requires load feature #8)

Current State

Nothing in place.

Hints / Notes

Some kind of Key Listener and/or UI would be good (buttons).

Create a race track generator

Goal

There can't be a race without a race track/course, right?

It would be good to have some kind of generator, that creates some random racetracks.
For a first version, it would be fine enough, if it's just an ellipse with some additional curves or something like this.
Later the cars will measure the distance of their position to the border of the track and will collide with the border. This might also have an impact on the design concept of representing the track, e.g. some kind of polygon representation for easier collision detection,... ?

Requirements:

  • closed/looped track
  • random shape
  • no crossings and roads may not touch each other
  • some kind of start/finish line

Something like this:
image

Affine transformation of car visualization is wrong

The affine transformation of the cars in PopulationDrawer#drawCar() doesn't seem to be correct.
The center of the car body (rectangle) isn't at the exact car position (car.x, car.y).

It's not a major bug, because it's not affecting anything so far. It just looks strange especially during collision.

image

Car Traces / Driven Path / Trajectory

Goal

Draw a line for each car, which represents the driven path.
Probably it would be good if it has some transparency and is also restricted to the last x-frames (not the whole path)

Current State

Nothing like this in place, yet.

Hints / Notes

Load Neural Network from JSON

Goal

Load a neural network, which was saved by #7 earlier and apply it to all cars.
Has to be triggered for example by an UI event. (see #6 )

Current State

Nothing in place.

Hints / Notes

Save Neural Network as JSON

Goal

Save the neural network of the best car.
The network should be saved as JSON object.
Has to be triggered for example after each iteration or by an UI event. (see #6 )

Current State

Nothing in place.

Hints / Notes

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.