基础课程

  • 微积分
  • 线性代数
  • 编程语言(C,C++,Python等)
  • 图论(可选)

    核心课程

  • 线性规划(最核心课程)

  • 非线性规划(机器学习应用广泛)
  • 凸优化(工程系的必修课)
  • 整数规划(决策问题中变量通常是整数,例如0,1变量)
  • 网络流优化 (物流、电网、通讯网络应用)
  • 数学建模(可选)

    高级课程

  • 多目标优化

  • 随机优化
  • 鲁棒优化
  • 启发式算法
  • 近似算法
  • 半正定规划等

以上通常是数学系下运筹学专业的必修和选修科目,工业工程、管理科学、物流工程、数据科学、
人工智能等偏应用的专业,可能会额外开一些该方向的偏实际应用的课程,例如管理信媳系统、生
产与运营管理、运营计划和控制、供应链管理、物流仓储技术等。

其次需要注意的是,数学系的课程往往偏理论,有时有非常多的数学证明和算法理论,如线性规划
的单纯型法,整数规划中的Total Unimodular和NP难问题的证明。对于偏运筹应用的学生来说,
则应把注意力放在数学建模以及优化软件的使用上。

数学建模指的是如何把一个实际问题转换成优化模型

例如我们用的GPS导航软件,从一地到另一地的最短路径问题,就是一个典型的运筹学问题。
该问题优化目标是找到最短的驾驶路径(或驾驶时间最短的路径),转化成优化模型时 ,约束条件往往有单行路段以及每条路段的限速等等(都可以写成严格的数学表达式)。
而该优化模型又是建立在一个更为广泛的优化模型(网络流模型Network Flow Problem)基础上的。

优化软件

优化软件(Optimization Solver)指的求解优化模型最优解的软件或算法库(Library) ,其中(混合)整数规划的求解器是最难开发的
面上Top 4求解器9依次为:
IBM Cplex,Gurobi,FICO Xpress,ZIB SCIP。
前三个为商业软件,后一个为柏林ZIB Institute开发的开源软件,但是这四个用作学术或科研用途都是免费的。
除了四个整数规划的求解器,线性规划的求解器有Lindo, Lingo,等等。
非线性规划、二次规划、启发式算法等问题有许多开源软件,另外还有AMPL和GAMS这些商业软件,他们把绝大多数求解器集成在一起并且简易化他们的使用。
推荐俩个网站NEOS Solver和COIN-OR,它们汇总了绝大多数的开源优化软件。

实战演练

  1. 拿到实际问题和数据,先搜索已有的经典模型(例如网络流模型), 看看能不能往经典模型上靠。因为经典模型经过几十年的研究,模型和算法都相当成熟,求解效率往往很高。
  2. 实在没有已有模型,就尝试自己建立新的优化模型,建模的思路函数是尽量线性化、少整数变量、big M尽量小(把二次函数线性化的trick)、低次函数 (Polynomial)。
  3. 把优化问题编程到优化软件或编程调用优化Library,导入问题数据,然后运行软件得出最优解。
  4. 根据求解速度和最优解,不断优化算法和模型,以提高求解效率。

    参考自