无约束最优化问题的一般结构与规划方法

无约束问题与最优解

考虑如下最优化问题:

minxRnf(x) min x ∈ R n f ( x )
无约束最优化问题的解由局部解和全局解两种,而实际上可行的往往只有局部解(或严格局部解)。如不加说明我们讨论的都是局部解。
局部解定义
xRn x ∗ ∈ R n ,若存在 x x ∗ δ(δ>0) δ ( δ > 0 ) 邻域
Nδ(x)={ x|xx<δ} N δ ( x ∗ ) = { x | ‖ x − x ∗ ‖ < δ }
使得
f(x)f(x),xNδ(x) f ( x ) ≥ f ( x ∗ ) , ∀ x ∈ N δ ( x ∗ )
则称 x x ∗ f(x) f ( x ) 的局部解;若
f(x)>f(x),xNδ(x) f ( x ) > f ( x ∗ ) , ∀ x ∈ N δ ( x ∗ )
则称 x x ∗ f(x) f ( x ) 的严格局部解。

最优性条件

一阶必要条件
f(x) f ( x ) 一阶连续可微,若 x x ∗ 是一个局部解,则: f(x)=0 ∇ f ( x ∗ ) = 0 。即 x x ∗ 在任何方向上的方向导数均为零,该点所处的切平面是水平的。
二阶必要条件
f(x) f ( x ) 二阶连续可微,若 x x ∗ 是一个局部解,则:

f(x)=0,2f(x)  ∇ f ( x ∗ ) = 0 , ∇ 2 f ( x ∗ )  为半正定
即在局部解 x x ∗ 处二阶方向导数非负。满足 f(x)=0 ∇ f ( x ∗ ) = 0 的点 x x ∗ 被称为函数 f f 的平稳点或 驻点,不是极小点也不是极大点的平稳点被称为函数的 鞍点
二阶充分条件
f ( x ) 二阶连续可微,且
f(x)=0,2f(x)  ∇ f ( x ∗ ) = 0 , ∇ 2 f ( x ∗ )  为正定
x x ∗ 是无约束问题的一个严格局部解。
凸充分性定理
f:RnR f : R n → R 是凸函数,且 f(x) f ( x ) 的一阶连续可微的,则 x x ∗ 是全局解得充分必要条件是 f(x)=0 ∇ f ( x ∗ ) = 0

一维线性搜索

求解最优化问题的关键是构造一个点列 { xk} { x k } 使其满足

limkf(xk)=f(x)=minxRf(x),limkxk=x lim k → ∞ f ( x k ) = f ( x ∗ ) = min x ∈ R f ( x ) , lim k → ∞ x k = x ∗
x x ∗ 为问题的解, 称 { xk} { x k } 极小化点列,其构造方法一般采用逐步构造法:
xk+1=xk+αkdk,k=0,1,2, x k + 1 = x k + α k d k , k = 0 , 1 , 2 , …
dk d k 搜索方向, ak a k 步长。一维搜索问题即讨论如何确定步长的问题,下面简要介绍几种搜索方法,及其特色,但对算法本身不予详细介绍。

精确线性搜索

如果有 αk α k 使得

ϕ(αk)=minα0{ ϕ(α)=f(xk+αdk)} ϕ ( α k ) = min α ≥ 0 { ϕ ( α ) = f ( x k + α d k ) }
则称该搜索为精确线性搜索,称 αk α k 为最优步长。该方法有重要理论价值,但除了 f(x) f ( x ) 是二次函数的特殊情况外,确定精确极小点是很困难的。

直接搜索法

首先介绍两个概念。
搜索区间
α α ∗ ϕ(α) ϕ ( α ) 的极小点,若存在区间 [a,b] [ a , b ] 使得 α[a.b] α ∗ ∈ [ a . b ] ,则称 [a,b] [ a , b ] ϕ(α) ϕ ( α ) 的搜索区间。确定搜索区间可采用进退法。从一点出发确定函数值“高-低-高”的4点,一个方向不成功就退回来反方向寻找。
单峰函数
设函数 ϕ(α) ϕ ( α ) 在区间 [a,b] [ a , b ] 内存在极小点 α(a.b) α ∗ ∈ ( a . b ) ,如果对于任意 α1,α2 α 1 , α 2 满足:

  1. α1<α2α α 1 < α 2 ≤ α ∗ 时,有 ϕ<
  • 9
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
现代设计方法是一种综合应用系统工程、数学、计算机科学等学科的方法,旨在解决复杂的设计和工程问题。其中,无约束优化问题是一类常见的数学问题,需要使用各种数学方法和工具进行求解,其中坐标轮换法是一种常用的优化方法之一。 以下是一个使用坐标轮换法求解无约束优化问题的Matlab程序: ``` % 定义目标函数 f = @(x) 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; % 定义初始点和步长 x0 = [-1.2; 1]; d = 0.1; % 定义坐标轮换函数 rot = @(theta) [cos(theta) sin(theta); -sin(theta) cos(theta)]; xrot = @(x,theta,i) rot(theta)*(x-x(i)) + x(i); % 进行优化 x = x0; for i = 1:1000 for j = 1:length(x) % 计算旋转角度 grad = (f(xrot(x,d,j))-f(xrot(x,-d,j)))/(2*d); theta = atan2(grad,d); % 进行坐标轮换 x = xrot(x,theta,j); end end % 输出结果 disp(['Minimum point: (' num2str(x(1)) ', ' num2str(x(2)) ')']); disp(['Minimum value: ' num2str(f(x))]); ``` 在这个程序中,我们首先定义了一个目标函数`f`,然后定义了初始点`x0`和步长`d`。接下来,我们定义了一个坐标轮换函数`xrot`,用于对每个坐标进行坐标轮换。最后,我们使用一个嵌套的循环结构,在每个坐标上进行坐标轮换,直到达到一定的迭代次数。最终,我们输出了最优解的坐标和函数值。 需要注意的是,这个程序中的坐标轮换法是一种比较简单的方法,只能用于求解一些简单的优化问题,对于复杂的问题,需要使用更加高级的优化算法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值