2.1 基本优化问题

$\operatorname{minimize}\text{    }f(x)\text{       for   }x\in {{R}^{n}}$

解决无约束优化问题的一般步骤为:

  • Step1:选择一个初始出点${{\mathbf{x}}_{0}}$(这里的${{\mathbf{x}}_{0}}$是向量),设置一个收敛误差$\varepsilon $(解的精度)和一个迭代次数$k=0$;
  • Step2:找到从点${{\mathbf{x}}_{k}}$使函数$f(x)$下降最快的方向${{d}_{k}}$;
  • Step3:确定一个步长${{\alpha }_{k}}>0$,使$f({{\mathbf{x}}_{k}}+{{\alpha }_{k}}{{\mathbf{d}}_{k}})$减小,且${{\mathbf{x}}_{k+1}}={{\mathbf{x}}_{k}}+{{\alpha }_{k}}{{\mathbf{d}}_{k}}$;
  • Step4:if走一步的距离$\left\| {{\alpha }_{k}}{{\mathbf{d}}_{k}} \right\|<\varepsilon $,则停止并且输出解${{\mathbf{x}}_{k+1}}$;else $k:=k+1$并返回Step2,继续迭代。

注意:Step2和Step3是优化问题的关键;Step3是一个元优化的问题,通常被称为线性搜索;其中$\mathbf{x}$是一个有n个元素的列向量;假设$f(x)$二阶连续可微(比较光滑);

我将以一个,求解非线性方程组的例子,介绍多元无约束优化的各个步骤。

2.2 解一个非线性方程:

ok,整个无约束多元优化问题,以解一个非线性方程开始,将介绍(度下降、牛顿法、拟牛顿法)。

$\left\{ \begin{aligned} & x_{1}^{2}+{{x}_{2}}=11 \\& {{x}_{1}}+x_{2}^{2}=7 \\\end{aligned} \right.$

(a)用Matlab的roots()函数去解多项式方程:

将${{x}_{2}}=11-x_{1}^{2}$代入${{x}_{1}}+x_{2}^{2}=7$中,有$x_{1}^{4}-22x_{1}^{2}+{{x}_{1}}+114=0$

解得:$x1={{[3.5884\text{ 3}\text{.0000 -3}\text{.7793 -2}\text{.8051}]}^{T}};x2={{[-1.8481\text{ 2}\text{.0000 -3}\text{.2832 -3}\text{.1313}]}^{T}}$

(b) 用优化的方法去解

将解方程组的问题转化为优化问题:

\[\left\{ \begin{aligned}& {{f}_{1}}(\mathbf{x})=x_{1}^{2}+{{x}_{2}}-11=0 \\& {{f}_{2}}(\mathbf{x})={{x}_{1}}+x_{2}^{2}-7=0 \\\end{aligned} \right.\Rightarrow \underset{\mathbf{x}}{\mathop{\operatorname{mini}}}\,f(\mathbf{x})=\underset{\mathbf{x}}{\mathop{\operatorname{mini}}}\,\left[ f_{1}^{2}(\mathbf{x})+f_{2}^{2}(\mathbf{x}) \right]\]

要求得方程的解,按照优化理论的理解来说,就是要找到能使得${{f}_{1}}(\mathbf{x})$和${{f}_{2}}(\mathbf{x})$尽量趋近于0的$({{x}_{1}},{{x}_{2}})$。(至于这里为什么是二次方的和最小,而不是4次方、6次方...,这是一个非线性的方程组我还没法解释,如果是线性的到能解释——误差服从高斯分布)。ok,上面的问题可写为:

$\operatorname{minimize}\text{    }f(\mathbf{x})\text{       for   }\mathbf{x}\in {{R}^{2}}$

现在按照解一般优化问题的基本步骤走:

Step1:选择一个初始出点${{\mathbf{x}}_{0}}$(这里的${{\mathbf{x}}_{0}}$是向量),设置一个收敛误差$\varepsilon $(解的精度)和一个迭代次数$k=0$;

Step2:找到从点${{\mathbf{x}}_{k}}$使函数$f(x)$下降最快的方向${{d}_{k}}$;

由泰勒公式可知,如果一个函数足够平滑,在已知函数在某一点的各阶导数值的情况之下,泰勒公式可以用这些导数值做系数构建一个多项式来近似函数在这一点的邻域中的值。泰勒公式还给出了这个多项式和实际的函数值之间的偏差。

对于一个一元函数来说,泰勒公式可写为下式

$\begin{aligned}& f(x)=f({{x}_{0}})+{f}'({{x}_{0}})(x-{{x}_{0}})+\frac{{f}''({{x}_{0}})}{2!}{{(x-{{x}_{0}})}^{2}}+ \\& \text{          }...+\frac{{{f}^{(n)}}({{x}_{0}})}{n!}{{(x-{{x}_{0}})}^{n}}+\frac{{{f}^{(n+1)}}({{x}_{0}})}{(n+1)!}{{({{x}_{0}}+\theta (x-{{x}_{0}}))}^{n+1}} \\\end{aligned}$

其中$0<\theta <1$,${{x}_{0}}+\theta (x-{{x}_{0}})=\xi $其实$\xi $就表示${{x}_{0}}$与$x$之间的任意一点。现实中描述一个问题的时候,一般都有多个输入变量;在工程中一般认为展开到二阶导数就能精确的表示点${{\mathbf{x}}_{k}}$周围任意一点${{\mathbf{x}}_{k}}+\mathbf{\delta }$的函数值$f({{\mathbf{x}}_{k}}+\mathbf{\delta })$,则有:

\[\begin{aligned} & f({{\mathbf{x}}_{k}}+\mathbf{\delta })=f({{\mathbf{x}}_{k}})+{f}'({{\mathbf{x}}_{k}})\mathbf{\delta }+\frac{1}{2}{{\mathbf{\delta }}^{T}}{f}''({{\mathbf{x}}_{k}})\mathbf{\delta }+O\left( {{\left\| \mathbf{\delta } \right\|}^{3}} \right) \\& \text{               =}f({{\mathbf{x}}_{k}})+{{\nabla }^{T}}f({{\mathbf{x}}_{k}})\cdot \mathbf{\delta }+\frac{1}{2}{{\mathbf{\delta }}^{T}}\cdot {{\nabla }^{2}}f({{\mathbf{x}}_{k}})\cdot \mathbf{\delta }+O\left( {{\left\| \mathbf{\delta } \right\|}^{3}} \right) \\\end{aligned}\]

从这里开始分各类算法,像最速下降法、牛顿法、拟牛顿法,这些方法的目的就是在找方向${{d}_{k}}$。这些内容将在,02(b)、02(c)、02(e)中介绍。

02(a)多元无约束优化问题的更多相关文章

  1. 02(c)多元无约束优化问题-牛顿法

    此部分内容接<02(a)多元无约束优化问题>! 第二类:牛顿法(Newton method) \[f({{\mathbf{x}}_{k}}+\mathbf{\delta })\text{ ...

  2. 02(b)多元无约束优化问题-最速下降法

    此部分内容接02(a)多元无约束优化问题的内容! 第一类:最速下降法(Steepest descent method) \[f({{\mathbf{x}}_{k}}+\mathbf{\delta }) ...

  3. 02(d)多元无约束优化问题-拟牛顿法

    此部分内容接<02(a)多元无约束优化问题-牛顿法>!!! 第三类:拟牛顿法(Quasi-Newton methods) 拟牛顿法的下降方向写为: ${{\mathbf{d}}_{k}}= ...

  4. 02(e)多元无约束优化问题- 梯度的两种求解方法以及有约束转化为无约束问题

    2.1 求解梯度的两种方法 以$f(x,y)={{x}^{2}}+{{y}^{3}}$为例,很容易得到: $\nabla f=\left[ \begin{aligned}& \frac{\pa ...

  5. 无约束优化方法(梯度法-牛顿法-BFGS- L-BFGS)

    本文讲解的是无约束优化中几个常见的基于梯度的方法,主要有梯度下降与牛顿方法.BFGS 与 L-BFGS 算法. 梯度下降法是基于目标函数梯度的,算法的收敛速度是线性的,并且当问题是病态时或者问题规模较 ...

  6. MATLAB进行无约束优化

    首先先给出三个例子引入fminbnd和fminuc函数求解无约束优化,对这些函数有个初步的了解 求f=2exp(-x)sin(x)在(0,8)上的最大.最小值. 例2 边长3m的正方形铁板,四角减去相 ...

  7. 01(b)无约束优化(准备知识)

    1.解方程转化为优化问题 $n\left\{ \begin{aligned}& {{P}_{1}}(x)=0 \\ & {{P}_{2}}(x)=0 \\ & \text{   ...

  8. 无约束优化算法——牛顿法与拟牛顿法(DFP,BFGS,LBFGS)

    简介:最近在看逻辑回归算法,在算法构建模型的过程中需要对参数进行求解,采用的方法有梯度下降法和无约束项优化算法.之前对无约束项优化算法并不是很了解,于是在学习逻辑回归之前,先对无约束项优化算法中经典的 ...

  9. 065 01 Android 零基础入门 01 Java基础语法 08 Java方法 02 带参无返回值方法

    065 01 Android 零基础入门 01 Java基础语法 08 Java方法 03 带参无返回值方法 本文知识点:带参无返回值方法 说明:因为时间紧张,本人写博客过程中只是对知识点的关键步骤进 ...

随机推荐

  1. Servlet的基础知识

    没有什么固定的结构, 就是稍微总结一下学习到的, 基本上想到哪里写到哪里. 关于基本的最HttpServlet 实际上Servlet是J2EE(也就是现在的Java EE)中规范的一个接口, 用于根据 ...

  2. WPF编游戏系列 之九 物品清单再优化

    原文:WPF编游戏系列 之九 物品清单再优化        在"第三篇"和"第四篇"中通过用户控件和数据绑定功能对物品清单进行一些优化减少了部分C#代码,但感觉 ...

  3. WPF UpdateSourceTrigger的使用

    <Window x:Class="XamlTest.Window8"        xmlns="http://schemas.microsoft.com/winf ...

  4. js 点谁谁哭

    <!DOCTYPE html><html lang="en" xmlns="http://www.w3.org/1999/xhtml"> ...

  5. Android系统adb命令查看CPU与内存使用率

     1. 打开终端,进入上述目录,如下图所示:                                                     2. 输入adb shell,打开adb命令行,如 ...

  6. ubuntu下建立golang的build脚本

    在不在os中设置gopath,goroot的情况下 建立build.sh文件,文件内容如下: export GOARCH="386"export GOBIN="/home ...

  7. Android零基础入门第14节:使用高速Genymotion,跨入火箭时代

    原文:Android零基础入门第14节:使用高速Genymotion,跨入火箭时代 无论是使用Eclipse,还是Android Studio,使用自带的Android模拟器,不仅很费电脑内存,模拟器 ...

  8. ASP.NET MVC5快速入门--MyFirstWeb并发布到Windows Azure上

    博主刚刚学习ASP.NET MVC5,看着微软的文档一点点学,就把FirstWeb的建立展示一下下啦,本次建立一个带个人身份验证的例子(即有注册登录机制的动态网页),开始,啦啦啦~~ 新建一个项目,选 ...

  9. coci2018 题解

    plahte 给定一些矩形和一些有颜色的点,求每个矩形上有多少种颜色的点,保证矩形只有包含和不相交两种关系,规模 \(10^5\). 把每个矩形看成一个点,用扫描线建出森林,同时也顺便处理点. 然后做 ...

  10. vs2008在win7系统中安装不问题

    据说是office软件冲突问题. 解决方案是卸载了office软件,不管是2007还是其它版本,先安装vs2008,再安装其它的.