### 课程概况

厌倦了手动计算数独？本课程将教您如何运用离散优化概念和算法解决复杂检索问题，包括约束规划、局部搜索以及混合整数规划。

优化技术在人类社会中随处可见。通过优化，我们可以实现对航班和机组人员的合理调度，协调钢铁产量，组织从矿场到港口的铁矿石运输作业；通过优化我们可以计算出实时和将来的用电需求，使电力能够平稳输送给数百万人；通过优化，我们还可以管理肾脏移植和癌症治疗。优化理念帮助科学家了解人类生活的基本结构、控制复杂的化学反应、研制生产能够造福数十亿人的药物。

本课程主要介绍了离散优化，为同学们讲解该领域中一些最基本的概念和算法，包括约束规划、局部搜索和混合整数规划的基础知识，以及它们在调度优化、交通工具线路安排、供应链优化以及资源分配等领域的复杂问题中的应用。

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.

### 你将学到什么

Constraint Programming

Branch And Bound

Discrete Optimization

Linear Programming (LP)

### 课程大纲

周1

完成时间为 2 小时

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.

4 个视频 （总计 43 分钟）, 3 个阅读材料, 1 个测验

周2

完成时间为 7 小时

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.

9 个视频 （总计 101 分钟）, 1 个测验

周3

完成时间为 17 小时

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.

13 个视频 （总计 248 分钟）, 1 个阅读材料, 2 个测验

周4

完成时间为 13 小时

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.

10 个视频 （总计 191 分钟）, 1 个测验

周5

完成时间为 2 小时

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. .

6 个视频 （总计 130 分钟）

周6

完成时间为 12 小时

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.

6 个视频 （总计 136 分钟）, 1 个测验

周7

完成时间为 11 小时

Advanced Topics: Part I

These lectures cover some more advanced concepts in optimization. They introduce constraint-programming techniques for scheduling and

routing.

2 个视频 （总计 51 分钟）, 1 个测验

周8

完成时间为 1 小时

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.

### 预备知识

具备良好的编程技能，了解基本算法和线性代数。