A platform for solving Flow Shop Scheduling Problems using various heuristic optimization algorithms.
This repository contains a comprehensive platform for solving the Flow Shop Scheduling Problem (FSSP), a well-known optimization problem in operations research. The platform implements multiple metaheuristic algorithms to find near-optimal solutions for scheduling jobs across machines while minimizing the makespan (total completion time).
The Flow Shop Scheduling Problem involves scheduling a set of jobs to be processed on a set of machines. Each job must be processed on all machines in the same order, and the goal is to find the sequence of jobs that minimizes the total completion time.
-
Multiple Optimization Algorithms:
- 🧬 Genetic Algorithm (GA)
- 🔥 Simulated Annealing (SA)
- 🐦 Particle Swarm Optimization (PSO)
-
Benchmark Problems:
- Includes well-known Taillard benchmark instances
- Supports different problem sizes (20x5, 20x10, 50x10, 100x10)
-
Visualization Tools:
- Gantt charts for visualizing schedules
- Fitness trend plots for tracking optimization progress
- Comparative analysis of different algorithms
-
Configurable Platform:
- YAML-based configuration for problems, optimizers, and benchmarks
- Adjustable computational budget
- Multiple runs for statistical analysis
- Python 3.6+
- Required Python packages:
- numpy
- pandas
- matplotlib
- seaborn
- PyYAML
-
Clone the repository:
git clone https://github.com/yourusername/flow-shop-scheduling-problem.git cd flow-shop-scheduling-problem -
Install the required packages:
pip install numpy pandas matplotlib seaborn pyyaml
-
Configure the platform by editing the YAML files in the
config/directory:general.yaml: General settings like number of runs and computational budgetproblems.yaml: Problem types to solveoptimizers.yaml: Optimization algorithms to usebenchmarks.yaml: Benchmark instances to solve
-
Run the platform:
python main.py
-
Results will be displayed as:
- Gantt charts showing the optimal schedule
- Fitness trend plots showing the convergence of algorithms
- Summary statistics in the console and log files
# Run the platform with default settings
from main import HeuristicOptimizerPlatform
hop = HeuristicOptimizerPlatform()This will:
- Load the configured problems, benchmarks, and optimizers
- Run each enabled optimizer on each enabled benchmark instance
- Generate visualizations and statistics for the results
The repository is organized as follows:
main.py: Main entry point and platform implementationfsspSolver.py: Alternative solver implementationsproblems/: Problem definitionsfssp.py: Flow Shop Scheduling Problem implementationjobs.py: Job representationmachines.py: Machine representationproblem.py: Base problem class
optimizers/: Optimization algorithmsga.py: Genetic Algorithmsa.py: Simulated Annealingpso.py: Particle Swarm Optimizationoptimizer.py: Base optimizer classparticle.py: Particle representation for PSO
config/: Configuration filesgeneral.yaml: General settingsproblems.yaml: Problem configurationsoptimizers.yaml: Optimizer configurationsbenchmarks.yaml: Benchmark configurationsconfig.py: Configuration loader
benchmarks/: Benchmark instancesfssp/: Flow Shop Scheduling Problem instances
utils/: Utility functionslogger.py: Logging utilitiesstats.py: Statistical analysisvisualisation.py: Visualization tools
This project is licensed under the MIT License - see the LICENSE file for details.