GithubHelp home page GithubHelp logo

jotoh98 / evosearch Goto Github PK

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

Research into genetic algorithms related to undirected point search in the plane

Home Page: https://jotoh98.github.io/evoSearch/

License: Apache License 2.0

Java 93.40% CSS 6.60%
genetic-algorithm geometry geometric-algorithms jenetics java

evosearch's Introduction

javadoc maven DeepCode badge

How to run

  1. Install IntelliJ
  2. Clone the project fom Github using git
  3. Install the lombok plugin https://projectlombok.org/setup/intellij
  4. Enable 'Annotation processing' in Preferences > Build, Execution, Deployment > Compiler > Annotation Processors
  5. In the maven Tab on the right, hit refresh to download the dependencies
  6. Click on run

What is evoSearch?

This project arises in the course of my bachelor thesis, which examines the behavior of genetic algorithms on the following geometric problem: We choose a certain amount of equally distributed one-dimensional sub-spaces of the two-dimensional space, all sharing the origin as one element. In one of those sub-spaces we place a treasure point and get a list of distances which are transferred into points with corresponding distances to the origin. Now the problem is:

How do we distribute these points to find treasures efficiently?

evosearch's People

Contributors

dependabot[bot] avatar jotoh98 avatar

Watchers

 avatar

evosearch's Issues

Indicate a loss of configuration

When changing a configuration after running a few times (like shuffling in #5), a prompt should ask the user, if the last runs should be saved and then discarded from the configuration.

Removed project folders

Folder which are removed out of scope of evoSearch (in file browser, etc.) dont appear corrupted and throw an exception if selected nevertheless.

Worst Case Fill In

Construct the spiral/circle fill in between the last point in the chromosome and the worst-case treasure.

Random distances instantiator

Button with some configurations to create a set of random distances.
Currently, the configuration class only has an int value for random distances to create. We want fixed values unless we shuffle a new set of them.

Multi-Fitness-Experiments

Construct an experiment to research the impact of the

  • amount and the
  • relative positions

of treasures on the evaluation.

The experiment should also be reproducible so there should be an option to set a seed should be added to the assignable cli args.

  • seed in cli
  • RandomRegistry only

Result metrics

Implement some metric analyzing the resulting individual (like Spiral-like-ness in #9). These could be saved in json or exported individually.

Rays are offset

The central rays are offset a little bit. I suppose this happens because of precision problems.
Try to set the second (directional) point as far away, as the distance between the origin and the outermost point of the canvas boundary.

Worst-Case Fitness

Create a fitness function minimizing the worst case scenarios for each point in the chromosome.

Mutable distances

The distances should be mutable. Either through a mutator or a full crossover regarding whole genes.

Direct project passthrough

Unless the users closes the current project, the ChooserForm should pass the user directly through to the current project.
Suggestion:

  • add openProject to the global .evoSearch configs
  • let ChooserForm pass through to the current project, if one is set
  • delete openProject, if the MainForm is closed

No Multithreading

The environment holding a run configuration is currently implemented as a singleton. Thus preventing the evolution to run simultaneously in a multi-threaded environment.

Configuration window is blank

When opening the config window, the window stays blank and the application freezes. I assume a ui bug with an endless loop.

Export (Import) formats for runs

Should support csv, json and xml.
Exports

  • csv
  • json
  • xml

Imports

  • csv
  • json
  • xml

Maybe start with a paste action on the MainForm (or Canvas even).

Run history

A history for a single run to monitor the evolution of the individuals. Maybe animate this step?

hidpi bug in canvas

When using a high dpi display, the applications mouse representation is scaled to 50% down - the mouse dragging on the canvas does not work appropriately.

Add a JPopupMenu DSL to MenuService

If we like to introduce JPopupMenus, it also should get an easy-to-read DSL apporach in MenuService. This class only appears once setting the JMenuBar up but has all the DSL methods needed for popups.

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.