数学优化问题(最优化问题)

2019-07-22  本文已影响0人  老羊_肖恩

  数学优化(Mathematical Optimization)问题,也叫最优化问题,是指在一定约束条件下,求解一个目标函数的最大值(或最小值)问题。
  数学优化问题的定义为:给定一个目标函数(也叫代价函数)f : A → R,寻找一个变量(也叫参数)x∈ D,使得对于所有D中的xf(x) ≤ f(x)(最小化);或者f(x) ≥ f(x)(最大化),其中D为变量x 的约束集,也叫可行域;D中的变量被称为是可行解。

1 数学优化的类型

  根据输入变量x的值域是否为实数域,数学优化问题可以分为离散优化问题和连续优化问题。

1.1 离散优化和连续优化

  离散优化(Discrete Optimization)问题是目标函数的输入变量为离散变量,比如为整数或有限集合中的元素。连续优化(Continuous Optimization)问题是目标函数的输入变量为连续变量x ∈ Rd,即目标函数为实函数。离散优化问题主要有两个分支:

  1. 组合优化(Combinatorial Optimization)::其目标是从一个有限集合中找出使得目标函数最优的元素。
  2. 整数规划(Integer Programming):输入变量x ∈ Zd为整数。

  离散优化问题的求解一般都比较困难,优化算法的复杂度都比较高。后面的内容主要以连续优化为主。

1.2 无约束优化和约束优化

  在连续优化问题中,根据是否有变量的约束条件,可以将优化问题分为无约束优化问题和约束优化问题。
  无约束优化问题(Unconstrained Optimization)的可行域为整个实数域D = Rd,可以写为
\min_xf(x)其中x ∈ Rd为输入变量,f : Rd → R为目标函数。
  约束优化问题(Constrained Optimization)中变量x需要满足一些等式或不等式的约束。约束优化问题通常使用拉格朗日乘数法来进行求解。

1.3 线性优化和非线性优化

  如果目标函数和所有的约束函数都为线性函数,则该问题为线性规划问题(Linear Programming)。相反,如果目标函数或任何一个约束函数为非线性函数,则该问题为非线性规划问题(Nonlinear Programming)
  在非线性优化问题中,有一类比较特殊的问题是凸优化问题(Convex Programming)。在凸优化问题中,变量x 的可行域为凸集,即对于集合中任意两点,它们的连线全部位于在集合内部。目标函数f也必须为凸函数,即满足
f(\alpha x + (1 - \alpha)y) \leq \alpha f(x) + ( 1 + \alpha)f(y),\forall \alpha \in [0,1]  凸优化问题是一种特殊的约束优化问题,需满足目标函数为凸函数,并且等式约束函数为线性函数,不等式约束函数为凹函数。

2 优化算法

  优化问题一般都是通过迭代的方式来求解:通过猜测一个初始的估计x0,然后不断迭代产生新的估计x1, x2, · · · xt,希望xt最终收敛到期望的最优解x。一个好的优化算法应该是在 一定的时间或空间复杂度下能够快速准确地找到最优解。同时,好的优化算法受初始猜测点的影响较小,通过迭代能稳定地找到最优解x的邻域,然后迅速收敛于x
  优化算法中常用的迭代方法有线性搜索和置信域方法等。线性搜索的策略是寻找方向和步长,具体算法有梯度下降法、牛顿法、共轭梯度法等。

2.1 全局最优和局部最优

  对于很多非线性优化问题,会存在若干个局部的极小值。局部最小值,或局部最优解x定义为:存在一个δ > 0,对于所有的满足||x − x∗|| ≤ δ 的x,公式f(x) ≤ f(x)成立。也就是说,在x的附近区域内,所有的函数值都大于或者等于f(x)。对于所有的xA,都有f(x∗) ≤ f(x)成立,则x为全局最小值,或全局最优解。一般的,求局部最优解是容易的,但很难保证其为全局最优解。对于线性规划或凸优化问题,局部最优解就是全局最优解

上一篇下一篇

猜你喜欢

热点阅读