andrei-straut / gaps Goto Github PK
View Code? Open in Web Editor NEWGenetic Algorithm Path Search
Home Page: https://www.andreistraut.info/gaps
License: MIT License
Genetic Algorithm Path Search
Home Page: https://www.andreistraut.info/gaps
License: MIT License
At the moment, if no initial population can be generated (i.e. initial paths from source to destination), the GA still keeps trying to evolve data that isn't there. Make sure that the genetic evolution stage is not called if no initial paths are found.
Also throw an error / warning message if that happes
On small screens, there is a horizontal scrollbar due 'page-inner' fixed margin-left (current 60px). Replace fixed margin values with auto and add a fixed padding-left. Also, this way the element width can be increased to 100% (current 95). Style should be the following:
#page-inner {
width: 100%;
margin: auto;
background-color: #fff !important;
padding: 10px;
padding-left: 60px;
}
Now that graph upload is operational, remove requirement that source and destination IDs be integers, as we can perfectly have Strings.
Client-side, make a suggestion input text, and server-side should take a simple lookup in graph.getNodeById(string id) to make it work.
Also, nice-to-have would be a right-click on a node in the grap =>, pop-up => select as source / destination
Implement possibility of rendering and using multiple edges between the same two nodes (at least conceptually, if not visually as well).
Currently exists on server-side, however Infovis limitations prevent usage; workaround needed
Genetic Evolve request has changed, extra parameters were added. Document them
Currently, initial population is generated using a Depth-First Search (DFS) approach (no optimal search, we don't care about initial population performance).
However, this leads to little genetic variety (most paths will be approximately equal) and plateaus in genetic evolution. Combine DFS with a Breadth-First Search (BFS) when generating initial populations, in order to have more genetic variety (also, almost by definition, BFS paths should be much closer to optimum, at least in graphs with large number of edges).
An awesome nice-to-have would be a possible customization of the percentage generated with each approach (for instance, a way to specify "Generate 20% of initial pop using BFS, and 80% using DFS")
Comparison statistics reset was not implemented along with comparison itself, which will cause problems when re-computing genetic evolution without refreshing the page
This is prioritary.
Allow the upload of custom graphs (Infovis JSON format) in order to have a possibility of graph re-use, as currently graphs are generated semi-randomly
Implement performance comparisons for statistics, after evolving the paths and reaching the algorithm end.
A good metric would be comparison with JGraphT's KShortestPath search (already done server-side, data needs to be sent to client). This comparison should be done in both time and cost / fitness dimensions.
Also, mandatory additional metrics should be Djikstra and Bellman-Ford (cost / fitness dimensions)
When (re)-computing and displaying statistics, there's an issue in which, if any statistic is collapsed (hidden), the flags get switched over and "On" state becomes "Off", Make sure to properly update the flags when computing statistics.
Reproduce (1):
Reproduce (2):
Reproduce (3):
Add an FAQ / help page with a tutorial, and / or details on application
Offer more possibilities of customizing the GA's parameters:
On second or subsequent evolution runs (with graph re-computed or not), genetic statistics slider keeps previous datapoints for reference, which in turn causes JS errors
When re-evolving, first reset the slider
At the moment, the "Generate" and "Evolve" buttons are kept as active when computing graph or evolving paths. This leaves the possibility of sending new processing requests while still computing the old ones, which in turn causes calculation and statistics problems on client side.
Disable the two buttons every time a processing request is sent, and enable them again when request is finished
Allow negative edge weights in graphs (should work out-of-the-box server side, currently disallowed for simplicity reasons)
Some requests silently fail, without reasons why. Implement a timeout so that, when it finishes, the request currently in progress is discarded and an error message is shown
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.