« JaCoP: a request from the developers (Knapsack and Geost) and Nonogram labeling | Main | Off topic: The Pop-11 programming language and Poplog environment »

Java Specification Requests JSR 331: Constraint Programming API

The Java Specification Request JSR 331: Constraint Programming API is a request for consolidating the Java constraint solvers.
This specification defines a Java runtime API for constraint programming. The CP API prescribes a set of fundamental operations used to define and solve constraint satisfaction and optimization problems.

The request

2.1 Please describe the proposed Specification:

This specification defines a Java runtime API for constraint programming. The standardized CP API aims to make CP technology more accessible for business software developers. It intends to create CP Standards that will define unified business interface(s) for modeling and solving real-world decision support problems as Constraint Satisfaction and Optimization Problems. Having unified interfaces will allow commercial application developers to model their problems in such a way that the same model can be tried with different CP Solvers. This will minimize vendor dependence without limiting vendor's innovation. At the same time the CP API will help to bring the latest research results to real-world business applications. The CP API prescribes a set of fundamental operations used to define and solve constraint satisfaction and optimization problems. The sets of operations will allow a user to express its decision support problem in terms of:
- Decision Variables defined as constrained integer, real, and set variables
- Constraints defined on these variables using the standardized unary, binary and global constraints.
Clearly separating the problem definition from problem resolution, the sets of operations will allow a user to apply standardized search strategies to find feasible and optimal solutions of the problem. The CP API will also allow a user to create custom constraints and search strategies in a unified way making them independent from a particular CP solver.

...

2.6 Why isn't this need met by existing specifications?

Today CP is a proven optimization technique and many CP solvers empower real-world business applications in such areas as scheduling, planning, configuration, resource allocation, and real-time decision support. However, the absence of standards still limits the acceptance of CP by the business world.

While dissimilar vendor-specific CP API specifications exist, their syntactic and semantic differences are significant enough to cause costly difficulties for application builders and platform vendors.

The development schedule

2.13 Please describe the anticipated schedule for the development of this specification.

1. Early Draft Review: November 20, 2009

2. Complete the Specification, Public Draft/Final Release: April 15, 2010

3. Maintenance Review: June 30, 2010

2.14 Please describe the anticipated working model for the Expert Group working on developing this specification.

The JSR Specification Lead has already contacted major CP vendors and well-known CP experts and involved them in a preliminary discussion at www.cpstandards.org. We will invite them to join the Expert Group right after the initial JSR Review and acceptance. We plan to have an kick-off meeting during the oncoming major CP conference CP-2009 that will take place at Portugal on 20-24 September 2009. A preliminary Java CP API that will become a basis for the JSR is being discussed by CP experts at the Discussion Forum at www.cpstandards.org. During the first 3 months we plan to finalize the Expert Group that will include the most active contributors to the Early Draft.

Related

Other pages of interest:
* JSR #331 Constraint Programming API - JSR Review Ballot * Public forum for JSR 331.
* Standardization of Constraint Programming (www.cpstandards.org), forum with some discussion about the JSR

Also, see:
* My Choco page
* My JaCoP page
* My constraint programming page