All Projects → lbiedma → Shift Scheduling

lbiedma / Shift Scheduling

Licence: mit
Shift Scheduling for workforce

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Shift Scheduling

Optaplanner
AI constraint solver in Java to optimize the vehicle routing problem, employee rostering, task assignment, maintenance scheduling, conference scheduling and other planning problems.
Stars: ✭ 2,454 (+11054.55%)
Mutual labels:  scheduling, optimization
Mobius Assignment
Staffjoy Suite (V1) Microservice - Shift Assignment Subject To Constraints
Stars: ✭ 23 (+4.55%)
Mutual labels:  scheduling, optimization
Hyperparameter hunter
Easy hyperparameter optimization and automatic result saving across machine learning algorithms and libraries
Stars: ✭ 648 (+2845.45%)
Mutual labels:  optimization
React Ssr Optimization
React.js server-side rendering optimization with component memoization and templatization
Stars: ✭ 806 (+3563.64%)
Mutual labels:  optimization
Opticss
A CSS Optimizer
Stars: ✭ 716 (+3154.55%)
Mutual labels:  optimization
Tiramisu
A polyhedral compiler for expressing fast and portable data parallel algorithms
Stars: ✭ 685 (+3013.64%)
Mutual labels:  optimization
Nuxt Optimized Images
🌅🚀 Automatically optimizes images used in Nuxt.js projects (JPEG, PNG, SVG, WebP and GIF).
Stars: ✭ 717 (+3159.09%)
Mutual labels:  optimization
Pydis
A redis clone in Python 3 to disprove some falsehoods about performance.
Stars: ✭ 623 (+2731.82%)
Mutual labels:  optimization
Liblaml
A stand-alone pure C++ library for linear algebra and machine learning
Stars: ✭ 7 (-68.18%)
Mutual labels:  optimization
Closure Compiler
A JavaScript checker and optimizer.
Stars: ✭ 6,277 (+28431.82%)
Mutual labels:  optimization
Pennylane
PennyLane is a cross-platform Python library for differentiable programming of quantum computers. Train a quantum computer the same way as a neural network.
Stars: ✭ 800 (+3536.36%)
Mutual labels:  optimization
Casadi
CasADi is a symbolic framework for numeric optimization implementing automatic differentiation in forward and reverse modes on sparse matrix-valued computational graphs. It supports self-contained C-code generation and interfaces state-of-the-art codes such as SUNDIALS, IPOPT etc. It can be used from C++, Python or Matlab/Octave.
Stars: ✭ 714 (+3145.45%)
Mutual labels:  optimization
Osqp
The Operator Splitting QP Solver
Stars: ✭ 689 (+3031.82%)
Mutual labels:  optimization
Su2
SU2: An Open-Source Suite for Multiphysics Simulation and Design
Stars: ✭ 731 (+3222.73%)
Mutual labels:  optimization
Optim.jl
Optimization functions for Julia
Stars: ✭ 679 (+2986.36%)
Mutual labels:  optimization
Suite
Staffjoy V1, aka "Suite" - a scheduling application for hundreds of workers
Stars: ✭ 814 (+3600%)
Mutual labels:  scheduling
Cppnumericalsolvers
a lightweight C++17 library of numerical optimization methods for nonlinear functions (Including L-BFGS-B for TensorFlow)
Stars: ✭ 638 (+2800%)
Mutual labels:  optimization
Gradient Free Optimizers
Simple and reliable optimization with local, global, population-based and sequential techniques in numerical discrete search spaces.
Stars: ✭ 711 (+3131.82%)
Mutual labels:  optimization
Eaopt
🍀 Evolutionary optimization library for Go (genetic algorithm, partical swarm optimization, differential evolution)
Stars: ✭ 718 (+3163.64%)
Mutual labels:  optimization
Wheels
Performance-optimized wheels for TensorFlow (SSE, AVX, FMA, XLA, MPI)
Stars: ✭ 891 (+3950%)
Mutual labels:  optimization

shift-scheduling

Shift Scheduling for workforce

This is a shift planner, that takes data from Excel files (quarter.xlsx and workers.xlsx) and returns a CSV with weekly shifts for each worker.

Problem Description

Suppose we have a place that needs to work 24/7, and we have a minimum amount of workers needed to run it on each quarter of day in the week (Monday from 0 to 6, Monday from 6 to 12, ... Sunday from 12 to 18, Sunday from 18 to 24). We have to create a shift schedule that is subject to certain constraints.

In this case, the constraints added are:

  • We have each worker and their weekly availability in an Excel file, along with their "skill level" (from 1 to 100).
  • Every worker has to have a 12 hour rest per day.
  • Every worker has to have a 24 hour rest per week.
  • Every worker has to work at most 12 hours for each day.
  • Work days are separated in six 4-hour shifts (0-4, 4-8, 8-12, 12-16, 16-20, 20-24).
  • A worker with skill level < 25 can't be left alone.

Output

This program returns the turns for each worker during the week, according to the constraints, in a CSV file called schedule.csv.

Execution

To run, you have to install Pandas and PuLP. Then, in shell:

python model.py

It will take around a minute to solve, depending on the computer. Then, we will have, for every worker in worker_data, a dictionary called "schedule", where it tells which period corresponds to each worker.

Some reading

This work was done adapting the idea from: https://www.me.utexas.edu/~jensen/ORMM/models/unit/linear/subunits/workforce/index.html, adding constraints where it was needed.

NEXT STEPS

Add more flexible shifts, including the capability of scheduling breaks, this can be done following article: https://link.springer.com/article/10.1007/s10479-019-03487-6.

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].