Sep 2020 – New Implementations
JSR331 v. 2.1.0 includes a new implementation of the linear solver “JSR331 CLP“. It’s based on the COIN CLP release 1.16.10 and uses a linear programming library “clp-java” developed by Dr. Nils Loehndorf from Quantego. This library allowed JSR331 to use CLP directly from Maven without any additional installation of the COIN CLP itself. However, CLP handles only real variables but not MIP.
JSR-331 v.2.0.4 includes a new implementation of the constraint solver “JSR331 JSetL“. It’s based on the latest release v. 3.0 of Java constraint programming library “JSetl” developed by the University of Parma (Italy)
A new open source product Rule Solver uses JSR331 as a foundation for optimization decision models.
All JSR331 projects have been added to the Maven and GitHub repositories.
April 2020 – JSR331 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:
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
July 30, 2010. JSR331 Initial Implementations
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.