https://github.com/danielholmes/smart-sweepers-scala
Neural Network driven MineSweeper that interacts with mines and rocks
https://github.com/danielholmes/smart-sweepers-scala
evolutionary-algorithm genetic-algorithm neural-nets neural-network scala
Last synced: 3 months ago
JSON representation
Neural Network driven MineSweeper that interacts with mines and rocks
- Host: GitHub
- URL: https://github.com/danielholmes/smart-sweepers-scala
- Owner: danielholmes
- Created: 2016-09-26T03:22:34.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2016-10-09T11:01:47.000Z (over 8 years ago)
- Last Synced: 2025-02-10T01:41:25.614Z (4 months ago)
- Topics: evolutionary-algorithm, genetic-algorithm, neural-nets, neural-network, scala
- Language: Scala
- Homepage:
- Size: 85 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Neural Network Minesweeper
An implementation of the the tutorial outlined here: (http://www.ai-junkie.com/ann/evolved/nnt1.html). It is a
Feedforward Neural Network with supervised learning (a simulation environment) used for the purpose of collecting mines## Dependencies
- SBT
- JDK 8+
- Scala 2.11## Tests
- All: `sbt test`
- Individual: `sbt 'test-only org.danielholmes.smartsweepers.nn.NeuralNetSpec'`
- Individual continuous: `sbt ~'test-only org.danielholmes.smartsweepers.nn.NeuralNetSpec'`## Running
`sbt run`
## Observations
I've included a few different fitness strategies. They require some fine tuning to the environment - especially the
avoidance fitnesses. For example a fitness to collect mines and avoid rocks - if you punish rock hitting too much then
a spin on the spot strategy is developed (same as the simple avoid only fitnesses)## TODO
- Move params.ini and fitness selection into a UI
- Graph negative fitnesses better
- Try a mutable Simulation vs immutable/fully functional to see performance differences