This project aims to solve the Job Scheduling Problem using different algorithms, including backtracking and genetic algorithms. It provides both command-line and graphical interfaces for easy interaction.
- System Requirements:
- Python 3.x
- Dependencies:
tkinter
(for GUI)
- Installation Steps:
pip install -r requirements.txt
- The project is structured into modules, including Models, Algorithms, Utils, and GUI.
- Main files include
main.py
for command-line interaction andgui/main_window.py
for the GUI.
- Resource: Represents a resource with an ID and capacity.
- Job: Represents a job with an ID, processing time, and optional dependency.
- JobSchedulingProblem: Defines a scheduling problem with a set of jobs and resources.
- BacktrackingAlgorithm: Solves the scheduling problem using a backtracking approach.
- GeneticAlgorithm: Applies a genetic algorithm to find an optimal schedule.
- RandomGenerator: Generates random instances of jobs and resources.
- SchedulerEvaluator: Evaluates the performance of scheduling algorithms.
- AlgorithmComparisonWindow: GUI window for comparing backtracking and genetic algorithms.
- Run the project using
python main.py
. - Specify the input parameters as needed.
- Run the GUI using
python gui/main_window.py
. - Click the "Random" button to compare algorithms with random instances.
Contributions are welcome! Feel free to fork the project and submit pull requests.
This project is licensed under the MIT License.
- Check the resources folder.