Giter VIP home page Giter VIP logo

swift-growth's Introduction

What is Swift Growth?

This began as a Swift port of the wonderful project biosim4 by David R. Miller. I've always been interested in neural networks, but had never really done anything with them, after watching David's video about his project, I was inspired to get a better understanding for how these worked. As an iOS developer, I'm most familiar with Swift, and thought porting the project would be a good way to learn.

I originally considered calling this biosim4-swift to make the connection more obvious, but as I work on it more I've realized I don't want this to be a 1-to-1 port, and would like to have it "grow" in it's own direction.

Controls

Up Arrow - Output current genetic diversity Down Arrow - Toggle pause Left Arrow/Right Arrow - Decrement/Increment Steps per Refresh Left Arrow (when paused, and steps per refresh is 1) - Step backwards in history

"Barrier" UI Button - Enable placement of barriers via mouse press. By default these barriers are persisted across generations "Kill" UI Button - Enable deletion of individuals via mouse press "Select" UI Button - Enable selection of individuals via mouse press (selection does nothing at present)

Parameters

Many values can be tweaked, and these can be found within Parameters.swift

Limitations

Currently this only works on MacOS, but given that it uses SpriteKit, it should be fairly easy to port to other Apple OSes. Performance is an active area of development, and eventually I might move to something more low level than SpriteKit (ex. Metal)

Plans

Note that this is a side-project, so take everything in these plans with a grain of salt.

  • Multiplatform (iOS, iPadOS, MacOS)
  • Dynamic parameters (ex. change population, challenge etc. at runtime)
  • Interacting with grid - drawing barriers and "safe areas" at runtime
  • Interacting with individuals
    • View representation of neural net
    • Adjust lifespan (ex. make a specific individual immortal)
  • Energy cost/reward (ex. movement takes X units of energy)
  • Mutation rate based on proximity to radiation sources
  • Heat sources
  • Save/load parameters and populations
  • Time controls (partially implemented, but currently no way to go back in time)

swift-growth's People

Contributors

nmccann avatar

Watchers

 avatar  avatar

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.