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

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

  • 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