Giter Site home page Giter Site logo

neat-cars's People

Contributors

acc0lade avatar python-is-better-than-java avatar saahith1204 avatar vaarun-c avatar

Stargazers

 avatar  avatar

Watchers

 avatar

neat-cars's Issues

Functionality to draw tracks

Aim to implement a paint program using Pygame that allows users to draw tracks themselves. This user-generated track will serve as the training environment for the algorithm to learn and navigate.

Objective:
The primary objective of this issue is to develop a user-friendly paint program within our project that empowers users to create custom tracks for the algorithm to navigate. This feature not only adds interactivity to the project but also provides a valuable tool for testing and training the algorithm on diverse track designs.

Proposed Functionality:

  1. Develop a paint program within the Pygame interface.
  2. Allow users to draw custom tracks, including defining the starting and finishing points.

Acceptance Criteria:

  • The paint program is successfully integrated into the project.
  • Users can create, and save custom tracks within the program.
  • The solution does not rely on external libraries beyond PyGame.

Have fun :)

Refine Crossover and Mutation functions

The current implementation of the crossover and mutation functions in NEAT.py is functional but could benefit from improvements in terms of readability, reusability, and configurability.

  1. Enhance code clarity by adding more comments and using more descriptive variable names for better readability.
  2. Consider parameterization to allow users to configure mutation rates and mutation ranges.
  3. Extract random number generation logic into separate functions to improve code readability and maintainability.

For the solution to be accepted please consider the repository's constraints and make sure that the solution does not rely on external libraries beyond PyGame.

Have fun :)

Improve the fitness function

The current fitness function, defined in calc_fitness() within the Computer(Car) class in main.py, calculates fitness as velocity multiplied by time. However, this approach has several limitations:

This has several issues:

  • Loop Following: Cars sometimes tend to learn to follow loops, resulting in inflated distance traveled and suboptimal learning.
  • Slow Learning Rate: The current fitness function may lead to very slow learning progress.

Try to improve this by using a better way of calculating the fitness of the cars. You could also try penalizing the car for negative behavior. Ensure that the new fitness function is tailored to the specific requirements of our project and doesn't rely on external libraries beyond PyGame.

Acceptance Criteria:

  • Cars trained with the updated fitness function demonstrate improved learning behavior, including better track navigation and reduced loop following.
  • The solution does not rely on external libraries beyond PyGame.

Have fun :)

Attribute Error when adding a playable car

When attempting to add the player car to the game, we encounter an attribute error that prevents the player car from being added successfully.

Steps to Reproduce:

  1. Uncomment line 267 in main.py
  2. Run the script

Expected Behavior:
The player car should be added successfully without encountering any attribute errors.

Actual Behavior:
An attribute error occurs when trying to add the player car, preventing its addition.

Acceptance Criteria:

  • The attribute error is identified and resolved.
  • The solution does not rely on external libraries beyond PyGame.

Find starting position dynamically instead of hardcoded positions

Currently, the starting positions of the cars are hardcoded ( line 325 in main.py ), which limits flexibility when considering user-created tracks.

The user has to make sure that the hardcoded location is always part of the track to ensure that the program runs. To make our project more versatile and user-friendly, we need to develop a feature that allows users to specify the starting positions of the cars as well as the correct orientation.

Another viable solution is to find any valid position in the track after the user submits the track and go with that. This is more convenient as it does not require the user to place the car in the correct place and orientation. But this is equally more difficult to implement ( maybe ).

For the solution to be accepted please consider the repository's constraints and make sure that the solution does not rely on external libraries beyond PyGame.

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.