课程概况
优化问题是一种常见的决策问题,它在我们的社会中很常见。它的应用可以从数独问题的解决涵盖到婚礼的座次安排。同样的技术可以用于航班与机组成员的安排,钢铁生产的调节,和钢铁从矿区到港口的调度问题。在生产中,人力资源与生产材料的合理决策可以使企业获得成千上万的利润提升。类似的问题也存在于我们的日常生活中,它们包括决定包裹的运输路径,调整学校课程时间,和传输能源到千家万户。尽管这些问题很基础,不过以一般本科教育的知识来解决这些问题都会十分困难。
这个课程是设计给所有对优化问题应用的各个方面感兴趣的同学。你将学习到一种全新的方法来思考如何解决这些有挑战性的问题。这种方法只需用先进的高级建模语言把问题在表述清楚,然后让约束求解器完成剩下的工作。它可以让你接触到业界问题求解的技术,而这在过去几十年中有上百个博士研究者不断将其完善优化。通过利用这种前沿的科技,在过去看起来不可思议的问题突然间变得易如反掌。
课程大纲
周1
完成时间为 6 小时
MiniZinc介绍
在第一单元中,你将学习到MiniZinc的基础知识。它是一门用于离散优化问题的高级建模语言。通过结合简洁的MiniZinc语言和业界开源项目强大的求解技术,你将学会如何轻松地解决一些应用问题,比如背包问题,涂色问题,生产规划和覆面算问题。这个模块的学习目标是: (1) 建立一个基本的MiniZinc模型。 (2)理解一个由他人创建的简单MiniZinc模型。
11 个视频 (总计 140 分钟), 5 个阅读材料, 1 个测验
周2
完成时间为 5 小时
集合建模
在这个单元中,你将学到如何对集合选择问题进行建模。特别是你将学习到如何利用不同的方法来表示没有势约束的,固定势的,或有界势的集合变量。在建模时,你还需要确保所有的模型决策都是有效的决策,而每一个有效的决策刚好对应一个模型决策。这个模块的学习目标是:(1) 建立一个MiniZinc模型来选择一个集合 。 (2)选择一种最适合的表示方式来表示集合。
6 个视频 (总计 75 分钟), 1 个阅读材料, 1 个测验
周3
完成时间为 9 小时
函数建模
在这个单元中,你将学习到如何对纯分配问题和划分问题建模,而实际上它们都是函数建模问题。这些问题可以应用到值勤安排或者约束聚类问题中。而在建模技术上,你将看到共同子表达式消除和中间变量的威力,还会初次接触到全局势约束。另外,MiniZinc还提供了约束来去除值对称。这个模块的学习目标是:(1) 创建MiniZinc模型来决定一个函数 。 (2)分析问题来洞察问题中是否含有赋值的子结构 。 (3)创建基本的值班模型。 (4)发现问题是否需要划分一个集合 。
7 个视频 (总计 100 分钟), 1 个阅读材料, 1 个测验
周4
完成时间为 8 小时
多重建模
在最后一个单元中,你将会看到离散优化问题可以如何通过不同的视角来切入,和如何从不同的视角来建立完全不同的模型。每一个视角都有优劣,而实际上不同的视角的模型可以结合起来互补。 这个模块的学习目标是:(1) 创建可以用两种不同视角的决策变量的MiniZinc模型。 (2)决定使用哪一种视角(或者组合视角)的决策变量对某一类问题更适合。