Inspiration

Upon learning that the theme of the hackathon revolved around the cosmos, our team was very excited to explore how modelling planets and stars work to create solar systems using Machine Learning taking in consideration all the gravitational interactions between the systems. It was then that the idea of employing genetic algorithms emerged as the ideal solution, thus giving rise to the genesis of Genetic Orbits.

What it does

The sand box runs simulations for a given number of planets and shows its interactions with the star and other planets in real time. The algorithm we used tries to create stable solar systems for a given number of planets, it could be trained for multiple star solar systems too but we did not have enough time to do that.

How we built it

Panda3D: a Python library for 3D graphics; leveraging multithreading for efficiency. Self-built model of gravity in Python via NumPy Self-built reinforcement machine learning genetic algorithm

Challenges we ran into

Developing this project presented numerous challenges across various domains, including GUI design, machine learning integration, and audio generation. One of the initial hurdles we faced was selecting the appropriate GUI framework to create immersive visualizations of celestial dynamics. Initially considering a Python 3D engine, we encountered difficulties due to limited online documentation, prompting us to explore panda3d library.

Similarly, determining the most suitable machine learning models posed another significant challenge. While neural networks appeared promising, the lack of an adequately labeled dataset hindered our progress in this direction.

Accomplishments that we're proud of

Accurate gravitational modelling Average 40% increase in stability for randomly generated orbits for very low number of generations Great looking 3D environments from bare-bones software

What we learned

There are a lot of 3D graphics tools available - choose one with good documentation and with the features you need. Genetic algorithms - what are they? how do they work? how can they be used and for what tasks? Multithreading 3D graphics

What's next for Genetic Orbits

Experimentation with parameters Efficiency optimisation: NumPy, C++ Mutations in the genetic algorithm for exploitation AND exploration

Built With

  • magenta
  • panda3d
  • python
  • tensorflow
Share this project:

Updates