# MCDM Scheduler

## Introduction

Welcome to **mcdm_scheduler**, a Python library designed to tackle the job shop scheduling problems. This library incorporates advanced methodologies to manage the complexities and uncertainties prevalent in manufacturing processes.

##  Citation

Yigit F.; Basilio M.P; Pereira V. (2024). A Hybrid Approach for the Multi-Criteria-Based Optimization of Sequence-Dependent Setup-Based Flow Shop Scheduling. Mathematics. 12(13):2007. doi: https://doi.org/10.3390/math12132007

##  Key Features

- Objectives Weight Assessment: Utilizes the Pairwise Prioritized Fuzzy Analytical Hierarchy Process (PPF-AHP) to determine the weights of critical objectives such as Makespan, Weighted Tardiness, Total Waste, and Total Setup Time. This method accommodates input from one or multiple decision makers.
- Job Importance Modeling: Employs Hierarchical Type-2 Fuzzy Sets (HT2FS) for precise modeling of job importance. This approach allows for input from one or multiple decision makers, providing an accurate representation of job priorities in the scheduling process.
- Genetic Algorithm Optimization: Applies a Genetic Algorithm (GA) to optimize scheduling tasks, leveraging its ability to handle complex and variable conditions to find near-optimal solutions efficiently.
- Custom Values: Offers the flexibility for users to input their custom weights for objectives, including selecting one or more objectives, jobs, and even defining a specific job sequence. This customization ensures that the scheduling solution is precisely aligned with the user's specific needs and preferences.

## Usage

2. Try it in **Colab**:

- Example ( [ Colab Demo ](https://colab.research.google.com/drive/10px7FHlGmcXwshZFzkS7JubpJYwj7J-f?usp=sharing)) 

