15.3.3 用MATLAB求解优化问题
如表15-1所示,MATLAB软件有多种内建的函数可以完成最优化求解。下面两个例子将说明它们是如何使用的。
表15-1 实现最优化的MATLAB函数
|
函 数 |
描 述 |
|
fminbnd fminsearch |
带有绑定约束的单变量函数最小化 多变量函数最小化 |
例15.5 使用MATLAB求解一维优化问题
问题:使用MATLAB中的fminbnd函数在[0,4]区间中求
的最大值。第13章使用了几种方法解这个问题,该问题的解为
。
解:首先新建一个M-文件来表示该函数。
|
|
|
MATLAB有许多处理多维函数的功能。第13章提到,一维搜索的图形类似于过山车,而二维搜索的图形类似于山峰和山谷。在下面的例子中,MATLAB的画图功能为可视化这类函数提供了一个方便的方式。
例15.6 绘制二维函数的图形
问题:使用MATLAB的画图功能绘制如下函数的图形,以便以可视方式评估在区间?2 ≤ x1 ≤ 0和0 ≤ x2 ≤ 3中的最小值。
|
|
- [xmin, fval] = fminsearch(function,x1,x2)
其中xmin和fval是最小值点的位置和值,function是要计算的函数名,x1和x2是要搜索的区间。
例15.7 使用MATLAB求解多维优化问题
问题:用MATLAB的fminsearch函数求解例15.6中的简单函数
的最大值,初始估计值为x=-0.5,y = 0.5。
解:使用fminsearch函数求解:
- >> f=@(x) 2+x(1)-x(2)+2*x(1)^2+2*x(1)*x(2)+x(2)^2;
- >> [x,fval]=fminsearch(f,[-0.5,0.5])
- x =
- -1.0000 1.5000
- fval =
- 0.7500
这个函数与上面使用的fminbnd函数一样,也可以指定优化过程中的附加参数。比如,可以使用optimset函数限制最大迭代次数:
- >> [x,fval]=fminsearch(f,[-0.5,0.5],optimset('MaxIter',2))
结果为:
- Exiting: Maximum number of iterations has been exceeded
- - increase MaxIter option.
- Current function value: 1.225625
- x =
- -0.5000 0.5250
- fval =
- 1.2256
从结果可知,在迭代次数上的严格限制使函数没有达到最大值,而优化求解被迫终止。
| 回书目 上一节 下一节 |





























