-
Notifications
You must be signed in to change notification settings - Fork 22
Java package for meta-heuristic searches
License
mucherino/binMeta
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
binMeta project This Java project intends collecting, in one unique Java package, several meta-heuristic searches that have been proposed over the last years for the solution of combinatorial optimization problems. The solutions to the optimization problems are represented via the "immutable" objects of the Data class, where the representation is essentially given by a bit string. Data objects can be grouped together by using a Memory object, which is supposed to automatically manage situations where the limit on storage capacity is reached, by using different kinds of algorithms for the selection of the "victims" to be removed. Every optimization problem, i.e. the class related to its objective function, needs to implement the Objective interface. At the current stage of development, the repository contains the following list of implementations of Objective: 1. BitCounter (trivial problem included in the initial commit of this project) 2. ColorPartition (toy problem with a graphic representation of the solutions in 2D) 3. Fermat (toy problem inspired by the famous "last" Fermat theorem) 4. Pi (toy problem where three real numbers are represented by one unique bit string) 5. SubsetSum 6. NumberPartition 7. Knapsack 8. SetCover Notice that the last two implementations concern problems with constraints, which have been included in the objective function by adding penalty terms. Every meta-heuristic search needs to inherit from the binMeta abstract class. They can also implement Objective if one wants to use one meta-heuristic search for finding the optimal parameters of another meta-heuristic search, either for a particular optimization problem, or for a set of given problems. At the current stage of development, the repository contains the following list of meta-heuristic searches: 1. RandomWalk 2. WolfSearch 3. MultiStart 4. VariableNeighbourhoodSearch (with several of its variants) Only exception to the rule: the LocalOpt class inherits from bitMeta but it does not implement a meta-heuristic search. LocalOpt implements a simple method for local optimization. This Java project has begun by collecting some of the best implementations resulting from Master projects at University of Rennes1. Credit to the students is given in the following way: -> the mention "proposed by" means that the student has simply proposed the implementation of a method or class, but the published implementation is not his/hers. -> the mention "initial version coded by" means that the student has submitted a good implementation of the method or the class, but changes have been subsequently performed (this may simply be due to ensure compatibility with the other classes). -> the mention "coded by" means that the code for the method or the class is the one provided by the student, with very light changes (if any). The implementations are mainly collected from the projects of the course on "Multi-threading Operating Systems" (Master in Computer Science, first year, ISTIC, University of Rennes1), as well as from the professional projects of MIAGE Master students (both first and second year, ISTIC, University of Rennes1). More recently, a PhD student also contributed. When a commit holds the name of a course, this indicates that it represents the last commit related to the work performed in the framework of that course, together with the academic year. When a commit holds the name of a conference (or any other scientific publication), this indicates that the code was used for the computational experiments presented in that scientific publication. When the contribution of a student is considered to be rather important, the student is invited to make a push request on the repository. And finally: why "binMeta"? Well, the "bin" part can be interpreted as "binary", which is important to point out in this project because all the implemented meta-heuristic searches are supposed to directly work with binary representations of the data. Moreover, if you know some German, the "bin" may remind you of "(ich) bin" (I am), followed by "Meta", which is part of "meta-heuristic", but it can also be interpreted in our case as something beyond the simple implementation of one meta-heuristic search. April 24th, 2023 Antonio Mucherino
About
Java package for meta-heuristic searches
Resources
License
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published