We may earn an affiliate commission when you visit our partners.
Course image
Course image
edX logo

Constraint Programming

Pierre Schaus, Laurent Michel, and Pascal Van Hentenryck

Today more than ever, the optimal use of resources has become a very important issue. Many decision problems (logistics, production, space, etc.) aiming at an optimal use of resources can be formulated as constraint combinatorial optimization problems. Unfortunately, these problems are difficult to solve mainly for two reasons :

Read more

Today more than ever, the optimal use of resources has become a very important issue. Many decision problems (logistics, production, space, etc.) aiming at an optimal use of resources can be formulated as constraint combinatorial optimization problems. Unfortunately, these problems are difficult to solve mainly for two reasons :

  1. They require complex algorithms to design and develop,
  2. Finding an optimal solution can be computationally intensive.

In this course, we will learn the basics of constraint programming: a paradigm that aims to reduce the cost of developing and solving combinatorial problems through extensive reuse of code, whose design is open-ended, but also through pruning techniques of the search space by reasoning at the level of constraints.

During the proposed projects, you will develop your own constraint programming solver in Java that we will gradually extend in functionality in order to solve more and more complex combinatorial problems, especially in scheduling and vehicle routing. You will also develop global constraints, implement search strategies, model problems, and measure the impact of modeling choices on the efficiency of the solution.

Each module first introduces the concepts through videos, then a programming project is proposed to put these concepts into practice.

What's inside

Learning objectives

  • Understand the constraint programming paradigm
  • Design and implement a modern constraint programming library
  • Model using the constraint programming
  • Extend the solver with new global constraints
  • Design custom and black-box searches
  • Approach scheduling and vehicle routing problems with constraint programming

Syllabus

Module 1: From Backtracking Search to the Constraint Programming ParadigmStarting from a custom backtracking search algorithm for the N-Queens Problem, we will make the approach gradually more generic until the introduction of a purely declarative approach and the design a first tiny CP library.
Read more
Module 2: Introduction to Mini-CPThe design and internals (variables, domains, state restoration, etc.) of Mini-CP, the constraint programming library that is used along the course and that is extended in each assignment.
Module 3: The sum and element global constraintsTwo constraints that occur for solving most of the CP problems. Design of their filtering algorithms, study of their properties and implementation.
Module 4: The extensional table constraintIntroduction to the table constraint, the most generic one can imagine in CP. Study of some of its application, and filtering algorithms for this constraint.
Module 5: The alldifferent constraintStudy of the alldifferent global constraint as an illustration of an elegant reuse of well-known graph algorithms embedded into the filtering of constraints.
Module 6: The Circuit constraint and Vehicle Routing Problems (VRP)Introduction to solving VRP with CP using the successor model and the circuit global constraint. Introduction to solving optimization problems with CP and Large Neighborhood search.
Module 7: Cumulative Scheduling ProblemsIntroduction to Scheduling with CP and the cumulative constraint, instrumental for scheduling non preemptive tasks with resource requirements.
Module 8: Disjunctive Scheduling ProblemsA specific case of scheduling problems is the one of disjunctive resource where activities cannot overlap in time. We will study specific filtering and search techniques and apply it to solve the well kownknown job-shop problem.
Module 9: Blackbox SearchIntroduction to efficient search heuristics independent of the problem to solve. All these searches are declinations of the well-known first-fail principle.
Module 10: ModelingIntroduction to advanced modeling techniques to boost the solving of your problems, including redundant constraints, and symmetry breaking.

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Develops advanced modeling techniques and global constraints, which are core skills for solving complex combinatorial problems
Taught by Pierre Schaus, Laurent Michel, Pascal Van Hentenryck, who are recognized for their work in constraint programming
Uses Mini-CP, a constraint programming library, which is essential for solving combinatorial problems
Covers a wide range of topics in constraint programming, including scheduling, vehicle routing, and cumulative scheduling problems
Provides hands-on experience in developing and extending a constraint programming solver
Builds a strong foundation for beginners in constraint programming

Save this course

Save Constraint Programming to your list so you can find it easily later:
Save

Reviews summary

Engaging intro to csp

Learners say this is a great intro to modern CSP that uses a project-based approach. The course setup makes sense, and you begin by using the CSP solver implemented in Java. Each week, you will improve on your implementation.
The course uses project-based learning.
"Using the project-based approach makes sense."
The course material is interesting.
"Great intro to the modern CSP!"

Activities

Coming soon We're preparing activities for Constraint Programming. These are activities you can do either before, during, or after a course.

Career center

Learners who complete Constraint Programming will develop knowledge and skills that may be useful to these careers:
Software Engineer
A Software Engineer designs, builds, and maintains software applications. As a Constraint Programming expert, you will leverage your advanced problem-solving skills and understanding of constraint modeling to optimize software performance and efficiency. The ability to quickly develop, prototype, and test software solutions gives you a competitive edge in the industry.
Quantitative Analyst
A Quantitative Analyst develops mathematical and statistical models to assess risk and make investment decisions. Your expertise in Constraint Programming will be invaluable as you work with complex datasets and financial models. The ability to understand and optimize financial problems will make you a highly sought-after candidate in the金融业.
Data Scientist
A Data Scientist extracts valuable insights from complex data. By taking this course, you will build a solid foundation in data analysis and optimization. This will enable you to develop intelligent data-driven solutions that help businesses make informed decisions. Furthermore, you will gain a competitive edge in the job market.
Operations Research Analyst
An Operations Research Analyst uses mathematical and analytical techniques to improve operational efficiency. Your skills in Constraint Programming will provide you with a strong foundation in modeling and solving complex optimization problems. You will be able to design and implement solutions that enhance productivity and reduce costs in various industries.
Business Analyst
A Business Analyst identifies and analyzes business needs and develops solutions. By taking this course, you will gain valuable problem-solving and analytical skills. These skills will enable you to effectively bridge the gap between business stakeholders and technical teams, making you an essential asset to any organization.
Project Manager
A Project Manager plans, executes, and monitors projects. Expertise in Constraint Programming will equip you with a systematic approach to project management. You will be able to optimize resource allocation, manage project timelines, and ensure successful project outcomes, giving you a competitive edge in managing complex projects.
Systems Engineer
A Systems Engineer designs, develops, and maintains complex systems. Your understanding of constraint modeling and optimization will be vital in ensuring the reliability and efficiency of these systems. You will be able to identify and resolve potential issues, contributing to the successful development and deployment of complex systems.
Data Engineer
A Data Engineer designs and implements data management systems. With your knowledge in Constraint Programming, you can optimize data pipelines and ensure efficient data storage and retrieval. This skillset is highly sought after as organizations strive to manage and utilize their growing data assets.
Computational Scientist
A Computational Scientist uses computational techniques to solve complex scientific problems. As a Constraint Programming expert, you will have the necessary skills to develop efficient and accurate models for scientific research. This will enable you to contribute to advancements in various scientific fields, including physics, chemistry, and biology.
Machine Learning Engineer
A Machine Learning Engineer develops and deploys machine learning models. By taking this course, you will gain foundational knowledge in constraint modeling and optimization techniques. This will enable you to design and implement efficient algorithms for machine learning tasks, such as model training and hyperparameter tuning.
Supply Chain Manager
A Supply Chain Manager plans, executes, and controls the movement of goods and services. Your skills in Constraint Programming will enable you to optimize supply chain networks. You can design and implement efficient logistics and distribution systems, reducing costs and improving customer service levels.
Financial Analyst
A Financial Analyst provides financial advice and guidance. Your expertise in Constraint Programming will provide you with an analytical edge in evaluating financial data, making investment recommendations, and managing financial risks. You will be able to develop innovative financial models that optimize investment portfolios and minimize risks.
Risk Manager
A Risk Manager identifies, assesses, and mitigates risks. Your expertise in Constraint Programming will empower you with a systematic approach to risk management. You can develop and implement risk management strategies, ensuring the resilience and continuity of organizations.
Statistician
A Statistician collects, analyzes, and interprets data. By taking this course, you will gain valuable skills in statistical modeling and inference. These skills will enable you to design and conduct effective statistical studies, providing insights from complex data to support decision-making.
Software Developer
A Software Developer designs, develops, and tests software applications. While Constraint Programming is not a direct requirement for this role, the problem-solving and analytical skills gained from the course will complement your technical abilities. You can apply these skills to write efficient and reliable code and solve complex software development challenges.

Reading list

We've selected six books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Constraint Programming.
This comprehensive handbook of constraint programming, covering a wide range of topics from basic concepts to advanced techniques. Suitable for researchers, practitioners, and advanced students.
Provides a practical introduction to constraint programming, using Prolog as the implementation language. Suitable for students and programmers with a basic understanding of programming.
This tutorial provides an introduction to the CP Optimizer constraint programming solver from IBM. Suitable for programmers with a background in Java or C++.
Provides a tutorial for ECLiPSe, a constraint programming language. ECLiPSe high-level language that makes it easy to model and solve constraint programming problems. This book would be a valuable resource for anyone who wants to learn how to use ECLiPSe.
Provides a practical introduction to constraint programming in Java, with a focus on the Java constraint programming library. It valuable resource for students, researchers, and practitioners who want to learn how to use Java to solve combinatorial problems.
Provides a practical introduction to constraint programming in Haskell, with a focus on the Haskell constraint programming library. It valuable resource for students, researchers, and practitioners who want to learn how to use Haskell to solve combinatorial problems.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Here are nine courses similar to Constraint Programming.
Discrete Optimization
Most relevant
Algorithmic Solutions: Design, Problem Solving, Reporting
Approximation Algorithms and Linear Programming
Non Linear Programming Problem For Academics and Research
Optimization with GAMS: Operations Research Bootcamp A-Z
Optimization with Python: Solve Operations Research...
Approximation Algorithms Part I
Greedy Algorithms, Minimum Spanning Trees, and Dynamic...
Advanced Algorithms and Complexity
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2024 OpenCourser