优化模型概论

最优化问题

在一系列主观或客观限制条件下,寻求使所关注的某个或多个指标达到最大(或最小)的决策,这种决策问题通常称为最优化问题优化问题,研究处理这类问题的数学方法称为最优化方法

用最优化方法解决决策问题包括两个基本步骤:

  1. 优化建模

    建立决策问题的优化模型

  2. 模型求解

    选择、利用优化方法和工具求解模型

优化模型

一般形式

优化模型是一种特殊的数学模型,优化建模方法是一种特殊的数学建模方法。优化模型一般由以下三个要素:

  • 决策变量

    通常是该问题要求解的那些未知量,可用一个$n$行的列向量$x=(x_1,x_2,\ldots,x_n)^T$表示。当对$x$赋值后它通常称为该问题的一个或一个点。

  • 目标函数

    通常是该问题要优化(最小或最大)的那个目标的数学的表达式,它是决策变量的函数,可抽象地记做$f(x)$。

  • 约束条件

    由该问题对决策变量的限制条件给出,即$x$允许取值的范围为$x \in \Omega$,$\Omega$称为可行域,常用一组关于$x$的等式和不等式来界定,分别称为等式约束不等式约束

    优化模型中约束一般没有严格小于、严格大于关系。

一般数学形式如下:

其中,$opt$是最优化(optimize)的意思,可以是$min$或$max$;

$s.t.$是“受约束于”(subject to或such that)。

可行解与最优解

满足约束条件的解$x$(即$x\in\Omega$)称为可行解,否则称为不可行解。

满足目标函数的可行解$x’$称为最优解

如果在某个可行解$x^$的附近($x^$的某个邻域),$x^$使目标函数达到最优,即$x^$是$x^$某个邻域中的最优解,但它不一定是整个可行域上的最优解,则$x^$称为一个局部最优解或相对最优解,它实际上只是极值点。

相对于局部最优解,我们把整个可行域上的最优解称为全局最优解或整体最优解。对于大多数优化问题,求全局最优解是很困难的,所以很多优化软件往往只能求到局部最优解。

基本类型

若按模型中决策变量的取值范围以及目标函数和约束函数的特性进行分类,常见类型如下:

  • 连续优化

    当所有决策变量$x_i(i=1,2,\ldots,n)$取值均为连续数值(即实数)时,优化模型称为连续优化(continuous optimization),也就是通常所说的数学规划

    • 线性规划

      此时,如果目标函数$f$和约束函数$h_i、g_j$都是线性函数,则优化模型称为线性规划(linear programming,LP)。

    • 非线性规划

      此时,如果目标函数$f$和约束函数$h_i、g_j$中至少有一个是非线性函数,则称为非线性规划(nonlinear programming,NLP)。

      特别地,如果目标函数$f$是一个二次函数,而约束函数$h_i、g_j$都是线性函数,则称为二次规划(quadratic programming,QP),它是一种相对比较简单的非线性规划。

  • 离散优化

    若$x_i$至少有一个只取离散数值,则优化模型称为离散优化(discrete optimization),或称为组合优化(combinatorial optimization)。

    这时通常$x$的一个或多个分量只取整数数值,则称为整数规划(integer programming,IP),并可以进一步明确地分为纯整数规划(pure integer programming,PIP,此时$x$的所有分量都只取整数数值)和混合整数规划(mixed integer programming,MIP,此时x的部分分量只取整数数值)。

    特别地,若$x$的分量中取整数数值的范围还限定为只取0或1,则称为0-1规划(zero-one programming,ZOP)。

    此外,与连续优化分成线性规划和非线性规划类似,整数规划也可以分成整数线性规划(ILP)和整数非线性规划(INLP)。

根据其他标准,优化问题还可以分为无约束优化(unconstrained optimization)和约束优化(constrained optimization)、确定性规划不确定性规划(如随机规划、模糊规划等)、光滑优化非光滑优化单目标规划多目标规划,此外还有目标规划动态规划多层规划等等。

一般来说,离散优化问题比连续优化问题难以求解,非线性规划问题比线性规划问题难以求解,非光滑优化比光滑优化难以求解。

敏感性分析

考虑当模型中的参数发生变化时最优解是否变化、变化多少的问题,这种分析称为敏感性分析


作者:@臭咸鱼

转载请注明出处:https://chouxianyu.github.io

欢迎讨论和交流!