|
From: Theuns C. <the...@gm...> - 2009-06-10 06:41:46
|
Hi all, This is the fourth iteration of my set of patches after a rebase from the latest 'master'. You can therefore safely ignore the previous set of patches that I sent to the mailing list. I would appreciate it if we could apply these patches as soon as possible, because each time there is some change to master, I have to rebase and sort out a lot of conflicts which takes a considerable amount of time. During every rebase it is becoming more difficult to remember all the changes that have already been merged and those that still needs to be merged. Feel free to comment and send patches. I think it is time that I put it out there, so that other people can have a look and suggest or make improvements. That's why we switched to Git, right? To make this type of collaboration quicker and easier. The patches include the following: --- begin clustering branch --- 1. This patch includes all the changes I had in my Subversion repository. It includes various updates that range from clustering (mostly) to dynamic environments (less). It also included the dynamic environments stuff that Leo sent through, but it was again merged in a later patch. Git incorporated this into patch 7. This patch also includes the ChargedSwarmInitialisationStrategy which deprecates the ChargedParticleInitialisationStrategy. 2. Renamed a detection strategy. 3. Small cleanup like removing a super() etc. 4. Renamed a method and updated some JavaDoc. 5. Added trivial centroid diversification feature for KMeans. 6. Rebased from the "tabs to spaces" patch. I also fixed my own white space issues. This patch also includes some dynamic environment changes. 7. Added centroid reinitialisation feature for KMeans, as part of centroid initialisation strategy. 8. Update the kmeans.xml file to show examples of using centroid initialisation and diversification. 9. Implemented methods in StatUtils to calculate a variance vector and standard deviation vector. Made use of these methods in clustering measurements. 10. Fixed merge mistakes regarding the pso.dynamic package that were made in previous patches. UPDATE: After another rebase these mistakes were handled correctly in previous patches. This patch can probably be squashed into the next patch. This patch now only contains renames and minor changes regarding the pso.dynamic package. 11. Fixed some mistakes regarding the VonNeumannTopology and CompetitiveCoevolutionParticleReevaluationResponseStrategy that crept in due to the rebase. UPDATE: After another rebase, these mistakes were handled correctly in previous patches. This patch can probably be squashed into the next patch. 12. Various changes that I had to commit in order to rebase. --- end clustering branch --- --- begin multi-threaded-split-coop-alg branch --- NOTE: Patch 13 is still experimental. I would appreciate some feedback. 13. Trying something new: Multi-threaded SplitCooperativeAlgorithm. The idea is to execute each sub-algorithm in its own thread, thereby improving the performance of the SplitCooperateAlgorithm, especially on computers with more than one core. This works very nicely, as long as the algorithm you are using and the problem you are optimising never uses Algorithm.get(), because the algorithm stack is not thread safe. We need some elegant and simple way of getting hold of either the main algorithm or the currently executing sub-algorithm in a thread safe manner. I hope we can find a way by making use of Guice. So try it out and let me know what you think. NOTE: Patch 14 still needs some work. I would appreciate some feedback. 14. Big changes regarding clustering as a result of patch 13. 14.a. The Pattern class was moved to the type.types.container package as Pattern<S extends Vector> and it is now a ForwardingStructuredType<S>. 14.b. The Cluster<Vector> class was introduced which is a Set<Pattern<Vector>>, i.e. also a Type. 14.c. The multi-threaded behaviour of patch 13 caused the entire ClusteringUtils class to break, because it was not thread safe, because it contained state. The ClusteringUtils class was therefore trimmed down and does not contain state anymore. It also makes use of the changes mentioned in 14.a to 14.b. 14.d. Everything else that depend on the clustering code was updated. --- end multi-threaded-split-coop-alg branch --- Look at the commit messages and content of each patch to get a better idea of what each patch contains. |