Most constraints solvers require math equations based input. If you're more a fan of an Object Orientated Programming and Function Programming coding style, take a look at our solvers:
TLDR: using the same GC (*), it's 4% to 16% faster (depending on the GC).
But be warned that if you don't set a GC, Java 8 uses Parallel GC (high throughput, so faster) by default and Java 11 uses G1 GC (low latency, so less hickups) by default.
Good questions (I am the author). It's complex though.
1) They are not the same benchmark.
The Java 15 blog used optaplanner 7.x with optaplanner-examples 7.x, which use scoreDRL. The Java 17 blog used 8.x versions, which use ConstraintStreams. That scoreDRL vs CS is a huge difference, which you see on the numbers (run on the same machine).
2) Remove the Machine Reassignment (B1 and B10) numbers, and it will look consistent: Java 17 is always better.
The real question is why is every JDK's (11 too!) performance is predictable on most use cases, but horribly so on the Machine Reassignement case?
3) I need to share the numbers of the 3 raw runs - and probably do more runs - to clearly show and explain what's going on there. It looks to damn fishy.
Agreed - but I 'll run the benchmarks anyway for a new blog post. Measuring is knowing.
OptaPlanner is best of with Parallel GC (high throughput), but most java processes (REST services etc) are much better off with G1GC (low latency) and its siblings (Shanandoah, Z GC).
OptaPlanner is a team and community effort. Credit goes as much to each of them (see team page) as it does to me. And we're standing on the shoulders of giants (other open source projects).
Hi, cool to see you here. Currently working on a large scale (operating costs in the billions) optimization problem and I'm currently testing out Optaplanner along with some commercial solvers. I really like how the problems are modeled using annotated POJOs, as opposed to some of the more contrived array-based modeling languages out there. And the ConstraintStreams concept is really awesome (if a bit hard to grok at first).
Is there a convenient way to reach out to you or your team with questions? Do you accept outside pull requests?
Of course we accept pull request :) Do start with something small - big changesets are hard to get through the first review. We're on kie.zulipchat.com channel #optaplanner [1] if you want talk about such PR ideas.
As for community questions, the best place for public questions is stackoverflow [1].
For private questions and enterprise-grade support, contact my employer (Red Hat) about our paid support subscription, which pays 99% of the optaplanner's development work.
OptaPlanner supports continuous planning (see my latest video), which is the ability to use a "sliding planning window".
It also supports the use of java.time, which means it supports LocalDateTime, OffsetDateTime, ZonedDateTime, and all other time related functionality that deals with implementing the insane intricacies of time for you. For example: if a shift runs from you 2:00 UTC to 10:00 UTC and employees from different timezones can furfil it and Daylight Saving Time changes for one of those employee's regions, you can write a constraint to detect that and avoid assigning the DST-affected employee that night.
The -Dnative build compiles your java code natively into an native executable that boots up in milliseconds (instead of seconds like a JVM). This is the result of strong collaboration between us (the OptaPlanner team) and the Quarkus team and we have more features in the pipeline.
Have you seen our quickstarts repo? https://github.com/kiegroup/optaplanner-quickstarts It features various use cases across various technologies.