https://github.com/timefoldai/timefold-quickstarts
Get started with Timefold quickstarts here. Optimize the vehicle routing problem, employee rostering, task assignment, maintenance scheduling and other planning problems.
https://github.com/timefoldai/timefold-quickstarts
artificial-intelligence constraint-programming cvrp employee-scheduling gradle java job-shop-scheduling kotlin maintenance-scheduling maven operations-research optimization-library planning-algorithms quarkus resource-allocation spring-boot vehicle-routing-problem vrptw
Last synced: about 2 months ago
JSON representation
Get started with Timefold quickstarts here. Optimize the vehicle routing problem, employee rostering, task assignment, maintenance scheduling and other planning problems.
- Host: GitHub
- URL: https://github.com/timefoldai/timefold-quickstarts
- Owner: TimefoldAI
- License: apache-2.0
- Created: 2023-04-21T13:51:19.000Z (over 2 years ago)
- Default Branch: stable
- Last Pushed: 2025-08-11T11:15:36.000Z (about 2 months ago)
- Last Synced: 2025-08-11T11:41:04.610Z (about 2 months ago)
- Topics: artificial-intelligence, constraint-programming, cvrp, employee-scheduling, gradle, java, job-shop-scheduling, kotlin, maintenance-scheduling, maven, operations-research, optimization-library, planning-algorithms, quarkus, resource-allocation, spring-boot, vehicle-routing-problem, vrptw
- Language: Java
- Homepage: https://solver.timefold.ai
- Size: 28.1 MB
- Stars: 392
- Watchers: 20
- Forks: 116
- Open Issues: 10
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.adoc
- License: LICENSE.txt
Awesome Lists containing this project
README
[](https://github.com/TimefoldAI/timefold-solver/discussions)
This repository contains quickstarts for [Timefold Solver](https://github.com/TimefoldAI/timefold-solver), an AI constraint solver for Java and Kotlin.
It shows different use cases and basic implementations to get you started on your PlanningAI journey.## Overview
| Use Case
| Notable Solver Concepts
|
|-----------------------------------------------------------------------|----------------------------------------------------------|
| 🚚 Vehicle Routing | Chained Through Time, Shadow Variables |
| 🧑💼 Employee Scheduling | Load Balancing |
| 🛠️ Maintenance Scheduling | TimeGrain, Shadow Variable, Variable Listener |
| 📦 Food Packaging | Chained Through Time, Shadow Variables, Pinning |
| 🛒 Order Picking | Chained Planning Variable, Shadow Variables |
| 🏫 School Timetabling | Timeslot |
| 🏭 Facility Location Problem | Shadow Variable |
| 🎤 Conference Scheduling | Timeslot, Justifications |
| 🛏️ Bed Allocation Scheduling | Allows Unassigned |
| 🛫 Flight Crew Scheduling | |
| 👥 Meeting Scheduling | TimeGrain |
| ✅ Task Assigning | Bendable Score, Chained Through Time, Allows Unassigned |
| 📆 Project Job Scheduling | Shadow Variables, Variable Listener, Strenght Comparator |
| 🏆 Sports League Scheduling | Consecutive Sequences |
| 🏅 Tournament Scheduling | Pinning, Load Balancing |> [!NOTE]
> The implementations in this repository serve as a starting point and/or inspiration when creating your own application.
> Timefold Solver is a library and does not include a UI. To illustrate these use cases a rudimentary UI is included in these quickstarts.## Use cases
### 🚚 Vehicle Routing
Find the most efficient routes for vehicles to reach visits, considering vehicle capacity and time windows when visits are available. Sometimes also called "CVRPTW".

- [Run quarkus-vehicle-routing](java/vehicle-routing/README.MD) (Java, Maven, Quarkus)
> [!TIP]
>[Check out our off-the-shelf model for Field Service Routing](https://app.timefold.ai/models/field-service-routing). This model goes beyond basic Vehicle Routing and supports additional constraints such as priorities, skills, fairness and more.
---
### 🧑💼 Employee Scheduling
Schedule shifts to employees, accounting for employee availability and shift skill requirements.

- [Run quarkus-employee-scheduling](java/employee-scheduling/README.MD) (Java, Maven, Quarkus)
> [!TIP]
>[Check out our off-the-shelf model for Employee Shift Scheduling](https://app.timefold.ai/models/employee-scheduling). This model supports many additional constraints such as skills, pairing employees, fairness and more.
---
### 🛠️ Maintenance Scheduling
Schedule maintenance jobs to crews over time to reduce both premature and overdue maintenance.

- [Run quarkus-maintenance-scheduling](java/maintenance-scheduling/README.adoc) (Java, Maven, Quarkus)
---
### 📦 Food Packaging
Schedule food packaging orders to manufacturing lines to minimize downtime and fulfill all orders on time.

- [Run quarkus-food-packaging](java/food-packaging/README.adoc) (Java, Maven, Quarkus)
---
### 🛒 Order Picking
Generate an optimal picking plan for completing a set of orders.

- [Run quarkus-order-picking](java/order-picking/README.adoc) (Java, Maven, Quarkus)
---
### 🏫 School Timetabling
Assign lessons to timeslots and rooms to produce a better schedule for teachers and students.

- [Run quarkus-school-timetabling](java/school-timetabling/README.adoc) (Java, Maven or Gradle, Quarkus)
- [Run spring-boot-school-timetabling](java/spring-boot-integration/README.adoc) (Java, Maven or Gradle, Spring Boot)
- [Run kotlin-quarkus-school-timetabling](kotlin/school-timetabling/README.adoc) (Kotlin, Maven, Quarkus)Without a UI:
- [Run hello-world-school-timetabling](java/hello-world/README.adoc) (Java, Maven or Gradle)
---
### 🏭 Facility Location Problem
Pick the best geographical locations for new stores, distribution centers, COVID test centers, or telecom masts.

- [Run quarkus-facility-location](java/facility-location/README.adoc) (Java, Maven, Quarkus)
---
### 🎤 Conference Scheduling
Assign conference talks to timeslots and rooms to produce a better schedule for speakers.

- [Run quarkus-conference-scheduling](java/conference-scheduling/README.adoc) (Java, Maven, Quarkus)
---
### 🛏️ Bed Allocation Scheduling
Assign beds to patient stays to produce a better schedule for hospitals.

- [Run quarkus-bed-allocation-scheduling](java/bed-allocation/README.adoc) (Java, Maven, Quarkus)
---
### 🛫 Flight Crew Scheduling
Assign crew to flights to produce a better schedule for flight assignments.

- [Run quarkus-flight-crew-scheduling](java/flight-crew-scheduling/README.adoc) (Java, Maven, Quarkus)
---
### 👥 Meeting Scheduling
Assign timeslots and rooms for meetings to produce a better schedule.

- [Run quarkus-meeting-scheduling](java/meeting-scheduling/README.adoc) (Java, Maven, Quarkus)
---
### ✅ Task Assigning
Assign employees to tasks to produce a better plan for task assignments.

- [Run quarkus-task-assigning](java/task-assigning/README.adoc) (Java, Maven, Quarkus)
---
### 📆 Project Job Scheduling
Assign jobs for execution to produce a better schedule for project job allocations.

- [Run quarkus-project-job-scheduling](java/project-job-scheduling/README.adoc) (Java, Maven, Quarkus)
---
### 🏆 Sports League Scheduling
Assign rounds to matches to produce a better schedule for league matches.

- [Run quarkus-sports-league-scheduling](java/sports-league-scheduling/README.adoc) (Java, Maven, Quarkus)
---
### 🏅 Tournament Scheduling
Tournament Scheduling service assigning teams to tournament matches.

- [Run quarkus-tournament-scheduling](java/tournament-scheduling/README.adoc) (Java, Maven, Quarkus)
---
## Legal notice
Timefold Quickstarts was [forked](https://timefold.ai/blog/2023/optaplanner-fork/) on 20 April 2023 from OptaPlanner Quickstarts, which was entirely Apache-2.0 licensed (a permissive license).
Timefold Quickstarts is a derivative work of OptaPlanner Quickstarts, which includes copyrights of the original creator, Red Hat Inc., affiliates, and contributors, that were all entirely licensed under the Apache-2.0 license.
Every source file has been modified.