We may earn an affiliate commission when you visit our partners.
Course image
Dr. Carleton Coffrin and Professor Pascal Van Hentenryck

Tired of solving Sudokus by hand? This class teaches you how to solve complex search problems with discrete optimization concepts and algorithms, including constraint programming, local search, and mixed-integer programming.

Read more

Tired of solving Sudokus by hand? This class teaches you how to solve complex search problems with discrete optimization concepts and algorithms, including constraint programming, local search, and mixed-integer programming.

Optimization technology is ubiquitous in our society. It schedules planes and their crews, coordinates the production of steel, and organizes the transportation of iron ore from the mines to the ports. Optimization clears the day-ahead and real-time markets to deliver electricity to millions of people. It organizes kidney exchanges and cancer treatments and helps scientists understand the fundamental fabric of life, control complex chemical reactions, and design drugs that may benefit billions of individuals.

This class is an introduction to discrete optimization and exposes students to some of the most fundamental concepts and algorithms in the field. It covers constraint programming, local search, and mixed-integer programming from their foundations to their applications for complex practical problems in areas such as scheduling, vehicle routing, supply-chain optimization, and resource allocation.

Enroll now

What's inside

Syllabus

Welcome
These lectures and readings give you an introduction to this course: its philosophy, organization, and load. They also tell you how the assignments are a significant part of the class. This week covers the common input/output organization of the assignments, how they are graded, and how to succeed in this class.
Read more
Knapsack
These lectures introduce optimization problems and some optimization techniques through the knapsack problem, one of the most well-known problem in the field. It discusses how to formalize and model optimization problems using knapsack as an example. It then reviews how to apply dynamic programming and branch and bound to the knapsack problem, providing intuition behind these two fundamental optimization techniques. The concept of relaxation and search are also discussed.
Constraint Programming
Constraint programming is an optimization technique that emerged from the field of artificial intelligence. It is characterized by two key ideas: To express the optimization problem at a high level to reveal its structure and to use constraints to reduce the search space by removing, from the variable domains, values that cannot appear in solutions. These lectures cover constraint programming in detail, describing the language of constraint programming, its underlying computational paradigm and how it can be applied in practice.
Local Search
Local search is probably the oldest and most intuitive optimization technique. It consists in starting from a solution and improving it by performing (typically) local perturbations (often called moves). Local search has evolved substantially in the last decades with a lot of attention being devoted on which moves to explore. These lectures explore the theory and practice of local search, from the concept of neighborhood and connectivity to meta-heuristics such as tabu search and simulated annealing.
Linear Programming
Linear programming has been, and remains, a workhorse of optimization. It consists in optimizing a linear objective subject to linear constraints, admits efficient algorithmic solutions, and is often an important building block for other optimization techniques. These lectures review fundamental concepts in linear programming, including the infamous simplex algorithm, simplex tableau, and duality. .
Mixed Integer Programming
Mixed Integer Programming generalizes linear programming by allowing integer variables, which dramatically changes the complexity of the problems but also broadens the potential applications significantly. These lectures review how to model problems in mixed-integer programming and how to solve mixed-integer programs using branch and bound. Advanced techniques such as cutting planes and polyhedral cuts are also covered.
Advanced Topics: Part I
These lectures cover some more advanced concepts in optimization. They introduce constraint-programming techniques for scheduling and routing.
Advanced Topics: Part II
These lectures continues to cover some more advanced concepts in optimization. They introduce large neighborhood search, which often combines constraint programming and local search, and column generation which decomposes an optimization model into a master and pricing problem, using more complex variables.

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Develops skills used in optimization technology, which is used in various industries
Taught by Carleton Coffrin and Pascal Van Hentenryck, who are recognized for their work in this field
Explores advanced topics including advanced local search and cutting planes
Requires proficiency in optimization concepts and algorithms
Assessment includes assignments that form a significant part of the grade

Save this course

Save Discrete Optimization to your list so you can find it easily later:
Save

Reviews summary

Discrete optimization mastery

Learners say this challenging Discrete Optimization course from the University of Melbourne is largely positive. The engaging assignments are structured around outputting solutions to real-world optimization problems, but may require 12-15 hours weekly. Difficult exams require learners to complete five programming assignments, each focusing on a different hard problem, including traveling salesman, knapsack, graph coloring, and vehicle routing.
Professor Pascal Van Hentenryck presents lectures with excitement and passion and provides a variety of images and graphics to aid understanding, making the challenging material more engaging.
"The instructor for this course, Professor Hentenryck, is wonderful."
"His excitement and passion are palpable in his lectures and his team has clearly put in a ton of effort into creating all the graphics, images, etc. to make the illustrations as lucid as possible."
"Prof. von Hentenryck had an engaging style."
Assignments are very challenging and may require 12-15 hours weekly, but their structure allows learners to choose their own problem-solving approach.
"The core of the learning for course was in the assignments."
"I personally enjoyed the their structure, which was highly computational and focused on output without restricting your choice of approach."
"Each student could choose either to stick with tool that they are already comfortable with, or break out and experiment with something new."
This course features five programming assignments that focus on hard problems commonly found in Discrete Optimization, such as the traveling salesman and vehicle routing problems.
"The entire course grade is based on 5 programming assignments: the knapsack problem, graph coloring, traveling salesman, warehouse location and vehicle routing."
"An average score of 7 (out of 10) on each part of each programming assignment is required to earn a certificate."

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Discrete Optimization with these activities:
Connect with Optimization Experts
Expand your network and gain valuable insights by seeking guidance from experienced optimization practitioners.
Browse courses on Networking
Show steps
  • Identify potential mentors in the field of optimization.
  • Reach out to them, express your interest in optimization, and request mentorship.
Review Combinatorics Concepts
Strengthen your foundation by refreshing combinatorial ideas, a cornerstone of optimization.
Browse courses on Combinatorics
Show steps
  • Review basic combinatorics principles, such as permutations, combinations, and counting techniques.
  • Solve practice problems to reinforce your understanding.
Read 'Optimization with Python' by Andreas Antoniou
Enhance your understanding of optimization techniques and their implementation in Python.
Show steps
  • Read the book, paying attention to the mathematical concepts and Python implementations.
  • Solve the exercises provided in the book to practice your skills.
Five other activities
Expand to see all activities and additional details
Show all eight activities
Explore Branch and Bound Algorithms Online
Develop foundational knowledge of Branch and Bound, a technique used to find optimal solutions to complex problems.
Browse courses on Branch and Bound
Show steps
  • Identify a tutorial that covers Branch and Bound algorithms.
  • Follow the tutorial, understanding the underlying concepts.
  • Practice implementing Branch and Bound algorithms in the tutorial.
Collaborate on Optimization Problem-Solving
Enhance problem-solving skills and diverse perspectives through peer collaboration.
Browse courses on Optimization Techniques
Show steps
  • Form a study group with peers taking this course.
  • Select optimization problems to work on together.
  • Discuss solution strategies, share insights, and provide feedback.
Solve Constraint Satisfaction Problems Exercises
Sharpen your problem-solving skills by practicing Constraint Satisfaction Problems.
Show steps
  • Find a collection of Constraint Satisfaction Problem exercises.
  • Solve the exercises, applying the concepts of constraint satisfaction.
  • Review your solutions, identifying areas for improvement.
  • Repeat the exercises to enhance your proficiency.
Develop a Visual Guide to Mixed-Integer Programming
Solidify your understanding of Mixed-Integer Programming concepts by creating a visual representation.
Browse courses on Mixed-Integer Programming
Show steps
  • Identify key concepts and algorithms in Mixed-Integer Programming.
  • Develop visual representations, such as diagrams or flowcharts, to explain these concepts.
  • Create a comprehensive guide that incorporates the visual representations.
Design an Algorithm for Dynamic Programming
Deepen your comprehension of Dynamic Programming by implementing an algorithm from scratch.
Browse courses on Dynamic programming
Show steps
  • Select a complex optimization problem suitable for Dynamic Programming.
  • Design an efficient algorithm using Dynamic Programming principles.
  • Implement the algorithm in a programming language of your choice.
  • Test and analyze the algorithm's performance.

Career center

Learners who complete Discrete Optimization will develop knowledge and skills that may be useful to these careers:
Operations Research Analyst
Operations Research Analysts use mathematical and analytical techniques to improve the efficiency of systems and processes. They work in a variety of industries, including manufacturing, healthcare, and transportation. Discrete Optimization is a core course for Operations Research Analysts, providing them with the skills and knowledge they need to develop and implement optimization solutions. By taking this course, you will gain the foundation you need to succeed as an Operations Research Analyst.
Data Scientist
Data Scientists analyze data to extract insights and solve business problems. They use a variety of techniques, including optimization, to find the best solutions to complex problems. Discrete Optimization is a foundational course for Data Science, providing a strong foundation in optimization techniques that can be applied to a wide range of real-world problems. By taking this course, you will gain the skills and knowledge you need to succeed as a Data Scientist.
Logistics Manager
Logistics Managers plan, direct, and control the movement of goods and services. They work in a variety of industries, including manufacturing, retail, and transportation. Discrete Optimization is a valuable course for Logistics Managers, providing them with the skills and knowledge they need to develop and implement optimization solutions. By taking this course, you will gain the foundation you need to succeed as a Logistics Manager.
Transportation Manager
Transportation Managers plan, direct, and control the movement of people and goods. They work in a variety of industries, including manufacturing, retail, and transportation. Discrete Optimization is a valuable course for Transportation Managers, providing them with the skills and knowledge they need to develop and implement optimization solutions. By taking this course, you will gain the foundation you need to succeed as a Transportation Manager.
Operations Manager
Operations Managers plan, direct, and control the operations of an organization. They work in a variety of industries, including manufacturing, healthcare, and transportation. Discrete Optimization is a valuable course for Operations Managers, providing them with the skills and knowledge they need to develop and implement optimization solutions. By taking this course, you will gain the foundation you need to succeed as an Operations Manager.
Industrial Engineer
Industrial Engineers design, improve, and install integrated systems for managing industrial production and operations. They use a variety of techniques, including optimization, to improve the efficiency of production processes. Discrete Optimization is a valuable course for Industrial Engineers, providing them with the skills and knowledge they need to develop and implement optimization solutions. By taking this course, you will gain the foundation you need to succeed as an Industrial Engineer.
Actuary
Actuaries use mathematical and statistical techniques to assess risk and uncertainty. They work in a variety of industries, including insurance, finance, and healthcare. Discrete Optimization is a valuable course for Actuaries, providing them with the skills and knowledge they need to develop and implement optimization models. By taking this course, you will gain the foundation you need to succeed as an Actuary.
Management Consultant
Management Consultants advise businesses on how to improve their performance. They use a variety of techniques, including optimization, to help businesses make better decisions. Discrete Optimization is a valuable course for Management Consultants, providing them with the skills and knowledge they need to develop and implement optimization solutions. By taking this course, you will gain the skills you need to succeed as a Management Consultant.
Business Analyst
Business Analysts use data analysis and problem-solving skills to help businesses improve their performance. They work in a variety of industries, including healthcare, finance, and manufacturing. Discrete Optimization is a valuable course for Business Analysts, providing them with the skills and knowledge they need to develop and implement optimization solutions. By taking this course, you will gain the foundation you need to succeed as a Business Analyst.
Statistician
Statisticians collect, analyze, and interpret data. They work in a variety of industries, including healthcare, finance, and manufacturing. Discrete Optimization is a valuable course for Statisticians, providing them with the skills and knowledge they need to develop and implement optimization models. By taking this course, you will gain the foundation you need to succeed as a Statistician.
Data Analyst
Data Analysts analyze data to identify trends and patterns. They work in a variety of industries, including healthcare, finance, and manufacturing. Discrete Optimization is a valuable course for Data Analysts, providing them with the skills and knowledge they need to develop and implement optimization models. By taking this course, you will gain the foundation you need to succeed as a Data Analyst.
Financial Analyst
Financial Analysts analyze financial data and make investment recommendations. They work in a variety of financial institutions, including investment banks, hedge funds, and pension funds. Discrete Optimization is a valuable course for Financial Analysts, providing them with the skills and knowledge they need to develop and implement optimization models. By taking this course, you will gain the foundation you need to succeed as a Financial Analyst.
Quantitative Analyst
Quantitative Analysts use mathematical and statistical techniques to analyze financial data and make investment decisions. They work in a variety of financial institutions, including investment banks, hedge funds, and pension funds. Discrete Optimization is a valuable course for Quantitative Analysts, providing them with the skills and knowledge they need to develop and implement optimization models. By taking this course, you will gain the foundation you need to succeed as a Quantitative Analyst.
Software Engineer
Software Engineers design, develop, and maintain software applications. They use a variety of techniques, including optimization, to create efficient and effective software solutions. Discrete Optimization is a valuable course for Software Engineers, providing them with the skills and knowledge they need to develop and implement optimization algorithms. By taking this course, you will gain the foundation you need to succeed as a Software Engineer.
Systems Analyst
Systems Analysts design, develop, and implement computer systems. They work in a variety of industries, including healthcare, finance, and manufacturing. Discrete Optimization is a valuable course for Systems Analysts, providing them with the skills and knowledge they need to develop and implement optimization algorithms. By taking this course, you will gain the foundation you need to succeed as a Systems Analyst.

Reading list

We've selected 13 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 Discrete Optimization.
Provides a comprehensive overview of constraint programming, covering both the theoretical foundations and practical applications. It would be particularly useful for students who want to learn more about the underlying concepts of constraint programming and its potential applications.
Provides a comprehensive overview of constraint programming, covering the theoretical foundations, algorithms, and applications of this powerful technique. It would be a valuable resource for students and practitioners who want to learn more about constraint programming.
Provides a thorough introduction to local search, a widely used optimization technique for solving combinatorial problems.
Provides a comprehensive overview of local search techniques for combinatorial optimization problems. It covers a wide range of topics, from basic concepts to advanced techniques. It would be a valuable resource for students and practitioners who want to learn more about local search.
Provides a comprehensive overview of linear programming and network flows. It covers a wide range of topics, from basic concepts to advanced techniques. It would be a valuable resource for students and practitioners who want to learn more about linear programming and network flows.
Provides a comprehensive overview of vehicle routing. It covers a wide range of topics, from basic concepts to advanced techniques. It would be a valuable resource for students and practitioners who want to learn more about vehicle routing.
Provides a comprehensive overview of supply chain optimization. It covers a wide range of topics, from basic concepts to advanced techniques. It would be a valuable resource for students and practitioners who want to learn more about supply chain optimization
Provides a comprehensive overview of vehicle routing problems, a type of optimization problem that arises in a wide variety of applications.
Provides a comprehensive overview of knapsack problems, a type of optimization problem that arises in a wide variety of applications.
Provides a detailed and comprehensive introduction to linear programming, with a focus on theory and applications.

Share

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

Similar courses

Here are nine courses similar to Discrete Optimization.
Optimization with Python: Solve Operations Research...
Most relevant
Constraint Programming
Most relevant
Optimization with GAMS: Operations Research Bootcamp A-Z
Most relevant
Mathematical Optimization for Engineers
Most relevant
Job Shop Scheduling Using MILP Optimization on RStudio
Most relevant
Supply Chain Analytics
Most relevant
Understanding and Applying Numerical Optimization...
Most relevant
Advanced Modeling for Discrete Optimization
Most relevant
Multi Product Optimal Production Planing Using R...
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