Skip to content

Introduction

radsz edited this page Sep 23, 2023 · 7 revisions

JaCoP is a Java Constraint Programming solver. It provides a significant number of (global) constraints to facilitate efficient modeling. It also provides modular design of search to help user tailor search to specific characteristics of problem being addressed. It is currently more than 100.000 lines of code, not including examples and testing code. We have been working on JaCoP since 2001. It has been refactored, transformed, improved many times. JaCoP provides a large library of examples as well as extensive Java API documentation. There are more than 20.000 lines of code explaining how to model and solve diverse problems. 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. JaCoP is being used in research, teaching, and industry. We participated in Minizinc Challenge and our solver has been awarded many times silver prize in a fixed category. Our users gave us 200+ Github stars.

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 in solving large problems. JaCoP has been used for research which only applies CP technology as well as for research within CP field itself. We have implemented techniques and research from more than 20 research articles. If you are software engineer writing a software you will find that JaCoP as any CP 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.

JaCoP is continuously under development. It is unfortunately rarely fully 100% 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 tasks like programs debugging. However, we provide a data generator search plugin to generate data for visualisation framework CP-viz.

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 and the results of Minizinc Challenge competition indicate that JaCoP is a very good Java solver, it may be even faster than good C++ based solver due to rich library of global constraints. 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 have JaCoP guide available under HTML format PDF format JavaDoc

We are getting more and more emails asking for help. We do help by writing back to you but we would like to encourage you to submit your questions/suggestions to Help/Discussion forum available on Github. Hopefully we will create a vibrant community of users helping each other giving us more time to work on improving JaCoP.

We also are happy to provide paid consultancy to our industrial users. If you need help of CP experts in your projects to make sure that you efficiently and quickly can get JaCoP/CP applied then feel free to contact us [ radoslaw dot szymanek at gmail dot com ]. The paying customers will have a priority in getting required features implemented so our product will be more and more usable for you.

JaCoP (Java Constraint Programming) solver wiki

Clone this wiki locally