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

如题所述

第1个回答  2022-07-22

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

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

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

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

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

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

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

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