GithubHelp home page GithubHelp logo

vaua / weko Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 6.39 MB

Implementation of a simple agent based simulation environment with evolutionary spice.

JavaScript 97.58% CSS 1.84% HTML 0.58%

weko's Introduction

weko

Hello visitor!

What is this?

This project aims at creating a world inhibited with small animals. Animals in their own turn consist of cells, and always start out with one single cell (sounds familiar)? Each animal has its own specific (random initially) DNA, which is placed in each animal cell and controls the actions of the cell. In each point in time, each cell in animal can decide whether to duplicate and create another cell (animal grows) to specialize and become for instance a neural cell, or to specialize even more and become motor or sensory cell. Cells that turn into neural cells create a neural network, that (if connections are right, and yes, the connection pattern is also controlled by the DNA) can get inputs from sensory cells and control in turn motor cells. Animals are not alone in the world, there is also food and danger. Animals need food to increase their health, as each tick in time deminishes their health (the more cells they have the more health is deminished). Also meeting danger has negative impact on the health. Animals can also choose to fork (and this is also controlled by DNA). When forking, the animal creates a new single-cell animal entity that will have same or slightly mutated DNA as the original cell, while paying a price in health. If animal health goes to 0 or below, it dies.

So, what's the point, purpose and the goal of all this? Well, the postulate is that over time and countless random DNA strains and mutation, such animal forms will appear that have a simple neural network that can take in inputs from the world (where is food and danger) and then move the animal accordingly in this little world to maximaze the food intake and minimize the danger exposure. At this point, we have created someting akin to an artificial C.elegans or similar. Now, with the working sensed and some good DNA strains, we can start increasing the sensory inputs and types of things in the world, while constantly evolving the animals. Then? Who knows. No idea. But this is exciting. It is within the reach, and it really feels like a first baby step towards creating a body for general artificial intelligence. Sorry. I went overboard. But admit, it is exciting!

But just a crazy example. Let's say we get that far that we create a sensory organ for reading and consuming letters. And then a motory organ that can produce HTTP commands to move around the WWW. Then we unleash the animal to move across the internet, read the pages, consume and (over time) understand them. Understanding is the last step where cortex-like feature will be needed (hello HTM!) But we will have a body and basal brain to smack it on! Holy cow and happy day together!

How to participate?

At this point, it is too early to participate in any form other than encuraging me and telling me how awesome this is and how you've been dreaming about this your whole life (like I have). Soon enough, in a few weeks, months or years, there will be a web site, where you will be able to see simulations running. At that point, a greater degree of participation will be possible. Until then, tata!

weko's People

Contributors

vanjapupavac avatar vaua avatar

Watchers

 avatar

weko's Issues

Change interpretation of division gene

As a God, I want cells to specialize and allow for differentiation. Right now, the number after division just says how many times to divide. Change this so that the number instead says where from the keep executing in the DNA.

The number should be percentage. Let's say max is 10. The 2 is 20%. So, upon division, the start "counter" is put to 20% of the DNA. Hey ho.

Add support for sensing to the animal

There should be a concept by which the animal can query the world about what it is sensing. The world should answer with the view on position (both in space and in time) of food and danger (initially). Animal should be able to discern the type of object and position (in 2d) if correct analytic structure exists.

Add more control parameters to UI

As Weko God, I want to be able to play with more parameters and settings directly from the app UI. Create an initially hidden area with all constants pre-filled with their initial values.

As a bonus, find a way to save changed values if user would alter them.

Improve DNA-hall of fame and procreation algorithm

As Weko God procreation is my main tool to reduce retardedness in my world. I want to improve DNA hall of fame so that several animals can be represented there, and also decide how much of each is added. I want also to be able to introduce mutations in the DNA that is getting reproduced.

Add help popup to the UI

As Weko God, I always want other to understand my world. Once other are to access it, they need to be told what it is. Add some help / info popups explaining the main settings and controls, as well as how to interpret the stats.

Add Weko to Celink.se as a demo app

As a Weko God, I want other people to see and admire my retarded universe. I would therefore like to give access to everybody to play around with Weko.

This ticket depends on a few other... for example #18 , #15 .

Add support for position in the world

The world currently has no concept of position. Add this concept, so that all animals can be placed in some position. Initially, we will start with two positions, but this should be changed/increased in the future. Food and danger should also be placable in positions (even though these need to have a second component, of how far in time they are).

Constants class

Create a file / class with all relevant constants, so that the world can be controlled from one place...

Add a forking mechanism

Add a mechanism for animal forking, by which animal decides to create a new animal based on it's own DNA. Animal should lose some of its health by doing this, and some kind of "mutation" can potentially be applied to the animal DNA.

Create protein class

Move protein handling and creation into a separate class. This should make it easier to both create and define the proteins, and also remove some of the clutter in the Cell-class.

Some issues to be resolved: instantiation of this class, how proteins are added and stored. What should be hardcored, and what directly controlled by DNA/genes?

Fix and reintroduce spawning

As Weko God, I want my animals to spawn on their own, as controlled by their DNA. This is currently disabled due to some nasty side effects. Fix this so that animals can procreate on their own, in addition to my own procreation scenarios.

Add possibility to develop neural cells in animal

Add a concept of neural cells, and a mechanism for their development under certain situation. Neural cells will have a possibility to connect to other neural cells, and to accept incoming connection. In each tick, neural cells will calculate the inputs and sometimes create outputs. There should also be some kind of mechanism for connection permaence and/or strength adjustment.

Add support for food and danger in the world

Add concept of food and danger to the world. Both items should be placable in a specific position, and should also support a concept of "time", meaning that they are "nearing" the animals over a few steps, with each step in time becoming closer, until they actually meet the animal.
If animal meets the food, it health goes up, if it meets danger, its health goes down.

Hand create an animal that works

As Weko God, I want to make sure there is a path to retardedness. I will therefore try to create an animal that works, so called creationism.

Move Weko to Amazon cloud (AWS)

As Weko God, I want my retarded world to run very quickly and become much less retarded over time. Therefore I would like to run it in AWS. This ticket is to attempt to upload and run Weko on a Amazon AWS. When successful, close this ticket, and explain a bit the change in stats.

Improve server client communication

As a Weko God, I would like the server/client communication to be as light and lazy as possible, while still providing all wanted info. Change the communication so that only relevant world updates are published after every batch run. If animal is clicked, then only its stats are fetched. If a cell is clicked, then only its values are fetched.

Create a client web site and websocket mechanism

To enable graphical world watching, create a web site which can query the server (or accept broadcast messages) for position, size, health etc of the animals (the world status basically), and can present this to the user in a good way.

Add protein that inhibits cell division

As Weko God, I'd like my subjects to become less retarded. If they grow too large, the chance of them getting smart is reduced. Introduce therefore a protein that inhibits growth.

Add ability to move to the animal

Animal should be able to tell the world that it wants to move from one position to another (adjecent?) position. The mechanism for animal deciding to move is handled elsewhere.

Improve UI by adding more stats

As a Weko God, I want to understand the retarded world I've created a bit better. Therefore I would like to see more graphs and stats in the UI. Examples:

  • Graph over animals health over time (with moves and food/danger noted)
  • Information on specific cell (protein levels, DNA) when clicked on
  • More averages (average cell size on death), of cells that can move etc.

Enable multiple clients connecting to the server

As Weko God, I would like to enable several demi gods to play with my world. Therefore I would like to make it possible for server to differentiate between different client sessions. The sockets should be saved for different clients and used properly so that several sessions can be active in parallel.

Any other bugs existing should also be fixed as we go at it.

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.