We may earn an affiliate commission when you visit our partners.
Course image
Prof. Peter James Stuckey and Prof. Jimmy Ho Man Lee

Optimization is a common form of decision making, and is ubiquitous in 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 in manpower and material resources management also allow corporations to improve 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, all of these problems are a nightmare to solve using traditional undergraduate computer science methods.

Read more

Optimization is a common form of decision making, and is ubiquitous in 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 in manpower and material resources management also allow corporations to improve 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, all of these problems are a nightmare to solve using traditional undergraduate computer science methods.

This course is intended for students interested in tackling all facets of optimization applications. You will learn an entirely new way to think about solving these challenging problems by stating the problem in a state-of-the-art high level modeling language, and letting library constraint solving software do the rest. This will allow you to unlock the power of industrial solving technologies, which have been perfected over decades by hundreds of PhD researchers. With access to this advanced technology, problems that are considered inconceivable to solve before will suddenly become easy.

Watch the course promotional video here: https://www.youtube.com/watch?v=hc3cBvtrem0&t=8s

Enroll now

What's inside

Syllabus

MiniZinc introduction
In this first module, you will learn the basics of MiniZinc, a high-level modeling language for discrete optimization problems. Combining the simplicity of MiniZinc with the power of open-source industrial solving technologies, you will learn how to solve applications such as knapsack problems, graph coloring, production planning and tricky Cryptarithm puzzles, with great ease.
Read more
Modeling with Sets
In this module, you will learn how to model problems involving set selection. In particular, you will see different ways of representing set variables when the variable has no constraints on its cardinality, has fixed cardinality and bounded cardinality. You also have to ensure all model decisions are valid decisions, and each valid decision corresponds to exactly one model decision.
Modeling with Functions
In this module, you will learn how to model pure assignment problems and partition problems, which are functions in disguise. These problems find applications in rostering and constrained clustering. In terms of modeling techniques, you will see the power of common subexpression elimination and intermediate variables, and encounter the global cardinality constraint for the first time. MiniZinc also provides constraints for removing value symmetries.
Multiple Modeling
In the final module of this course you will see how discrete optimization problems can often be seen from multiple viewpoints, and modeled completely differently from each viewpoint. Each viewpoint may have strengths and weaknesses, and indeed the different models can be combined to help each other.

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Develops skills in constraint programming that are core for tackling real-world optimization problems
Taught by Prof. Peter James Stuckey and Prof. Jimmy Ho Man Lee, who are recognized for their work in constraint programming
Leverages open-source industrial solving technologies to provide learners with practical experience in solving optimization problems
Introduces MiniZinc, a high-level modeling language designed for discrete optimization problems, making optimization accessible to learners
Course is designed for students with an interest in optimization applications
Covers a range of topics in discrete optimization, providing a comprehensive foundation for learners

Save this course

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

Reviews summary

Well-received discrete optimization course

Learners say this is a well-received course. Students largely agree that the engaging assignments and clear lectures are valuable. Students also say that the course effectively teaches the basics of discrete optimization. However, a few learners note that some of the difficulty can be unexpected.
Course gives students new contextualization of skills.
"Excellent course, gives you a whole different contextualization of 'for loop' and formulation and solving a descrete optimization problem."
"very very good. for someone used to traditional way of solving problems using programming languages, this was an eye opener."
Learners enjoy the story-based approach.
"A classic combination of the story mode pitched in learning."
"Teaches the basics of modelling really well."
"I'm definitely enrolling into the advanced course!"
Assignments help learners practice skills.
"Very good assignements, it is a good introduction to CP, so i hope to continue to the next level soon."
"Great introduction to modeling for discrete optimization."
"This course leads you through optimization challenges of increasing difficulty."
"Watching the solvers converge faster as I optimized my models was really satisfying."
"Some basic knowledge about discrete optimization and the usage of MiniZinc Modeling Language."
"Challenging optimization puzzle with interesting background story setting."
There are gaps between sections in the course.
"lack of downloadable example files to support the various videos"
"sudden jumps in difficulty between the sections"
"too much time spent on topics irrelevant to the course"
Difficulty level can be surprising.
"It is "basic" though?"
"High complexity for a basic course and/or too high pace."
"Pretty good overall. The teaching is a bit boring at times but it's not too bad."

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 Basic Modeling for Discrete Optimization with these activities:
Review Constraint Optimization Fundamentals
Sharpen understanding of constraint optimization concepts to prepare for the course's advanced topics.
Browse courses on MiniZinc
Show steps
  • Revisit textbooks or online resources on constraint optimization.
  • Review basic concepts such as variables, constraints, and solvers.
  • Solve simple constraint optimization problems to refresh problem-solving skills.
  • Attend preparatory workshops or tutorials offered by the course or online platforms.
  • Discuss key concepts with classmates or online forums to clarify any uncertainties.
Organize and Review Course Materials
Establish a solid foundation by organizing and reviewing course materials.
Show steps
  • Gather all course materials, including lecture notes, readings, and assignments.
  • Create a system for organizing and storing the materials.
  • Review the materials regularly to reinforce understanding.
  • Annotate and summarize key concepts.
  • Identify areas where additional clarification or support is needed.
Attend a MiniZinc Conference or Meetup
Engage with the MiniZinc community, learn about the latest developments, and expand professional network.
Show steps
  • Research upcoming MiniZinc conferences or meetups.
  • Register for and attend the event.
  • Actively participate in sessions, workshops, and networking opportunities.
  • Connect with MiniZinc experts, practitioners, and researchers.
  • Follow up with new contacts and explore potential collaborations.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Model a Simple Sudoku Puzzle
Develop a basic Sudoku puzzle model to solidify knowledge of MiniZinc's modeling techniques.
Browse courses on Sudoku
Show steps
  • Review the MiniZinc documentation for Sudoku modeling.
  • Create a simple 6x6 Sudoku puzzle with known values.
  • Translate the puzzle into a MiniZinc model.
  • Solve the model using a constraint solver.
  • Verify the solution against the original puzzle.
Solve MiniZinc Optimization Problems
Reinforce problem-solving skills and deepen understanding of MiniZinc's optimization capabilities.
Browse courses on MiniZinc
Show steps
  • Gather a set of MiniZinc optimization problems of varying difficulty.
  • Solve the problems independently, using MiniZinc and constraint solving techniques.
  • Analyze the solutions and compare them to optimal solutions found online or in literature.
  • Identify areas of improvement and repeat the process to refine skills.
  • Share solutions and insights with classmates or online communities.
Explore advanced MiniZinc modeling techniques
Enhance understanding of MiniZinc's capabilities by working through tutorials on advanced modeling techniques.
Browse courses on MiniZinc
Show steps
  • Identify specific areas of MiniZinc modeling that need improvement.
  • Search for and select online tutorials that cover those topics.
  • Follow the tutorials, taking notes and experimenting with the provided examples.
  • Apply the learned techniques to personal MiniZinc projects.
  • Discuss findings and challenges with classmates or online forums.
Design and Implement a MiniZinc Solver for a Real-World Problem
Apply knowledge and skills to a practical application by designing and implementing a MiniZinc solver for a real-world optimization problem.
Browse courses on MiniZinc
Show steps
  • Identify a real-world problem that can be formulated as an optimization problem.
  • Design a MiniZinc model for the problem.
  • Implement the model in MiniZinc.
  • Develop a solver for the model.
  • Test and evaluate the solver's performance.

Career center

Learners who complete Basic Modeling for Discrete Optimization will develop knowledge and skills that may be useful to these careers:
Logistician
Logisticians plan and coordinate the movement of goods and services. They may work on projects such as designing new supply chains, improving existing supply chains, or managing inventory. This course can help Logisticians build a foundation in discrete optimization, which is a valuable skill for modeling and solving complex problems.
Supply Chain Manager
Supply Chain Managers oversee the flow of goods and services from suppliers to customers. They may work on projects such as designing new supply chains, improving existing supply chains, or managing inventory. This course can help Supply Chain Managers build a foundation in discrete optimization, which is a valuable skill for modeling and solving complex problems.
Operations Research Analyst
Operations Research Analysts use advanced analytical techniques to help organizations make better decisions. They may work on projects such as optimizing supply chains, scheduling production, or designing new products and services. This course can help Operations Research Analysts build a strong foundation in discrete optimization, which is a core skill for solving complex problems.
Industrial Engineer
Industrial Engineers design, develop, and improve production systems. They may work on projects such as designing new products, improving production processes, or reducing costs. This course can help Industrial Engineers build a foundation in discrete optimization, which is a valuable skill for modeling and solving complex problems.
Inventory Analyst
Inventory Analysts study the flow of goods and services through an organization. They may work on projects such as developing inventory management systems, improving inventory accuracy, or reducing inventory costs. This course can help Inventory Analysts build a foundation in discrete optimization, which is a valuable skill for modeling and solving complex problems.
Transportation Analyst
Transportation Analysts study the movement of people and goods. They may work on projects such as planning new transportation systems, improving existing transportation systems, or analyzing traffic patterns. This course can help Transportation Analysts build a foundation in discrete optimization, which is a valuable skill for modeling and solving complex problems.
Quantitative Analyst
Quantitative Analysts use mathematical and statistical techniques to analyze financial data. They may help make investment decisions, develop trading strategies, or manage risk. This course can help Quantitative Analysts build a foundation in discrete optimization, which is a valuable skill for modeling and solving complex problems.
Data Scientist
Data Scientists use mathematical and computational techniques to extract insights from data. They may help optimize operations, improve processes, or develop new products and services. This course can help Data Scientists build a foundation in discrete optimization, which is a valuable skill for modeling and solving complex problems.
Financial Analyst
Financial Analysts provide advice on financial matters to individuals and organizations. They may work on projects such as analyzing financial data, developing investment strategies, or managing risk. This course can help Financial Analysts build a foundation in discrete optimization, which is a valuable skill for modeling and solving complex problems.
Risk Manager
Risk Managers help organizations identify, assess, and manage risks. They may work on projects such as developing risk management plans, implementing risk mitigation strategies, or conducting risk assessments. This course can help Risk Managers build a foundation in discrete optimization, which can be helpful for modeling and solving complex problems.
Management Consultant
Management Consultants help organizations improve their performance. They may work on projects such as developing new strategies, improving operations, or implementing new technologies. This course can help Management Consultants build a foundation in discrete optimization, which can be helpful for solving complex problems and making better decisions.
Business Analyst
Business Analysts help organizations improve their performance. They may work on projects such as analyzing business processes, identifying opportunities for improvement, or developing new strategies. This course can help Business Analysts build a foundation in discrete optimization, which can be helpful for solving complex problems and making better decisions.
Systems Analyst
Systems Analysts design, develop, and maintain computer systems. They may work on projects such as developing new systems, upgrading existing systems, or troubleshooting system problems. This course can help Systems Analysts build a foundation in discrete optimization, which can be helpful for designing and developing efficient systems.
Software Engineer
Software Engineers design, develop, and maintain software applications. They may work on projects such as developing new features, fixing bugs, or improving performance. This course can help Software Engineers build a foundation in discrete optimization, which can be helpful for designing and developing efficient algorithms.
Product Manager
Product Managers are responsible for the development and marketing of products. They may work on projects such as defining product requirements, conducting market research, or launching new products. This course can help Product Managers build a foundation in discrete optimization, which can be helpful for making decisions about product design and development.

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 Basic Modeling for Discrete Optimization.
Provides a comprehensive overview of discrete optimization and combinatorial algorithms. It valuable resource for anyone interested in learning more about this field.
Provides a comprehensive overview of network optimization. It valuable resource for anyone interested in learning more about this field.
Provides a comprehensive overview of robust optimization. It valuable resource for anyone interested in learning more about this field.
Provides a comprehensive overview of stochastic programming. It valuable resource for anyone interested in learning more about this field.

Share

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

Similar courses

Here are nine courses similar to Basic Modeling for Discrete Optimization.
Solving Algorithms for Discrete Optimization
Most relevant
Advanced Modeling for Discrete Optimization
Most relevant
Optimization with Python: Solve Operations Research...
Most relevant
Discrete Optimization
Most relevant
Mathematical Optimization for Engineers
Most relevant
Constraint Programming
Most relevant
Understanding and Applying Numerical Optimization...
Most relevant
Excel/VBA for Creative Problem Solving, Part 1
Approximation Algorithms Part I
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