April 2020 – JSR331 is in GitHub and MVN Repositories
A new JSR331 constraint solver implementation “JSR331 Sugar” has been added. It utilizes Sugar 2.1.3, a SAT-based Constraint Solver.
JSR-331 has been also deployed to the public MVN Repository. It means now you can easily incorporate JSR-331 into your own Maven projects by simply adding JSR-331 dependencies. JavaSolver provides a good example of how it can be done – just take a look at its pom.xml file.
May 13, 2019 – Java Solver
Java Solver is a very simple Java API for modeling and solving optimization problems built on the top of JSR-331. The objective is to make it as simple as possible for any Java developer to add optimization components to their applications. Read the announcement.
December 2018 – DMCommunity Challenges
See how JSR-331 was used to address the following DMCommunity Challenges:
- Very simple problem: “Vacation Days“
- More complex problem: “Flight Rebooking“
- Complex problem: “Balanced Assignment“
October 24, 2016 – Cable Operation Scheduler
JSR-331 became a foundation for a Cable Operation Scheduler built for a major Japanese telecom corporation. The scheduler deals with hundreds of various operations that need to be scheduled as soon as possible subject to various precedence and exclusivity constraints. We utilized the scheduling package “javax.constraints.scheduler” built on the top of JSR-331 and that is included in the standard JSR-331 installation. For the performance reasons we added a custom constraint “Operations should not overlap unless a special constraint states otherwise”. Now an instance of the class Schedule may post the proper constraint using the method “postAllDiff(Activity activities)” that is much more efficient to compare with the use of a ResourceDisjunctive.
July 15, 2016 – Retail Price Optimization
JSR-331 was effectively used to model and solve a complex integrated machine learning and optimization problem for Retail Price Optimization. You may read more about the problem at this presentation. As we tried to build different models for the problem, we took advantage of the key JSR-331 feature: an ability to switch between different underlying solvers! Our initial model relied on the underlying constraint solver – it allowed us to catch the errors in the input data and in the model itself. When the size of the problem was increased almost 100 times, we had to linearize the initial optimization model and switch to linear solvers. We tried 4 different linear solvers without changing a character in the model itself by just changing required jar-files in the project classpath. We found an open source solver that in our case produced optimal results an order of magnitude faster than other tried linear solvers. In this case the winner was the SCIP solver, but it is quite possible that other solvers will do better for different optimization models.
December 10, 2015. JSR331 Maintenance Release 1.2.2
- Improvements in the JSR-331 API
May 2014. JSR331 Maintenance Release 1.2.1
- Support for Defeasible Logic and Constraints with Probabilities
November 12, 2013. JSR331 Maintenance Release 1.2.0
- This release includes a vertical package “Scheduler” that allows a user to model and solve scheduling and resource allocation
October 16, 2012. JSR331 Maintenance Release 1.1.0
- This release includes 7 implementations based on commercial and open source Linear Solvers
- More advanced search for optimal solutions with an ability to limit time for search of one solution and for the entire optimization process
- The use of dynamic lists of constrained integer variables.
March 7, 2012. JSR331 Final Release 1.0.0
- The JSR-331 is now the Final Release. It successfully passed Final Approval Ballot by the JCP Executive Committee
- The Final Release is published at http://jcp.org/aboutJava/communityprocess/final/jsr331/index.html.
- JSR-331 is now in a maintenance mode and new releases will be published regularly. A roadmap can be found here.
January 24, 2012
- The final JSR-331 Proposal including TCK, 3 implementations, and all related documentation delivered to JCP for the Final Approval Ballot.
August 19, 2011. JSR331 Final Draft
- The Proposed Final Draft of the JSR-331 has been submitted to the JCP
October 1, 2010
- A new version of the JSR-331 Specification v.0.7.1 is available for free downloads with 3 initial implementations (Constrainer, Choco, JaCoP)
September 22, 2010. JavaOne Award
- Java Community Process (http://jcp.org) awarded JSR-331 with “The Most Innovative JSR of 2010” award.
July 30, 2010. JSR331 Initial Implementations
- A new version of the JSR-331 Specification v.0.6.1 is available for review – see changes in v.0.6.1.
- The SVN repository with two initial implementations and Examples and have been updated too. The latest specification and its implementations are available upon requests
March 25, 2010. JSR331 Early Draft Review
- The JSR-331 Early Draft has been made available for public review. The official JSR-331 specification and Javadoc can be downloaded from http://jcp.org/en/jsr/summary?id=331.