最优化问题求解方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最优化问题求解方法相关的知识,希望对你有一定的参考价值。

参考技术A

在求解最优化问题中,拉格朗日乘子法(Lagrange Multiplier)和KKT(Karush Kuhn Tucker)条件是两种最常用的方法。在有等式约束时使用拉格朗日乘子法,在有不等约束时使用KKT条件。

我们这里提到的最优化问题通常是指对于给定的某一函数,求其在指定作用域上的全局最小值(因为最小值与最大值可以很容易转化,即最大值问题可以转化成最小值问题)。提到KKT条件一般会附带的提一下拉格朗日乘子。对学过高等数学的人来说比较拉格朗日乘子应该会有些印象。二者均是求解最优化问题的方法,不同之处在于应用的情形不同。

一般情况下,最优化问题会碰到一下三种情况:

这是最简单的情况,解决方法通常是函数对变量求导,令求导函数等于0的点可能是极值点。将结果带回原函数进行验证即可。

设目标函数为f(x),约束条件为h_k(x),形如:
  s.t. 表示subject to ,“受限于”的意思,l表示有l个约束条件。

则解决方法是消元法或者拉格朗日法。消元法比较简单不在赘述,这里主要讲拉格朗日法,因为后面提到的KKT条件是对拉格朗日乘子法的一种泛化。

作为一种优化算法,拉格朗日乘子法主要用于解决约束优化问题,它的基本思想就是通过引入拉格朗日乘子来将含有n个变量和k个约束条件的约束优化问题转化为含有(n+k)个变量的无约束优化问题。拉格朗日乘子背后的数学意义是其为约束方程梯度线性组合中每个向量的系数。

如何将一个含有n个变量和k个约束条件的约束优化问题转化为含有(n+k)个变量的无约束优化问题?拉格朗日乘数法从数学意义入手,通过引入拉格朗日乘子建立极值条件,对n个变量分别求偏导对应了n个方程,然后加上k个约束条件(对应k个拉格朗日乘子)一起构成包含了(n+k)变量的(n+k)个方程的方程组问题,这样就能根据求方程组的方法对其进行求解。

首先定义拉格朗日函数F(x):

然后解变量的偏导方程:

我们上述讨论的问题均为等式约束优化问题,但等式约束并不足以描述人们面临的问题,不等式约束比等式约束更为常见,大部分实际问题的约束都是不超过多少时间,不超过多少人力,不超过多少成本等等。所以有几个科学家拓展了拉格朗日乘数法,增加了KKT条件之后便可以用拉格朗日乘数法来求解不等式约束的优化问题了。

设目标函数f(x),不等式约束为g(x),有的教程还会添加上等式约束条件h(x)。此时的约束优化问题描述如下:

则我们定义不等式约束下的拉格朗日函数L,则L表达式为:

其中f(x)是原目标函数,hj(x)是第j个等式约束条件,λj是对应的约束系数,gk是不等式约束,uk是对应的约束系数。

常用的方法是KKT条件,同样地,把所有的不等式约束、等式约束和目标函数全部写为一个式子L(a, b, x)= f(x) + a g(x)+b h(x),

首先,我们先介绍一下什么是KKT条件。

KKT条件是指在满足一些有规则的条件下, 一个非线性规划(Nonlinear Programming)问题能有最优化解法的一个必要和充分条件. 这是一个广义化拉格朗日乘数的成果. 一般地, 一个最优化数学模型的列标准形式参考开头的式子, 所谓 Karush-Kuhn-Tucker 最优化条件,就是指上式的最优点x∗必须满足下面的条件:

1). 约束条件满足gi(x∗)≤0,i=1,2,…,p, 以及,hj(x∗)=0,j=1,2,…,q

2). ∇f(x∗)+∑i=1μi∇gi(x∗)+∑j=1λj∇hj(x∗)=0, 其中∇为梯度算子;

3). λj≠0且不等式约束条件满足μi≥0,μigi(x∗)=0,i=1,2,…,p。

牛顿法求解无约束最优化问题的方法

第一张图片的画线式子是怎么来的啊,由(B.2)来的??还有第三张图片上方画线的两个式子也没看懂,由(B.8)怎么推?

    B6公式是从B2对x求导得到的

    pk是定义的方向,沿着负梯度方向,后面是证明这样确实是f(x)减小的方向。

    这些在《数值计算》这些书里都有。

追问

哎,还是没懂,我感觉是数学基础是不是太差了,我刚考完研,数学就本科那点东西,学电子的。
1,矩阵对x求导,是咋样的?
2,B.14的式子不是+pk就行了吗?为什么还要+λpk?

追答

矩阵求导你可以找本书看看。
搜索不仅要梯度,还要步进的,就是乘以一个系数。
你要是大四的话,还不如先搞点工程类的,研究生还是有不少数学课的吧。

追问

对的,我现在在看李航的统计学习方法。感觉数学基础不够,看得不太懂

追答

来日方长

参考技术A 请问您这是哪本书啊,想学习学习,谢谢!

以上是关于最优化问题求解方法的主要内容,如果未能解决你的问题,请参考以下文章

最优化算法

迭代求解最优化问题TOA定位——最小二乘问题高斯牛顿法

优化求解基于matlab遗传算法求解数控机床加工孔最佳路径优化问题含Matlab源码 2100期

优化求解基于matlab遗传算法求解数控机床加工孔最佳路径优化问题含Matlab源码 2100期

牛顿法、黄金分割法、二次插值法实验(最优化1)

单目标优化求解基于matlab差分结合松鼠优化算法求解单目标优化问题(DSSA)含Matlab源码 1854期