离散优化算法培训
基础约束编程
这个模块开始时用例子说明约束编程求解器的基础技术,也就是约束传播和搜索。
值域代表了变量可能的取值,而约束可用于在值域上进行推理。
约束本身可以以值域传播器和边界传播器的形式表示。
你将会学习到一个传播引擎如何处理一组传播器,并通过变量值域协调沟通约束传播得到的信息。
你也将会学到基础搜索,变量,数值选择等概念,
还有传播和搜索是如何紧密而高效地连接起来的。最后,这个模块介绍了如何在Minizinc中进行编程化搜索。
高阶约束编程
在这个模块中,你将会看到如何用分支限界搜索求解优化问题,
和搜索策略在这些情况下如何变得更为重要。
你将会了解到高阶的搜索策略,包括重启搜索和基于影响(impact-based)的搜索
。这个模块也会解释如alldifferent和cumulative全局约束的内部实现。
混合整数线性规划
这个模块从介绍线性规划和用于解决连续线性规划优化问题的Simplex算法开始,
之后展示了这个方法如何可以和分支限界法配合来解决混合整数线性规划问题。
之后再进一步学习Gomory切割和分支切割法并领略它们如何提高求解速度。
局部搜索
这个模块带你进入局部搜索的神奇领域,它可以高效地探索一些大而复杂的搜索空间。
你将会学到状态,移动和邻域的概念,还有它们在受约束的搜索空间中如何被应用在基本贪心搜索和最速梯度下降搜索中。
你还将学习不同的方法来逃离或者避免局部最小值,包括重启,模拟退火,禁忌表和离散拉格朗日乘数法。
最后,你将会看到大邻域搜索把在邻域中找到最优相邻点看作一个离散优化问题来解决,并因此使我们探索更远和更有效地搜索。