leshchenko1979 / fishbowl Goto Github PK
View Code? Open in Web Editor NEWSimulating evolution of fish intelligence in a fishbowl using genetic algorithms
Simulating evolution of fish intelligence in a fishbowl using genetic algorithms
Itβs time to implement vision and turn steering actions back on again.
Food perception can be implemented effectively through reading the foodDensity array instead of trying to analyze the position of every food piece.
Other fish can be sensed just by going through the fish array and incrementing a counter by 1/distance.
Investigate and, if confirmed, insert an additional network into neat.population when splitting the fish
Evolution is stifled because immobile fish that grow at the start due to appearing on top of food get promoted unfairly
E.g., if the result of brain.activate is between 0 and 1, then accelerate in between 0% and 100% accordingly.
Same with turning.
All fish start from one point in the direction of one food
Food is positioned randomly in the area where all the fish are directed
Fitness is 1 / closest dist to the food
Shorter gen duration (approx the time it takes the fish to reach the food directly plus some leeway)
Sim running until all fish in the generation hit the food
Fish quickly and steadily lose weight and die
Use https://getbootstrap.com/docs/4.4/components/modal/#vertically-centered
On smaller screens you need to scroll to get to the options. This should be corrected by moving some of the contents of the left column to a pop-up / modal / accordeon.
Consider introducing disparity in size decrease based on:
Food density as a way to discover different evolution strategies doesn't serve its role.
Food density in the eyes of fish is proportional to the (amount of food / area of the fishbowl / fish max speed). Secondly, although the starting amount of food may be high, the amount of other fish may quickly drive it down.
So, the "food amount parameter" should be replaced with food density at least, or, maybe, with food density / fish density.
Leave only speed as input and split and pulse as outputs
Originally posted by @leshchenko1979 in #20 (comment)
Should probably try neat.evolve () instead of producing offspring one by one
So that further mutations are standing on the shoulders of giants instead of starting from scratch each time the app is launched
Give the user the ability to turn off / on senses and actions
Conical vision makes it easier to gradually zoom in on the target as you move. Linear vision (like now) makes the fish lose a moving target and miss a lot of food that's away from the view axis.
Needs fixing the bounce mechanics
Should also fix #39
Make it a 2D-array - will help avoid bugs
was broken by #34
Probably use https://github.com/wagenaartje/neataptic/tree/master/graph - should work well with carrot's networks.
Line 163 in a93955c
Replace with per-generation stats or decimate data
the food on the right side of the screen stops growing while the left goes on
Their sum should be 100, but it isn't
It would be nice to give the fish a sense of how far the food is. It would certainly give them hint how big the pulse should be.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. πππ
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google β€οΈ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.