Welcome to JaCoP wiki
Java Constraint Programming solver -
JaCoP in short.
This wiki is meant as a main element to keep
JaCoP community vibrant and in-touch with each other. Feel free to use this space to advertise/share your experience/work with
JaCoP. We hope that you will help us to keep the documentation of
JaCoP up-to-date with large number of examples and wiki pages explaining how to use CP technology and
JaCoP. This is your chance to contribute back and let other people know your name and work. Great to have you here.
The authors of
JaCoP are actively seeking and implementing as many solver techniques from Constraint Programming community as possible. The newest version of
JaCoP has many features, such as pruning events, multiple constraint queues, special data structures to handle efficiently backtracking, iterative constraint processing, and many more. We often have to adapt published techniques so they can be efficiently used in the context of Java (specially its garbage collection techniques) and
JaCoP architecture.
JaCoP has number of global constraints implemented such as among, cumulative, element, circuit, assignment, global cardinality constraint, two different versions of diffn, regular constraint, stretch constraint, sequence constraint, three different versions of alldifferent, and two different versions of sum constraint, both negative and positive table constraints. The positive table constraints has three most recently published different variants of this constraint. The different versions of constraint implement different consistency methods with different computational and space complexities.
Every solver is different as its applications impose different requirements and make some optimizations not possible.
JaCoP facilitates constraint additions during search and extensive control over internal behavior of the solver. Almost every aspect of the solver can be tweaked. It is necessary if a solver is to be used in research when small things matter and can make your technique run much slower. All data structures are available for manipulation making implementing special search heuristics possible. It is also possible to implement user's own constraints with additional functions, which can be used later during search. Authors strive to achieve the right balance, between ease of use, ease of extension, and efficiency.
JaCoP also supports and extends XCSP format for saving CSP's in XML format.
JaCoP is continuously under development. It is rarely fully backward compatible, as not only new constraints are added, but also internals of the engine are being improved. Authors have concentrated on the core functionality of the constraints, therefore there is no graphical interface available yet, which would help in programs debugging. There are a lot of examples and Java Doc documentation, but authors would like to have more time to create more elaborate documentation.
There are quite many other constraint tools which have been implemented since the inception of
JaCoP. Every system is different as they trade extendability, functionality, ease of development for efficiency in a different way. There are tools which sacrifice everything for efficiency, other tools which choose C++ over Java to avoid costs associated with executing Java programs. Our own experiments indicate that
JaCoP is a very good Java solver, but it is slower than very good C++ based solver. If you are looking for easy to use, easy to maintain, easy to extend and efficient solver written in Java then
JaCoP is a must try for you. We are releasing version with more API documentation which under GNU AGPLv3! You can also contact
RadoslawSzymanek by email to receive a copy of
JaCoP.
As soon as you register, feel free to update your personal wiki page. Afterwards, please write few sentences about yourself. You will also get access to
JaCoP wiki page and can start helping us making it a better wiki for all of us. Thanks. The registration process is required to keep spam-bots away.
JaCoP Documentation
Congratulations, you have finished installing TWiki.
This site is running TWiki version
TWiki-4.2.3, Wed, 06 Aug 2008, build 17396, Plugin API version
1.2
To learn more about TWiki, visit the
TWiki web. Please ensure that the read/write permissions for each web on your site match your access control policies (see
SitePermissions and
TWiki.TWikiPreferences). Replace this text with a description of your new
TWiki site.
Main Web Utilities