Coder Social home page Coder Social logo

leniax's People

Contributors

morgangiraud avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

joshnunley

leniax's Issues

Multi-world simulation

I would be interested to see what happens if we divide the world in sub-world containing different rules set.
Especially, what would happen at the frontiers?

Documentation

TODO:

  • Finish API reference
  • Add a QD search notebook example
  • Add an optimization notebook example
  • Update the logo with a transparent background
  • Finish installation.md
  • Finish overview.md
  • Review all the documentation
  • Review all the examples
  • Review all the notebooks

Write a paper

Idea 1

Quality-discovery algorithm for automated discovery of stable patterns in a chaotic environment

Main ideas:

  • leverage QD algorithm
  • Leverage hierarchical creature complexity (phylogeny)
  • Leverage human-computer interactions. Computer for raw search over the space using heuristics, humans for curation of potential results)

Idea 2

Push forward the fact that the library unificate computation from CGOL to Neural Lenia

Links:

Windows Support

Does this project support Windows 11? If so, can you provide a detailed installation guide? If not, can you create a Windows compatible version? Thanks in advance.

Memory usage

TODO:

  • Investigate memory usage on CPU
  • Investigate memory usage on GPU

3 dimensions

TODO:

  • Make leniax pipeline to run 3d species
  • Make leniax pipeline to search 3d species
  • Make leniax pipeline to vizualise 3d species

Perf benchmark script

To track progress on performance I need to write some performance tests

TODO:

  • Check perf of run without FFT
  • Check perf of run_scan with FFT
  • Check perf of run_scan_mem_optimized without FFT
  • Check perf of run_scan_mem_optimized with FFT
  • Add channel_last property for perf test
  • Check perf of gradient pipeline

Links

NFT smart contract

We will create a smart contract satisfying the ERC721 and we will ensure it works with opensea.io.

The best way to do that is to follow their doc and then add our custom functions.

Our end goal is to have a contract which mints new NFTs based on the total amount of transactions ethers that happen when a previous minted NFT is bought:

  • Only the firest Lenia is minted when the contract is created (associated with the address owner)
  • People can buy them and resell them
  • Each transaction add its amount to the total_transfered variable in the smart contract
  • Each time a new threshold is passed, the contract mint the next Lenia.
    • This Lenia is randomly given to an account that already owned a Lenia
    • The more Lenia you owned, the higher your chance to be selected in the pseudo-random function
  • Those thresholds follow the production function. (see at the root of the repo).
  • We would like to create NFTs that are as close as possible to real NFT in the sense that every piece of them should be as much decentralized and open as possible (DNS, storage, etc.)
  • We would like to make the contract completely autonomous (once it is deployed, no need to touch it anymore)

Money redistribution:

  • Every first sell is linked with the owner account so we do not have to do anything
  • We will use opensea.io to harvest a percentage of every resells.
  • If we work with outside help, it could be interesting to add a mechanism to automatically redistribute money to them (not sure this is possible with opensea.io. If it is not possible, we will just make manual transactions every month or more)

TODO:

  • Define the price at which Lenias are originally sold
  • Define the percentage of fees on reselling
  • Create the contract

Website Content

  • The main philosophy will be explained under the "Proof Of Lenia" concept: 10 individuals per generation, x descending generations with each being unlocked through an increasing threshold amount of Lenia transactions in ETH.
  • It's much better than CryptoPunks but also less shittier.
  • Are you tired of owning dumb static images of (and this example is not tied to reality) punks and cats? Be ready for birthing pure mathematical creatures generated by an AI algorithm.
  • Why trusting us? You are right, well don't trust us, trust the Lenia smart contract source code. No ownership, no backdoor functions, it lives life on its own terms like a Lenia.
  • We will release the Lenia generation source code once everything is minted.

Marketing

For now, here is the following revenu structure:

Lenias are minted during a transaction (when a transaction threshold is reached), therefore no money is coming from new Lenias. To make money from the project we will simply apply a fee to each transaction.

Currently, I would love to have something like the following:

  • 10% fees on each transaction
  • 1% of that 10% is redistributed to the original researcher behind Lenias
  • 0.5% of that 10% is redistributed to the creator of qdpy
  • 3.5% of that 10% is redistributed to an association that tries to save aquatic species
  • 20% of that 10% is redistributed to the people doing communication
  • 70% of that 10% is redistributed to Stockmouton

Other ideas:

  • We need a nice front page explaining the project
  • It would be cool to do a talk on Youtube explaining the concept too

Release Leniax in OpenSource

TODO:

  • #15
  • #24
  • #28
  • #30
  • Clean all files
  • Improve Readme.md
  • Write a blog post showing the capabilities
  • Write a twitter thread

Goals of Leniax:

  • Provide a single codebase to simulate cellular automata from CGOL to Neural Lenia
  • Easily and efficiently run a Lenia simulation
  • Easily and efficiently run a creature search
  • Easily and efficiently optimize any inputs of the pipeline
  • Easily and efficiently visualize results

API v2

Before releasing the 2nd version of the lib, I would like to refactor the API to easily handle more diverse tasks:

TPU

TODO:

  • Make the code work on TPU collab
  • Make a perf test on google compute with real TPU

Collection v2

TODO:

  • #13
  • #15
  • #18 (we also need the technical blog post serie)
  • Decide if we go 2channels or directly 3 channels Lenia
  • Run the search over all Lenia
  • Curate the 2nd collection
  • Work on design
  • Work on smart contracts
  • Work on the associated dynamics with a token

Side-todo:

  • Since direct 2d1c2k descendants are not worthy enough of a new collection, check results for lenia descendants 2d2c4k

pyribs API changing

Hi @morgangiraud! I see that your project depends on pyribs>=0.4.0. I wanted to let you know that we will be releasing pyribs 0.5.0 in a few weeks, which will have a very different API than pyribs 0.4.0. To avoid breaking your library, I suggest pinning pyribs to 0.4.0 in your setup.py file or upgrading as necessary. Thank you!

Improve QD algorithm

TODO:

  • Make initialization parameters accessible to QD API
  • Check QD performance
  • Check QD memory usage
  • Fork pyribs and move from numba to jax
  • Explore qdax and evojax to replace pyribs

CGOL notebook

To make the library complete, I need to add a CGOL example and notebook

Make Leniax simulation fully differentiable

TODO:

  • Make leniax pipeline differentiable relative to initial conditions
  • Make leniax pipeline differentiable relative to kernel parameters
  • Make leniax pipeline differentiable relative to growth function parameters
  • Make leniax pipeline differentiable relative to world parameters

Step 1 can be tested with a search over initialization using SGD, a RL-style objectify on the length andsome CPPN/SIREN network.

init

Project timeline:

  • Develop the tools to discover 100 Lenias
  • Create a 100 Lenias
  • Defines all the metadata associated to the collection
  • Design the threshold function to reveal Lenias
  • Develop the NFT smart contract / token for our Lenias
  • Choose on which platform we publish our collection
  • Create a landing page
  • Create a technical blog post
  • Publish!

Deadline: 1er Juin !

Let's go !

Links:

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.