你可能已经会求一个函数的极小值,却仍然会在“怎样安排一批资源”这类题面前停住:变量该怎么选?目标是成本、时间,还是风险?一条限制写成等号还是不等号?如果方案必须是整数,连续模型算出的答案还能不能用?
这门课从这些决定开始。我们把生产、运输、排班、路径和资源配置翻译成优化模型,检查可行域,再选择能解释答案的算法。你会看到线性规划的角点为什么重要、对偶变量怎样变成资源的边际价值、整数约束为什么不能靠四舍五入解决,也会亲手走过最短路、最大流、梯度下降、Newton 和 KKT 的计算过程。
线性代数 I 和多变量微积分 I 是必要基础:向量、矩阵乘法、线性方程组、偏导数、梯度和 Hessian 要能读懂。微积分 II 建议具备,因为后半程会讨论级数式的误差尺度、局部收敛和数值迭代。课程不会重新讲普通微积分极值、Lagrange 乘子,也不会把线性代数中的最小二乘再做一遍;它们只在需要时作为已学工具出现。
刚开始接触运筹的读者,可以把每个模型都当成一份决策说明书来读:变量代表什么,目标要变小还是变大,约束从哪条事实而来,答案是否真的可执行。卡住时不要只看算法名,回到这四个问题,通常能找到缺的那一块。
模型一旦写错,最精巧的算法也只会很快地给出一个无关紧要的答案。所以课程前两章把建模和凸性讲扎实。随后进入线性规划的几何结构,沿着角点、基、reduced cost 和 pivot 的线索理解单纯形思想,再用对偶把“最优”写成一份可以核对的证书。
离散决策会把连续世界切开:整数优化讨论松弛、上界、incumbent 和分支定界;网络优化则利用图的结构高效地处理路径、流量和割。最后三章转向连续数值优化,解释梯度方向、步长、Newton、KKT、active set 和条件数,直到你能审计一个带多个目标的资源分配模型。
正文里的例题会把方法选择说出来,不只把计算结果摆在最后。遇到交互页面时,先预测一个现象:步长过大会怎样?把一条资源约束放松一点,最优值会不会改善?四舍五入后的整数解是否仍然可行?再去拖动参数,看模型给出的结果是否支持你的判断。
有几处值得慢下来。线性规划的比值检验、对偶的弱对偶不等式、branch-and-bound 的剪枝依据、残量网络的反向边,以及 KKT 中四个条件之间的分工,都不是背名词就够了。建议把每个推导遮住重做,再拿一个改变了数据或约束方向的变式题检查自己是否真的会用。
你应该能从一个带资源限制的现实问题出发,写出变量、目标、约束和可行域,判断模型属于哪一类;能用结构化方法求解小型 LP、整数和网络问题;也能在连续优化里选择合适的步长和停止准则,并用可行性、最优性证书和敏感性解释答案,而不是只报出一串数字。