Git Product home page Git Product logo

neuralnetworknibbles's People

Contributors

hesslink111 avatar shwnchpl avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar

neuralnetworknibbles's Issues

Allow users to synchronize their gene pool with a gene pool server

The gene pool is now updated based on the best snakes of all generations. The GenePool class allows for snakes to be added and removed at any time during the simulation. This makes it possible for a local game to download and upload the best snakes from and to a server.

Background info on server

The server would need to be capable of receiving snakes to add to its gene pool. Like the local gene pool, the number of snakes stored at any time will be limited. When a new snake is sent to the server, it will evaluate it in a single game to measure or verify its score, and then add it to the pool.

Synchronization interface

  • Design and implement a socket-based interface for communicating with a gene pool server with the following capabilities:

    • Ability to connect to a server
    • Ability to request the complete gene pool
    • Ability to receive individual or multiple snakes
    • Ability to send individual or multiple snakes

Create documentation for all classes and complex functions

Complete documentation for:

  • Game

Controller

  • GameController
  • SingleSimController
  • SnakeListController

Domain

  • Board
  • Position
  • Direction
  • Evaluation
  • Game
  • Food
  • GameSnake
  • BodyPart
  • GenePool
  • Generation
  • SnakeNeuralNet
  • Synapse
  • Neuron
  • PieceXPositionNeuron
  • PieceYPositionNeuron
  • PieceXDirectionNeuron
  • PieceYDirectionNeuron
  • GameBoardRelativePositionStateNeuron
  • SigmoidNeuron
  • Snake

Service

  • SimulationService

Util

  • Encoder
  • XorShift

View

  • DashboardWindow
  • SimulationWindow
  • SingleSimView
  • SnakeListView

Users should be able to save and load snakes from the gene pool

Currently, snakes are added and removed from the gene pool only when a generation's evaluations are complete. When the program is closed, all snakes are lost.

  • Add util class for saving and loading snake encodings

  • Modify SnakeListView and SnakeListController so that individual or multiple snakes can be saved from the the gene pool or generation view.

  • Modify SnakeListView and SnakeListController so that individual or multiple snakes can be loaded into the gene pool view or generation view. For concurrency reasons, it may be necessary to prevent the user from loading a new snake while the game is running (without more complicated changes, like a backlog for the next generation).

  • If snakes are to be added to a generation, modify any Generation-class dependent code to allow for variable sized generations.

Simulation occurs in main/ui thread, loop tied to Tkinter 'after' function

When the step button is pressed in SimulationWindow, the GameController executes a simulation step in the main thread of the program. This makes the UI unresponsive until it completes.

When the start button is pressed in SimulationWindow, the GameController performs a loop using the Tkinter 'after' function. This functionality should not be used as it creates a dependency to the Tkinter UI. This should be replaced with a pause or sleep loop inside a different thread.

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.