All Projects → suyunu → Flow-Shop-Scheduling

suyunu / Flow-Shop-Scheduling

Licence: other
Genetic Algorithm for Flow Shop Scheduling

Programming Languages

Jupyter Notebook
11667 projects

Projects that are alternatives of or similar to Flow-Shop-Scheduling

Job-Shop-Scheduling-Genetic-Algorithm
Job Shop Scheduling Solver using Genetic Algorithyms
Stars: ✭ 48 (+152.63%)
Mutual labels:  genetic-algorithm, scheduling
genetic-algorithm-matlab
A very simple Genetic Algorithm implementation for matlab, easy to use, easy to modify runs fast.
Stars: ✭ 18 (-5.26%)
Mutual labels:  genetic-algorithm, heuristics
Time Table Scheduler
Time Table generation using Genetic Algorithms ( Java-Struts2)
Stars: ✭ 90 (+373.68%)
Mutual labels:  genetic-algorithm, scheduling
NeuroEvolution-Flappy-Bird
A comparison between humans, neuroevolution and multilayer perceptrons playing Flapy Bird implemented in Python
Stars: ✭ 17 (-10.53%)
Mutual labels:  genetic-algorithm
Stock-Market-Prediction-using-Neural-Networks-and-Genetic-Algorithm
Matlab Module for Stock Market Prediction using Simple NN
Stars: ✭ 59 (+210.53%)
Mutual labels:  genetic-algorithm
pikaia
Modern Fortran Edition of the Pikaia Genetic Algorithm
Stars: ✭ 29 (+52.63%)
Mutual labels:  genetic-algorithm
cocktail
Elixir date recurrence library based on iCalendar events
Stars: ✭ 115 (+505.26%)
Mutual labels:  scheduling
autoscheduler
Staffjoy Suite (V1) Deprecated Microservice - Original autoscheduling algorithm, which combines shift creation and assignment. No longer compatible with open-source suite.
Stars: ✭ 68 (+257.89%)
Mutual labels:  scheduling
goga
Go evolutionary algorithm is a computer library for developing evolutionary and genetic algorithms to solve optimisation problems with (or not) many constraints and many objectives. Also, a goal is to handle mixed-type representations (reals and integers).
Stars: ✭ 39 (+105.26%)
Mutual labels:  genetic-algorithm
King.Service
Task scheduling for .NET
Stars: ✭ 34 (+78.95%)
Mutual labels:  scheduling
modest-py
FMI-compliant Model Estimation in Python
Stars: ✭ 40 (+110.53%)
Mutual labels:  genetic-algorithm
CoreLibraries
A set of .NET libraries for building enterprise level solutions quickly
Stars: ✭ 22 (+15.79%)
Mutual labels:  scheduling
TorchGA
Train PyTorch Models using the Genetic Algorithm with PyGAD
Stars: ✭ 47 (+147.37%)
Mutual labels:  genetic-algorithm
GeneticAlgorithmUniversityClassScheduler
A class scheduler using adaptive-elitist genetic algorithm.
Stars: ✭ 98 (+415.79%)
Mutual labels:  genetic-algorithm
ai-plays-flappybird
Using genetic algorithm and neural networks to teach AI to play flappy bird.
Stars: ✭ 58 (+205.26%)
Mutual labels:  genetic-algorithm
skeleton
Composer starter project for Ambulatory.
Stars: ✭ 43 (+126.32%)
Mutual labels:  scheduling
GA-Toolbox
Genetic Algorithms Toolbox
Stars: ✭ 41 (+115.79%)
Mutual labels:  genetic-algorithm
Flappy-Bird-Genetic-Algorithms
Use genetic algorithms to train flappy bird
Stars: ✭ 83 (+336.84%)
Mutual labels:  genetic-algorithm
simso
Simulator of multiprocessor real-time scheduling
Stars: ✭ 55 (+189.47%)
Mutual labels:  scheduling
GA
An R package for optimization using genetic algorithms
Stars: ✭ 76 (+300%)
Mutual labels:  genetic-algorithm

Viewing the Jupyter Notebooks from nbviewer is encouraged because GitHub is still not fully integrated with the Jupyter Notebook: http://nbviewer.jupyter.org/github/suyunu/Flow-Shop-Scheduling/blob/master/ga-fss.ipynb

Genetic Algorithm on Flow Shop Scheduling

In this project, we tried to solve Flow Shop Scheduling Problem (FSSP) with Genetic Algorithm (GA). Before I start doing anything on the problem, I made a literature survey and found these 2 papers:

  • Murata, Tadahiko, Hisao Ishibuchi, and Hideo Tanaka. "Genetic algorithms for flowshop scheduling problems." Computers & Industrial Engineering 30.4 (1996): 1061-1071
  • Reeves, Colin R. "A genetic algorithm for flowshop sequencing." Computers & operations research 22.1 (1995): 5-13.

These 2 papers have done lots of good optimization tests for the parameters and obtained good results. So, I took pieces’ form both papers:

  • Murata et al.
    • General Structure
    • Crossover
    • Mutation
  • Reeves
    • Selection

Flow Shop Scheduling

There are n machines and m jobs. Each job contains exactly n operations. The i-th operation of the job must be executed on the i-th machine. No machine can perform more than one operation simultaneously. For each operation of each job, execution time is specified. Operations within one job must be performed in the specified order. The first operation gets executed on the first machine, then (as the first operation is finished) the second operation on the second machine, and so until the n-th operation. Jobs can be executed in any order, however. Problem definition implies that this job order is exactly the same for each machine. The problem is to determine the optimal such arrangement, i.e. the one with the shortest possible total job execution makespan.

Solution Representation

I used a simple permutation representation.

The string "ABCDEF" represents a job sequence where "Job A" is processed first, then "Job B" is processed, and so on. If the string "ABCADE" is generated by genetic operators such as crossover and mutation, this string is not a feasible solution of the flow shop scheduling problem because the job "A" appears twice in the string and the job "F" does not appear. Therefore the string used in the flow shop scheduling problem should be the permutation of given jobs.

Genetic Algorithm

In this part I will explain the genetic operators such as crossover and mutation as well as the selection mechanism for the flow shop scheduling problem.

Pseudocode

  1. (Initialization) Randomly generate an initial population $P_1$ of $N_{pop}$ strings (i,e., $N_{pop}$ solutions).
  2. (Selection) Select $N_{pop}$ pairs of strings from a current population according to the selection probability.
  3. (Crossover) Apply crossover operator to each of the selected pairs in Step 2 to generate $N_{pop}$ solutions with the crossover probability $P_c$. If the crossover operator is not applied to the selected pair, one of the selected solutions remains as a new string.
  4. (Mutation) Apply mutation operator to each of the generated $N_{pop}$ strings with the mutation probability $P_m$ (we assign the mutation probability not to each bit but to each string).
  5. (Elitist Update) Randomly remove one string from the current population and add the best string in the previous population to the current one.
  6. (Termination) If a prespecified stopping condition is satisfied, stop this algorithm. Otherwise, return to Step 2
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].