1.7 MB   1,238 downloads
4.1.0 Freeware    
An easy to use library providing Constraint Programming technology





JaCoP is Java-based component which will help developers in their work.

If you are a researcher, you will find that JaCoP is an easy to use tool, easy to extend to fit your particular needs, as well as quite efficient to actually solve large problems with the help of JaCoP. JaCoP has been used for research which only applies CP technology as well as for research within CP field itself.

If the tool like JaCoP was available at the time of my PhD I would make my PhD 1-2 years earlier. You should use the tools available for your advantage. If you are working on important aspect of CP technology we may even devote our free time to help you implement the functionality in JaCoP, so we keep JaCoP state-of-the-art.

If you are software engineer writing a software you will find that JaCoP as any constraint programming solver provides you with the ability to model the problem at hand as well as evaluate number of different search approaches to find an efficient one.

Use the wealth of knowledge encoded within constraints to increase the reasoning/solving power of your software solution.There are number of people who may act as consultants to help you apply CP technology in the form of JaCoP inside your project. Feel free to advertise your needs to obtain help on jacoptwiki.

JaCoP provides a significant number of constraints to facilitate modeling as well as modular design of search to facilitate tailoring of search to characteristics of the problem being addressed. It is currently more than 60.000 lines of code, not including examples and testing code.

There are more than 20.000 lines of code explaining how to model and solve diverse problems. We have been working on JaCoP for past 8 years during our free time as hobby activity. It has been refactored, transformed, improved many times. Initial versions of JaCoP were most likely even 3 orders of magnitude slower than the current version.

JaCoP provides a large library of examples as well as extensive Java API documentation. We have cases of JaCoP usage by young people at high school age. CP technology is not easy to use so at least we tried to make using JaCoP as easy as we could. Feel free to help us making JaCoP even more easy/intuitive to use. Please send us your examples, we will refactor them if necessary and include it with other examples.

Creating a solver is a process, at the time we have started we have been just frustrated novice users of CP technology who were struggling with closed source solvers to apply CP technology efficiently. We learnt a great deal of CP and software engineering during these years. 

JaCoP development was driven by three priorities - ease of use, ease of maintenance, and efficiency. There are number of solvers available, each one is special and each of them can be useful. Here, you have one more choice to choose from.

Every solver is different as solver 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. The 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, a short guide 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 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.
Last updated on May 21st, 2014