GitPedia

Incubator kie optaplanner

AI constraint solver in Java to optimize the vehicle routing problem, employee rostering, task assignment, maintenance scheduling, conference scheduling and other planning problems.

From apache·Updated June 18, 2026·View on GitHub·

//// Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at The project is written primarily in Java, distributed under the Apache License 2.0 license, first published in 2011. It has gained significant community traction with 3,498 stars and 971 forks on GitHub. Key topics include: artificial-intelligence, branch-and-bound, constraint-programming, constraint-solver, constraints.

Latest release: 10.2.0
April 28, 2026View Changelog →

////
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
////

:projectKey: org.optaplanner:optaplanner
:sonarBadge: image:https://sonarcloud.io/api/project_badges/measure?project={projectKey}
:sonarLink: link="https://sonarcloud.io/dashboard?id={projectKey}"

:branch: main

:jenkinsUrl: https://eng-jenkins-csb-business-automation.apps.ocp-c1.prod.psi.redhat.com/job/KIE/job/optaplanner
:branchJenkinsUrl: {jenkinsUrl}/job/{branch}
:toolsFolderJenkinsUrl: {branchJenkinsUrl}/job/tools
:releaseFolderJenkinsUrl: {branchJenkinsUrl}/job/release

image::optaplanner-docs/src/modules/ROOT/images/shared/optaPlannerLogo.png[link="https://www.optaplanner.org/",OptaPlanner,150,150,align="center"]

image:https://img.shields.io/maven-central/v/org.optaplanner/optaplanner-bom?logo=apache-maven&style=for-the-badge["Maven artifact", link="https://ossindex.sonatype.org/component/pkg:maven/org.optaplanner/optaplanner-bom"]
image:https://img.shields.io/badge/stackoverflow-ask_question-orange.svg?logo=stackoverflow&style=for-the-badge["Stackoverflow", link="https://stackoverflow.com/questions/tagged/optaplanner"]
image:https://img.shields.io/badge/zulip-join_chat-brightgreen.svg?logo=zulip&style=for-the-badge[
"Join Zulip Chat", link="https://kie.zulipchat.com/#narrow/stream/232679-optaplanner"]
image:https://img.shields.io/github/commit-activity/m/kiegroup/optaplanner?label=commits&style=for-the-badge["Commit Activity", link="https://github.com/kiegroup/optaplanner/pulse"]
image:https://img.shields.io/github/license/kiegroup/optaplanner?style=for-the-badge&logo=apache["Livense", link="https://www.apache.org/licenses/LICENSE-2.0"]
image:https://img.shields.io/badge/JVM-11--17-brightgreen.svg?style=for-the-badge["JVM support", link="https://github.com/kiegroup/optaplanner/actions/workflows/pull_request.yml"]
image:https://img.shields.io/badge/Maven-3.x-blue?style=for-the-badge["Maven",link="https://maven.apache.org/install.html"]
image:https://img.shields.io/github/languages/code-size/kiegroup/optaplanner?style=for-the-badge["Code size", link="https://github.com/kiegroup/optaplanner/actions/workflows/pull_request.yml"]

{sonarBadge}&style=for-the-badge&metric=reliability_rating["Reliability Rating", {sonarLink}]
{sonarBadge}&metric=security_rating["Security Rating", {sonarLink}]
{sonarBadge}&metric=sqale_rating["Maintainability Rating", {sonarLink}]
{sonarBadge}&metric=coverage["Coverage", {sonarLink}]

A fast, easy-to-use, open source AI constraint solver for software developers

== Looking for Quickstarts?

OptaPlanner's quickstarts are located in the https://github.com/kiegroup/optaplanner-quickstarts[optaplanner-quickstarts repository].

== Quick development start

To build and run from source:


$ mvn clean install -Dquickly
$ cd optaplanner-examples
$ mvn exec:java

To develop with IntelliJ IDEA, Eclipse or VSCode, open the root pom.xml as a new project
and configure a Run/Debug configuration like this:

  • Type: Application
  • Main class: org.optaplanner.examples.app.OptaPlannerExamplesApp
  • VM options: -Xmx2G -server (memory only needed when using the big datasets in the examples)
  • Program arguments: (none)
  • Working directory: $MODULE_DIR$ (must resolve to optaplanner-examples directory)
  • Use classpath of module: optaplanner-examples

== Contributing to OptaPlanner

This is an open source project, and you are more than welcome to contribute :heart:!

=== Time to make a change?

Every change must be submitted through a GitHub pull request (PR). OptaPlanner uses continuous integration (CI). The OptaPlanner CI runs checks against your branch after you submit the PR to ensure that your PR doesn't introduce errors. If the CI identifies a potential problem, our friendly PR maintainers will help you resolve it.

=== Contributing

. Fork it (https://github.com/kiegroup/optaplanner).
. Create your feature branch: (git checkout -b feature).
. Commit your changes with a comment: (git commit -am 'Add some feature').
. Push to the branch to GitHub: (git push origin feature).
. Create a new pull request.

=== Code standards

Your code is automatically formatted according to the Import and Code Style conventions during every Maven build. CI checks enforce those conventions too, so be sure to build your project with maven before creating your PR:

mvn clean install

For information about how to set up code style checks, see https://github.com/kiegroup/optaplanner/blob/main/build/optaplanner-ide-config/ide-configuration.adoc[IDE Setup Instructions].

=== Building your OptaPlanner project

Use one of the following ways to build your OptaPlanner project:

  • :rocket: build-fast: mvn clean install -Dquickly skips any checks and code analysis (~1 min)

  • :hammer: build-normally: mvn clean install runs tests, checks code style, skips documentation (~17 min)

  • :receipt: build-doc: mvn clean install at optaplanner/optaplanner-docs creates asciidoctor documentation target/optaplanner-docs-*/html_single/index.html (~2 min)

  • :mechanical_arm: build-all: mvn clean install -Dfull runs all checks + creates documentation and distribution files (~20 min)

== OptaPlanner CI status

You can check the CI status of the OptaPlanner repositories from the https://kiegroup.github.io/optaplanner/[Chain Status webpage].

=== Jenkins CI Jobs (need VPN access) ===

All Jenkins jobs can be found under the OptaPlanner folder: {jenkinsUrl}

Interesting Jenkins CI jobs (need VPN access):

  • {toolsFolderJenkinsUrl}/job/update-quarkus-all/[Update Quarkus version]
  • {toolsFolderJenkinsUrl}/job/update-drools-optaplanner/[Update Drools version]
  • {releasefolderjenkinsurl}/job/optaplanner-release[Release pipeline] (only available on release branches)
  • {releasefolderjenkinsurl}/job/optaplanner-post-release[Post-Release pipeline] (only available on release branches)

Contributors

Showing top 12 contributors by commit count.

View all contributors on GitHub →

This article is auto-generated from apache/incubator-kie-optaplanner via the GitHub API.Last fetched: 6/20/2026