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

Solving Algorithms for Discrete Optimization

Prof. Jimmy Ho Man Lee and Prof. Peter James Stuckey

Discrete Optimization aims to make good decisions when we have many possibilities to choose from. Its applications are ubiquitous throughout our society. Its applications range from solving Sudoku puzzles to arranging seating in a wedding banquet. The same technology can schedule planes and their crews, coordinate the production of steel, and organize the transportation of iron ore from the mines to the ports. Good decisions on the use of scarce or expensive resources such as staffing and material resources also allow corporations to improve their profit by millions of dollars. Similar problems also underpin much of our daily lives and are part of determining daily delivery routes for packages, making school timetables, and delivering power to our homes. Despite their fundamental importance, these problems are a nightmare to solve using traditional undergraduate computer science methods.

Read more

Discrete Optimization aims to make good decisions when we have many possibilities to choose from. Its applications are ubiquitous throughout our society. Its applications range from solving Sudoku puzzles to arranging seating in a wedding banquet. The same technology can schedule planes and their crews, coordinate the production of steel, and organize the transportation of iron ore from the mines to the ports. Good decisions on the use of scarce or expensive resources such as staffing and material resources also allow corporations to improve their profit by millions of dollars. Similar problems also underpin much of our daily lives and are part of determining daily delivery routes for packages, making school timetables, and delivering power to our homes. Despite their fundamental importance, these problems are a nightmare to solve using traditional undergraduate computer science methods.

This course is intended for students who have completed Advanced Modelling for Discrete Optimization. In this course, you will extend your understanding of how to solve challenging discrete optimization problems by learning more about the solving technologies that are used to solve them, and how a high-level model (written in MiniZinc) is transformed into a form that is executable by these underlying solvers. By better understanding the actual solving technology, you will both improve your modeling capabilities, and be able to choose the most appropriate solving technology to use.

Watch the course promotional video here: https://www.youtube.com/watch?v=-EiRsK-Rm08

Enroll now

What's inside

Syllabus

Basic Constraint Programming
This module starts by using an example to illustrate the basic machinery of Constraint Programming solvers, namely constraint propagation and search. While domains represent possibilities for variables, constraints are actively used to reason about domains and can be encoded as domain propagators and bounds propagators. You will learn how a propagation engine handles a set of propagators and coordinates the propagation of constraint information via variable domains. You will also learn basic search, variable and value choices, and how propagation and search can be combined in a seamless and efficient manner. Last but not least, this module describes how to program search in MiniZinc.
Read more
Advanced Constraint Programming
In this module, you will see how Branch and Bound search can solve optimization problems and how search strategies become even more important in such situations. You will be exposed to advanced search strategies, including restart search and impact-based search. The module also uncovers the inner workings of such global constraints as alldifferent and cumulative.
Mixed Integer Programming
This module starts by introducing linear programming and the Simplex algorithm for solving continuous linear optimization problems, before showing how the method can be incorporated into Branch and Bound search for solving Mixed Integer Programs. Learn Gomory Cuts and the Branch and Cut method to see how they can speed up solving.
Local Search
This module takes you into the exciting realm of local search methods, which allow for efficient exploration of some otherwise large and complex search space. You will learn the notion of states, moves and neighbourhoods, and how they are utilized in basic greedy search and steepest descent search in constrained search space. Learn various methods of escaping from and avoiding local minima, including restarts, simulated annealing, tabu lists and discrete Lagrange Multipliers. Last but not least, you will see how Large Neighbourhood Search treats finding the best neighbour in a large neighbourhood as a discrete optimization problem, which allows us to explore farther and search more efficiently.

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Fits well for learners who want to solve challenging discrete optimization problems
Taught by experienced instructors, Prof. Peter James Stuckey and Prof. Jimmy Ho Man Lee
Develops capabilities in modeling, helping learners improve their problem-solving skills
Covers advanced topics like Branch and Bound search, Local Search, and Mixed Integer Programming
Provides a strong foundation in Discrete Optimization, making it suitable for learners who want to pursue further studies or careers in the field
Learners are expected to have completed 'Advanced Modelling for Discrete Optimization' before taking this course

Save this course

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

Reviews summary

Solving algorithms for discrete optimization

Learners say that Solving Algorithms for Discrete Optimization is challenging and often requires more time to complete than the first two courses in the series, despite this, many found the course rewarding and worthwhile. One learner recommended reviewing the subtitles on all three discrete optimization problems, because there are many errors that need to be corrected. Some assignments have unclear instructions, so it may also be helpful to consult the forums. This course is part of a three-course series, and it covers topics such as simulated annealing, tabu search, large neighborhood search, and constrained optimizers.
Part of a Series
"This course is part of a three-course series"
Worthwhile Experience
"I'm not sure that it was enjoyable, but I'm glad I did it, completed it, and finished it having achieved higher marks than I did on the first two courses."
Simulated Annealing, Constrained Optimizers
"We also learned about local search algorithms like simulated annealing, tabu search and (particularly cool) large neighbourhood search."
"We learned about how to use MiniZinc's annotations to improve search performance."
Subtitles Need Review
"Someone should review the subtitles on all 3 discrete optimization problems, there is an abundance of errors that need to be corrected."
Challenging Course
"This was harder work than the first two courses in the series."
Consult Forums
"I needed to consult the forums for the Parade assignment as the instructions PDF was quite unclear."

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 Solving Algorithms for Discrete Optimization with these activities:
Review Discrete Optimization Basics
Recall the basic concepts and terminologies of Discrete Optimization to reinforce your understanding.
Browse courses on Discrete Optimization
Show steps
  • Reread lecture notes and textbooks from previous courses
  • Revisit online resources and tutorials
  • Attempt practice problems and exercises
Organize Course Materials
Compile resources, notes, and study materials from different sources and organize them systematically for easy access and review.
Show steps
  • Gather lecture notes, slides, and assignments
  • Review and organize materials by topic
  • Create a digital or physical study hub
  • Annotate and highlight key concepts
Explore Constraint Programming Resources
Enhance your understanding of Constraint Programming (CP) by following online tutorials and resources to strengthen your practical skills.
Browse courses on Constraint Programming
Show steps
  • Identify reputable CP learning platforms and tutorials
  • Follow step-by-step guides and examples
  • Experiment with different CP tools and libraries
  • Apply CP concepts to solve sample problems
  • Consult online forums and documentation for additional support
Four other activities
Expand to see all activities and additional details
Show all seven activities
Solve Discrete Optimization Problems
Sharpen your problem-solving abilities by practicing a variety of Discrete Optimization problems, covering different techniques and domains.
Browse courses on Discrete Optimization
Show steps
  • Access online platforms with problem sets and challenges
  • Attempt to solve problems independently
  • Analyze solution strategies and identify optimization techniques
  • Compare your solutions with others and seek feedback
Develop a Discrete Optimization Model
Demonstrate your modeling proficiency by designing and implementing a Discrete Optimization model using MiniZinc to solve a real-world problem.
Browse courses on Discrete Optimization
Show steps
  • Identify a suitable problem domain
  • Formulate the problem as a Discrete Optimization model
  • Implement the model in MiniZinc
  • Validate and test the model
  • Analyze and interpret the results
Attend Industry Conferences and Meetups
Expand your network and stay up-to-date by engaging with industry professionals at conferences and meetups dedicated to Discrete Optimization and related fields.
Browse courses on Discrete Optimization
Show steps
  • Identify relevant conferences and meetups
  • Attend sessions and presentations
  • Network with experts and practitioners
  • Explore potential collaborations
Contribute to Open-Source Discrete Optimization Projects
Enhance your practical skills and gain valuable experience by contributing to real-world Discrete Optimization projects on platforms like Github.
Browse courses on Discrete Optimization
Show steps
  • Identify open-source projects in need of assistance
  • Review codebases and documentation
  • Identify areas for improvement or contribution
  • Submit pull requests with bug fixes or enhancements
  • Engage with project maintainers and community

Career center

Learners who complete Solving Algorithms for Discrete Optimization will develop knowledge and skills that may be useful to these careers:
Operations Research Analyst
Operations Research Analysts use advanced analytical techniques to solve complex problems in various industries, including finance, healthcare, and manufacturing. This course on Solving Algorithms for Discrete Optimization can provide you with a strong foundation in the mathematical and computational methods used by Operations Research Analysts. You will learn how to formulate and solve optimization problems, and gain experience using specialized software tools. This course can help you develop the skills and knowledge needed to succeed as an Operations Research Analyst.
Data Scientist
Data Scientists use data analysis techniques to extract insights from data. They work in a variety of industries, including technology, finance, and healthcare. This course on Solving Algorithms for Discrete Optimization can provide you with a strong foundation in the mathematical and computational methods used by Data Scientists. You will learn how to collect, clean, and analyze data, and gain experience using specialized software tools. This course can help you develop the skills and knowledge needed to succeed as a Data Scientist.
Software Engineer
Software Engineers design, develop, and maintain software systems. They work in a variety of industries, including technology, finance, and healthcare. This course on Solving Algorithms for Discrete Optimization can provide you with a strong foundation in the mathematical and computational methods used by Software Engineers. You will learn how to design and implement efficient algorithms, and gain experience using specialized software tools. This course can help you develop the skills and knowledge needed to succeed as a Software Engineer.
Management Consultant
Management Consultants help organizations improve their performance. They work in a variety of industries, including technology, finance, and healthcare. This course on Solving Algorithms for Discrete Optimization can provide you with a strong foundation in the mathematical and computational methods used by Management Consultants. You will learn how to analyze business problems and develop solutions, and gain experience using specialized software tools. This course can help you develop the skills and knowledge needed to succeed as a Management Consultant.
Financial Analyst
Financial Analysts provide financial advice to individuals and organizations. They work in a variety of industries, including banking, investment management, and insurance. This course on Solving Algorithms for Discrete Optimization can provide you with a strong foundation in the mathematical and computational methods used by Financial Analysts. You will learn how to analyze financial data and make investment recommendations, and gain experience using specialized software tools. This course can help you develop the skills and knowledge needed to succeed as a Financial Analyst.
Actuary
Actuaries use mathematical and statistical methods to assess risk and uncertainty. They work in a variety of industries, including insurance, finance, and healthcare. This course on Solving Algorithms for Discrete Optimization can provide you with a strong foundation in the mathematical and computational methods used by Actuaries. You will learn how to analyze risk and develop risk management strategies, and gain experience using specialized software tools. This course can help you develop the skills and knowledge needed to succeed as an Actuary.
Statistician
Statisticians collect, analyze, and interpret data. They work in a variety of industries, including government, academia, and healthcare. This course on Solving Algorithms for Discrete Optimization can provide you with a strong foundation in the mathematical and computational methods used by Statisticians. You will learn how to design and conduct statistical studies, and gain experience using specialized software tools. This course can help you develop the skills and knowledge needed to succeed as a Statistician.
Operations Manager
Operations Managers plan and oversee the production and delivery of goods and services. They work in a variety of industries, including manufacturing, retail, and healthcare. This course on Solving Algorithms for Discrete Optimization can provide you with a strong foundation in the mathematical and computational methods used by Operations Managers. You will learn how to design and manage production systems, and gain experience using specialized software tools. This course can help you develop the skills and knowledge needed to succeed as an Operations Manager.
Business Analyst
Business Analysts help organizations improve their performance by analyzing business processes and developing solutions. They work in a variety of industries, including technology, finance, and healthcare. This course on Solving Algorithms for Discrete Optimization can provide you with a strong foundation in the mathematical and computational methods used by Business Analysts. You will learn how to analyze business problems and develop solutions, and gain experience using specialized software tools. This course can help you develop the skills and knowledge needed to succeed as a Business Analyst.
Project Manager
Project Managers plan and execute projects. They work in a variety of industries, including technology, construction, and healthcare. This course on Solving Algorithms for Discrete Optimization can provide you with a strong foundation in the mathematical and computational methods used by Project Managers. You will learn how to plan and manage projects, and gain experience using specialized software tools. This course can help you develop the skills and knowledge needed to succeed as a Project Manager.
Logistics Manager
Logistics Managers plan and coordinate the movement of goods and services. They work in a variety of industries, including transportation, retail, and manufacturing. This course on Solving Algorithms for Discrete Optimization can provide you with a strong foundation in the mathematical and computational methods used by Logistics Managers. You will learn how to design and manage logistics systems, and gain experience using specialized software tools. This course can help you develop the skills and knowledge needed to succeed as a Logistics Manager.
Supply Chain Manager
Supply Chain Managers plan and manage the flow of goods and services from suppliers to customers. They work in a variety of industries, including manufacturing, retail, and healthcare. This course on Solving Algorithms for Discrete Optimization can provide you with a strong foundation in the mathematical and computational methods used by Supply Chain Managers. You will learn how to design and manage supply chain systems, and gain experience using specialized software tools. This course can help you develop the skills and knowledge needed to succeed as a Supply Chain Manager.
Transportation Manager
Transportation Managers plan and manage the movement of people and goods. They work in a variety of industries, including transportation, logistics, and manufacturing. This course on Solving Algorithms for Discrete Optimization can provide you with a strong foundation in the mathematical and computational methods used by Transportation Managers. You will learn how to design and manage transportation systems, and gain experience using specialized software tools. This course can help you develop the skills and knowledge needed to succeed as a Transportation Manager.
Industrial Engineer
Industrial Engineers design and improve processes in a variety of industries, including manufacturing, healthcare, and retail. This course on Solving Algorithms for Discrete Optimization can provide you with a strong foundation in the mathematical and computational methods used by Industrial Engineers. You will learn how to design and improve processes, and gain experience using specialized software tools. This course can help you develop the skills and knowledge needed to succeed as an Industrial Engineer.
Quality Engineer
Quality Engineers ensure that products and services meet quality standards. They work in a variety of industries, including manufacturing, healthcare, and technology. This course on Solving Algorithms for Discrete Optimization can provide you with a strong foundation in the mathematical and computational methods used by Quality Engineers. You will learn how to design and implement quality control systems, and gain experience using specialized software tools. This course can help you develop the skills and knowledge needed to succeed as a Quality Engineer.

Reading list

We've selected eight 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 Solving Algorithms for Discrete Optimization.
This textbook provides a comprehensive overview of constraint programming, a powerful technique for solving combinatorial optimization problems.
This handbook provides a comprehensive overview of the state-of-the-art in constraint programming, covering both theoretical foundations and practical applications.
This textbook provides a comprehensive overview of linear programming, a fundamental technique for solving continuous optimization problems.
Provides a comprehensive overview of local search algorithms, a powerful technique for solving combinatorial optimization problems.
This textbook provides a comprehensive overview of discrete mathematics, a fundamental foundation for studying computer science.
This textbook provides a comprehensive overview of calculus, a fundamental foundation for studying computer science.
This textbook provides a comprehensive overview of numerical methods, a fundamental foundation for studying computer science.

Share

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

Similar courses

Here are nine courses similar to Solving Algorithms for Discrete Optimization.
Advanced Modeling for Discrete Optimization
Most relevant
Discrete Optimization
Most relevant
Basic Modeling for Discrete Optimization
Most relevant
Mathematical Optimization for Engineers
Most relevant
Optimization with Python: Solve Operations Research...
Most relevant
Algorithmic Solutions: Design, Problem Solving, Reporting
Most relevant
Optimization: principles and algorithms - Network and...
Most relevant
Constraint Programming
Excel/VBA for Creative Problem Solving, Part 1
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