JaCoP iconJaCoP 4.1.0

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.

Main features:

  • global constraints
  • modular search

last updated on:
May 21st, 2014, 22:48 GMT
file size:
1.7 MB
price:
FREE!
developed by:
Osolpro
license type:
Freeware
operating system(s):
Windows All
category:
C: \ Programming \ Components & Libraries

FREE!

In a hurry? Add it to your Download Basket!

user rating

UNRATED
0.0/5
 

0/5

What's New in This Release:
  • In this release we introduce floating-point variables (FloatVar) and constraints on these variables. The methods used in floating point domain of JaCoP are based on floating point intervals and consistency methods build around them. We provide a set of basic arithmetic constraints as well as square root, absolute value, trigonometric constraints (sin, cos,tan, asin, acos, atan), exponential constraint and natural logarithm. Moreover element constraint and equation between integer and float variables makes it possible to build models that mix different JaCoP variables. We have also included experimental implementation of several features that is not consider as final and can change in future.
  • The floating point domain is fully integrated with JaCoP solver. The same search methods can be used as well as floating point variables can be used as cost functions for minimization. We provide also specialized optimization methods that are specially developed for floating point variables.
  • The released version provides also flatzinc interpreter for floating point variables. Minizinc models containing float variables can be compiled using standard mzn2fzn compiler and used by JaCoP solver.
  • This release fixes also few bugs.
read full changelog

Add your review!

SUBMIT