{"id":19029015,"url":"https://github.com/joonasvali/mirrors","last_synced_at":"2025-08-19T05:09:22.394Z","repository":{"id":28755954,"uuid":"119248546","full_name":"JoonasVali/mirrors","owner":"JoonasVali","description":"Mirrors is a simulation of an arbitrary physical system, where the goal is achieved using artificial evolution.","archived":false,"fork":false,"pushed_at":"2024-01-25T16:52:01.000Z","size":881,"stargazers_count":7,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-06-27T22:45:10.936Z","etag":null,"topics":["artificial-evolution","evolution","genetic-algorithm","graphical-user-interface","simulation","watchmaker"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/JoonasVali.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-01-28T10:31:28.000Z","updated_at":"2023-11-10T21:23:51.000Z","dependencies_parsed_at":"2024-01-24T19:38:21.397Z","dependency_job_id":"a0651b06-dec7-40d3-b3e1-515ae44d125b","html_url":"https://github.com/JoonasVali/mirrors","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/JoonasVali/mirrors","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JoonasVali%2Fmirrors","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JoonasVali%2Fmirrors/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JoonasVali%2Fmirrors/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JoonasVali%2Fmirrors/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JoonasVali","download_url":"https://codeload.github.com/JoonasVali/mirrors/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JoonasVali%2Fmirrors/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271103202,"owners_count":24699646,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-19T02:00:09.176Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["artificial-evolution","evolution","genetic-algorithm","graphical-user-interface","simulation","watchmaker"],"created_at":"2024-11-08T21:12:58.490Z","updated_at":"2025-08-19T05:09:22.312Z","avatar_url":"https://github.com/JoonasVali.png","language":"Java","readme":"## Mirrors (C) Joonas Vali  (2014-2019) ##\n\n\"Mirrors\" is a simulation of an arbitrary physical system, where the goal is achieved using artificial evolution. \nThe simulation can be used to demonstrate how random mutations manage to create an overall progress towards perfection.\n\n## Demonstration video: ##\nhttps://www.youtube.com/watch?v=WEZ35350D2k\n\n## Images ##\n\n![Image 1](https://i.imgur.com/WCzh5E7.png)\n![Image 2](https://i.imgur.com/LECMDJ5.png)\n\n\n## What's going on there? ##\n\nThe simulation generates a wave of particles on a 2D plane and there exists a gathering point or goal for those particles, \nwhich counts how many and how fast the particles reached it by assigning score for each model (fitness of the model).\nWhile the particle emitter and goal are constants on the model, there are many modifiers that can appear/disappear and change\nin a particular model. The model composed of those modifiers is the evolving entity or organism, and\nthese modifiers in the model are generated via genes which are then either passed on during the selection process or not, based on how\nwell the model as a whole works. There are currently four types of modifiers: reflectors, benders, repellents and accelerators.\n\n## Running mirrors ##\n\nYou need:\nJava 16+ installed. JAVA_HOME set and java runtime in the path.\nMaven (I used 3.0.5 and 2.2.1, both worked).\n\n\n### Building application from source ###\n\nBuild application by `mvn clean package`\n\nIt will be fully runnable under `.build/target/mirrors/mirrors` (You can copy it anywhere from there once built.)\nThe runnables are located at `./build/target/mirrors/mirrors/bin` folder","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoonasvali%2Fmirrors","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjoonasvali%2Fmirrors","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoonasvali%2Fmirrors/lists"}