什么是最优化问题
通俗地说,就是求一个函数在可行域上的极值。
若函数无约束条件则称为无约束优化;若约束条件为等式则称为等式约束优化;若约束条件为不等式则称为不等式约束优化。
最优性条件
最优性条件即极值点满足的条件。
- 无约束问题最优性条件
一阶必要条件:一阶导数等于0
二阶必要条件:二阶导数大于等于零
- 一般约束优化问题的最优性条件
无约束优化问题的算法框架
- step0 给定初始化参数及初始迭代点X0,置k=0;
- step1 若Xk满足终止准则,停止迭代,以Xk作为近似极小点;
- step2 确定下降方向dk;
- step3 确定步长因子ak,使得f(Xk+ak*dk)<f(Xk);
- step4 令Xk+1=Xk+ak*dk,k=k+1,转step1;
线搜索
在单变量的情况下可以采用线搜索技术,常用方法有两种:黄金分割法和抛物线法。
黄金分割法:
若初始搜索区间为[a0,b0],容许误差为ε, 分别计算区间里两个黄金分割点的值和区间两端的值,比较4个值后舍去一段区间,若不符合容许误差,则将区间继续迭代。
抛物线法:
若已知三个点s1,s2,s3,以及它们对应的函数值,就可以以这三个点构造二次函数,并求出对应的极值点,再通过比较这4个点,得到新的区间,若小于容许误差,则停止迭代。
最速下降法
选取一阶导数,也就是,梯度方向作为下降方向,利用线搜索方法确定步长因子ak,当一阶导数小于等于容许误差时停止迭代。
之字形下降,收敛速度慢
牛顿法
基本思想是利用Xk处的一阶导数和二阶导数将目标函数近似为一个二次函数,然后把这个二次函数的极小点作为新的迭代点,如果小于容许误差则停止迭代。
下降方向:
Gk*dk=-gk
Gk是二阶导数,gk是一阶导数
收敛速度较快,但是初始点需要足够靠近极小点,否则可能导致最终无法收敛
共轭梯度法
k=0,pk=rk
k>1,
rk为一阶导数,pk为下降方向
计算量少,存储方便
最小二乘法
使得目标函数与真值的差的平方和最小的方法,称为最小二乘法。
高斯牛顿法
βs相当于xk
罚函数法
上面的几种方法都适用于无约束优化问题,罚函数法适用于约束优化问题。
实际上罚函数是通过在目标函数中添加罚函数项,使得约束优化问题转化为无约束优化问题。
比如约束条件是x1+x2=1,那么就可以在函数中加上10000(x1+x2-1)^2这个项,因为10000是一个很大的参数,为了使整个函数尽量小,就必须使这个罚函数项=0。