Coder Social home page Coder Social logo

jbdyn / processscheduler Goto Github PK

View Code? Open in Web Editor NEW

This project forked from tpaviot/processscheduler

0.0 0.0 0.0 11.61 MB

A Python package for automatic and optimized resource scheduling

Home Page: https://processscheduler.github.io/

License: GNU General Public License v3.0

Python 3.00% Jupyter Notebook 97.00%

processscheduler's Introduction

Codacy Badge codecov Azure Build Status Binder PyPI version DOI

ProcessScheduler

ProcessScheduler is a Python package for creating optimized scheduling based on identified resources and tasks to be carried out. It offers a set of classes and methods for finely modeling a wide range of use cases with rich semantics. Complex mathematical calculations necessary for problem resolution are transparently handled for the user, allowing them to focus on problem modeling. ProcessScheduler is aimed at project managers, business organization consultants, or industrial logistics experts looking to optimize the achievement of time or cost objectives.

Updates

  • 2024/01/31: Release 2.0.0
  • 2024/01/30: Release 2.0.0a
  • 2023/12/13: Huge on-going refactoring #133
  • 2023/12/12: Release 0.9.4

Features

  • Tasks: Creation of tasks defined by their duration, priority, and required effort.
  • Resources: Individual workers defined by their productivity, cost, and availability.
  • Resource Allocation: Allocation from a set of workers sharing common skills.
  • Buffers: Support for tasks that consume raw materials.
  • Indicators: Including cost, resource effort, or any customized indicator.
  • Task and resource constraints that can be combined using first-order logic operations (NOT, OR, XOR, AND, IMPLIES, IF/THEN ELSE) for rich representations.
  • Multi-optimized schedule computation, including makespan, flowtime, earliest start, latest start, resource cost, or any customized indicator you have defined.
  • Gantt diagram generation and rendering.
  • Results export to JSON, SMT-LIB 2.0, Excel, or other formats for further analysis.

Install latest version with pip

Install with pip.

pip install ProcessScheduler==2.0.0

This comes with the only required dependency: the Microsoft free and open source licenses S3 solver. If you want to take advantage of all the features, you can install optional dependencies:

pip install matplotlib plotly kaleido ipywidgets isodate ipympl psutil XlsxWriter

Run online

There are some Jupypter notebooks that can be executed online at myBinder.org

Documentation

User-end documentation available at https://processscheduler.readthedocs.io/

Helloworld

import processscheduler as ps
# a simple problem, without horizon (solver will find it)
pb = ps.SchedulingProblem('HelloWorldProcessScheduler')

# add two tasks
task_hello = ps.FixedDurationTask('Process', duration=2)
task_world = ps.FixedDurationTask('Scheduler', duration=2)

# precedence constraint: task_world must be scheduled
# after task_hello
ps.TaskPrecedence(task_hello, task_world)

# solve
solver = ps.SchedulingSolver(pb)
solution = solver.solve()

# display solution, ascii or matplotlib gantt diagram
solution.render_gantt_matplotlib()

png

Code quality

ProcessScheduler uses the following tools to ensure code quality:

  • unittests,
  • code coverage (coverage.py, codecov.io),
  • continuous-integration at MS azure,
  • static code analysis (codacy),
  • spelling mistakes tracking (codespell),
  • code formatting using the black python formatter

License/Author

ProcessScheduler is distributed under the terms of the GNU General Public License v3 or (at your option) any later version. It is currently developed and maintained by Thomas Paviot ([email protected]).

processscheduler's People

Contributors

tpaviot avatar dreinon avatar jbdyn avatar kastakin avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.