Comments (5)
As far as I can think of ... 2 thing should be taken into account.
- To support general poinit mutation (allow duplicated element inside a gene), a list of possible elements of a gene should be passed into OCL kernel. ==> Should not be a big problem.
- The dna length of a gene is able to greater than 1, that is, are we gonna support genes with variable length ?
I don't think it's a easy task. IMO, it's quite tough. We may need to create a 2-D array of chromosomes in OCL Kernel to make it easy for crossover. We may need extra array to deliver the length of each chromosome (or even gene).
If we're not gonna support. Then user need to think of a way, e.g. fill additional 0 into a gene's dna sequence to make every gene equal in length.
Thoughts ?
from openclga.
https://github.com/PyOCL/oclGA/wiki/Proposal-of-OpenCL-GA
To support general poinit mutation (allow duplicated element inside a gene), a list of possible elements of a gene should be passed into OCL kernel. ==> Should not be a big problem.
In my design, it can be passed through the source code generation. You give me a good hint that the data will be put at stack if I put the data in source code. And if we pass data through function call, the data will be in heap. That should be better....
The dna length of a gene is able to greater than 1, that is, are we gonna support genes with variable length ?
This is a nice catch. I don't think we need to implement it now. It's called GP if we have variable length gene. It is important and we need to implement it in the future. BTW, in my design, we can implement different Gene in both python and CL to support it.
I don't think it's a easy task. IMO, it's quite tough. We may need to create a 2-D array of chromosomes in OCL Kernel to make it easy for crossover. We may need extra array to deliver the length of each chromosome (or even gene).
This one is also a good point. I cannot find any use case now. And it is worth to have further discussion.
If we're not gonna support. Then user need to think of a way, e.g. fill additional 0 into a gene's dna sequence to make every gene equal in length.
I don't think so. We can fill a lot of 0 in python for user If we really need to say oclGA supports it.
from openclga.
An example implementation of my proposal can be found here: https://github.com/PyOCL/oclGA/tree/1e2e0be35e66ecd08a5caaa882f73be886354783/evaluation/oclGA
from openclga.
As per offline discussion, we found the implementation of crossover or mutation doesn't give us good solution. There are few docs for this topic here:
- http://user.ceng.metu.edu.tr/~ucoluk/research/publications/tspnew.pdf (paper)
- http://www.obitko.com/tutorials/genetic-algorithms/tsp-example.php (simple explanation)
- http://www.theprojectspot.com/tutorial-post/applying-a-genetic-algorithm-to-the-travelling-salesman-problem/5 (a java implementation)
- https://github.com/parano/GeneticAlgorithm-TSP (a very impressive implementation in JS, 200 cities in JS)
from openclga.
The first version of oclGA is implemented at evaluation folder. I close this issue and file another for moving the code to root.
from openclga.
Related Issues (20)
- more documents and wikis HOT 1
- Block connection when websocket is used
- Block connections when server is preparing and resume it after server is stopped HOT 1
- charts at UI
- extinction mode
- Elitism mode HOT 1
- move UI out of OpenCLGA to be another repo
- support web server public folder
- test and support UI viewer mode
- try to use pyopencl -D to define preprocess definitions.
- controller no response while we use small population HOT 2
- Move statistic information best/avg/worst into ocl_ga
- Make statistic information best/worst be able to track more.
- worker disconnected is not dispatched when we use ctrl+c to stop it HOT 1
- Make "MessageHandler.sendq" thread-safe.
- elitism mode is not working HOT 1
- Implement Ant colony optimization algorithm based on PyOpenCL HOT 2
- Stabililize server/client socket connection
- Improve UI performance HOT 1
- Support Simulated Annealing Algorithm (Python Version) HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from openclga.