This is project that is used for testing optimization algorithms. The libraries used consist of built-in Java libraries and a Mersenne Twister library made by David Beaumont distributed under the LGLP-2.1 license.
The currently implemented algorithms are:
- Blind Search
- Repeated Local Search
- Differential Evolution
- Particle Swarm Optimization
- Nawaz-Enscore-Ham (NEH)
Using the Java Virtual Machine (JVM), run the project from the Main file in this project to generate the desired output files.
In the terminal a prompt will appear. Either type "minimization" or "scheduling" for the desired algorithm types. The minimization algorithms are: Blind Search, Repeated Local Search, Differential Evolution, Particle Swarm Optimization. The scheduling algorithm is: NEH.
Line 1: [# of machines] [# of jobs]
Following lines: processing times for each job for each machine. Each line represents a machine and the times for each job are separated by spaces.
Example:
5 4
5 9 9 4
9 3 4 8
8 10 5 8
10 1 8 7
1 8 6 2
The first line in the example says there are five machines (five lines after the first one) and four jobs (4 numbers per following line). The values in the following lines are the processing times for each job for each machine (e.g., on machine 1, job 1 has a processing time of 5).
Sample files can be found in the project folder in the Taillard_TestData folder.
[algorithm] [DE method] [crossover type] [dimension] [population size] [problem type] [range] [num experiments]
- The values for
[algorithm]
are 1 for DE, 2 for PSO, 3 for Blind Search, and 4 for Repeated Local Search. - The values for
[DE method]
are 1 for DE/best/1, 2 for DE/rand/1, 3 for DE/rand-to-best/1, 4 for DE/best/2, and 5 for DE/rand/2. - The values for
[crossover type]
are 1 for exponential crossover and 2 for binomial crossover. - The value for
[dimension]
is the number of elements in each solution vector. - The value for
[population size]
is the number of solution vectors in the population. - The value for
[problem type]
is the objective function label: 1 - Schwefel, 2 - De Jong 1, 3 - Rosenbrock, 4 - Rastrigin, 5 - Griewank, 6 - Sine Envelope Sine Wave, 7 - Stretch V Sine Wave, 8 - Ackley One, 9 - Ackley Two, 10 - Egg Holder. - The value for
[range]
is the range of initial values for each element in the solution vector. - The value for
[num experiments]
is the number of experiments to run.
The experiments.txt file contains a list of all the experiments to run. The experiments are run in the order they appear in the file. The experiments.txt file should be in the same directory as the Main file to properly run the project.
The output files are named according to the current system time. The output files are placed in the directory of the Main file.
Generates a CSV where each row is a different experiment. The first column is the number of machines, the second column is the number of jobs, the third column is the resulting makespan value, the fourth column is the run time for the experiment, the following columns in a row hold the resulting schedule for the experiment.
Generates a CSV where each row is the resulting fitness values from each experiment. The first entry in each row has information on the algorithm run, how many experiments were run, and the time it took to run the experiments.
The documentation.pdf file contains the documentation for this project. The documentation was generated using Doxygen. A Doxygen config file is included if you want to configure the documentation to your liking.