Yumbo is a sophisticated scheduling and resource allocation tool aimed at project managers, solution architects, and other professionals managing multiple tasks or projects simultaneously. The software focuses on the optimal generation of daily schedules while adhering to business rules and constraints.
- Optimal Schedule Generation:
- Balances overlapping tasks and independent start/end dates.
- Handles tasks with durations up to 200 working days (or more).
- Compliance with Business Rules:
- Ensures schedules meet working hour limits.
- Considers expert availability, holidays, and public holidays.
- Flexible Planning Horizons:
- Supports both short-term and long-term planning.
- Allows dynamic updates for changes in expert availability or task additions.
- Mathematical Modeling:
- Uses Mixed Integer Linear Programming (MILP) to create optimized schedules.
- Encourages early task completion through the objective function.
Yumbo models the scheduling problem as a linear mixed-integer problem using the following:
- Task Properties:
- Start Date
- End Date
- Workload (in hours)
- Constraints:
- Daily working hour limits.
- Period-based working hour limits.
- Task-specific daily working hour limits.
- Employee-specific daily working hour limits.
The problem is solved using the AMPL language and the HiGHS solver.
Yumbo integrates various tools and libraries to ensure robust functionality and user experience:
- Mathematical Modeling:
- AMPL: Mathematical programming language.
- HiGHS: High-performance linear optimization solver.
- SCIP: Non-commercial solver for mixed integer programming.
- User Interface:
- Streamlit: Framework for building data-driven apps.
- Data Processing and Visualization:
- Python: Core programming language.
- Pandas: Data analysis and manipulation.
- NumPy: Scientific computing.
- Matplotlib: Static, animated, and interactive visualizations.
- Clone the repository:
git clone https://github.com/romz-pl/yumbo.git cd yumbo
- Install required Python libraries:
pip install -r ./src/requirements.txt
- Run the application:
streamlit run ./src/main_yumbo.py
- Input task details (start/end dates, workload, constraints).
- Generate daily schedules using the intuitive graphical user interface.
- Visualize and export schedules as needed.
Yumbo is available on the Streamlit Community Cloud at https://yumbo-ampl.streamlit.app/
Contributions are welcome! Please follow these steps:
- Fork the repository.
- Create a feature branch:
git checkout -b feature-name
- Commit your changes:
git commit -m "Description of changes"
- Push the branch:
git push origin feature-name
- Submit a pull request.
Yumbo is licensed under the MIT License.
For any inquiries or support, contact:
- Zbigniew Romanowski: romz@wp.pl
- Paweł Koczyk: pk@koczyk.pl
This project utilizes the following open-source tools and frameworks:
- AMPL a mathematical programming language;
- HiGHS a high performance software for linear optimization;
- SCIP one of the fastest non-commercial solvers for mixed integer programming and mixed integer nonlinear programming;
- Streamlit a faster way to build and share data apps;
- Python a programming language that lets you work quickly;
- Pandas a fast, powerful, flexible and easy to use open source data analysis and manipulation tool;
- Matplotlib a comprehensive library for creating static, animated, and interactive visualizations in Python;
- NumPy the fundamental package for scientific computing with Python;
Thank you for using Yumbo! Your feedback and contributions are greatly appreciated.