当前位置:文档之家› matlab优化工具箱的使用

matlab优化工具箱的使用

matlab优化工具箱的使用
matlab优化工具箱的使用

优化工具箱的使用

MATLAB的优化工具箱提供了各种优化函数,这些优化函数可以通过在命令行输入相应的函数名加以调用;此外为了使用方便,MATLAB还提供了图形界面的优化工具(GUI Optimization tool)。

1 GUI优化工具

1.1 GUI优化工具的启动

有两种启动方法:

(1)在命令行输入optimtool;

(2)在MATLAB主界面单击左下角的“Start”按钮,然后依次选择“Toolboxes→Optimization→Optimization tool”

1.2 GUI优化工具的界面

界面分为三大块:

左边(Problem Setup and Results)为优化问题的描述及计算结果显示;

中间(Options)为优化选项的设置;

右边(Quick Reference)为帮助。为了界面的简洁,可以单击右上角“<<”、“>>”的按钮将帮助隐藏或显示。

1、优化问题的描述及计算结果显示

此板块主要包括选择求解器、目标函数描述、约束条件描述等部分。

选择合适的求解器以及恰当的优化算法,是进行优化问题求解的首要工作。

?Solver:选择优化问题的种类,每类优化问题对应不同的求解函数。

?Algorithm:选择算法,对于不同的求解函数,可用的算法也不同。

Problem框组用于描述优化问题,包括以下内容:

?Objective function: 输入目标函数。

?Derivatives: 选择目标函数微分(或梯度)的计算方式。

?Start point: 初始点。

Constraints框组用于描述约束条件,包括以下内容:

?Linear inequalities: 线性不等式约束,其中A为约束系数矩阵,b代表约束向量。

?Linear equalities: 线性等式约束,其中Aeq为约束系数矩阵,beq代表约束向量。

?Bounds: 自变量上下界约束。

?Nonlinear Constraints function; 非线性约束函数。

?Derivatives: 非线性约束函数的微分(或梯度)的计算方式。

Run solver and view results框组用于显示求解过程和结果。

(对于不同的优化问题类型,此板块可能会不同,这是因为各个求解函数需要的参数个数不一样,如Fminunc 函数就没有Constraints框组。)

2、优化选项(Options)

?Stopping criteria: 停止准则。

?Function value check: 函数值检查。

?User-supplied derivatives: 用户自定义微分(或梯度)。

?Approximated derivatives: 自适应微分(或梯度)。

?Algorithm settings: 算法设置。

?Inner iteration stopping criteria: 内迭代停止准则。

?Plot function: 用户自定义绘图函数。

?Output function: 用户自定义输出函数。

?Display to command window: 输出到命令行窗口。

对于不同的优化问题类型,此板块也会不同,

3、帮助(Quick Reference)

每选择一个函数求解器,帮助部分都有对这个函数的功能说明,同时还会给出相应的各个输入项说明。

1.3 GUI优化工具的使用步骤

(1)选择求解器Solver和优化算法。

(2)选定目标函数。

(3)设定目标函数的相关参数。

(4)设置优化选项。

(5)单击“Start”按钮,运行求解。

(6)查看求解器的状态和求解结果。

(7)将目标函数、选项和结果导入/导出。(在菜单文件中寻找)

1.4 GUI 优化工具的应用实例

1、无约束优化(fminunc 求解器)

fminunc 求解器可用的算法有两种:

Large scale (大规模算法)

Medium scale (中等规模算法)

对于一般问题,采用中等规模算法即可。

例1:用优化工具求()246f x x x =+-的极小值,初始点取x=0。

解:首先在当前MATLAB 的工作目录下建立目标函数文件Fununc1.m 文件:

function y= FunUnc1(x) % function 必须为小写,如果F 为大写则不行

y=x^2+4*x-6; %平方符号输入时用键盘上数字6上的符合,否则错误

然后启动优化工具:

? 在Solver 下拉选框中选择fminunc ;

? Algorithm 下拉选框中选择Medium scale ;

? 目标函数栏输入@FunUnc1; %运算时输入函数不知什么原因老有错误,直接输入目标函数却没有错误 ? 初始点输入0,其余参数默认;

? 单击“Start ”按钮运行。

从求解结果可以看出,函数的极小值为-10,且在x=-2时取到,而且从Current iteration 框可以看出迭代的步数。

对于函数形式比较简单的情况,可以直接输入目标函数,而不用建立目标函数文件,在目标函数栏中直接输入@(x )x^2+4*x-6,也可求出结果。

此题能否用进退法和黄金分割法(或二次插值法)求解吗?

不能,要用进退法或黄金分割法得自己先编程序,然后才能调用这样的函数。

2、无约束优化(fminsearch 求解器)

fminsearch 求解器也可用来求解无约束优化问题,它有时候能求解fminunc 不能解决的问题。

例2:用优化工具求()2

32f x x x =-+的极小值,初始点取x=-7,比较fminunc 和fminsearch 求出的结果。

解:通过数学计算,可以得到本例中的极小点有两个x1=1,x2=2。

启动优化工具:

? 在Solver 下拉选框中选择fminunc ;

? Algorithm 下拉选框中选择Medium scale ;

? 目标函数栏输入@(x)abs(x^2-3*x+2);

? 初始点输入-7,其余参数默认;

? 单击“Start ”按钮运行。

Fminunc 求得的结果为x=1.5,显然数值不对,它是未加绝对值时函数()232f x x x =-+的极小值。 ? 然后在Solver 下拉选框中选择fminsearch ;

? Algorithm 下拉选框中选择Medium scale ;

? 目标函数栏输入@(x)abs(x^2-3*x+2);

? 初始点输入-7,其余参数默认;

? 单击“Start ”按钮运行。

fminsearch 求得的结果为x=2,显然数值是对的。可为什么不能求出数值x=1呢,因为此时的函数值也是最小的。

由此可得结论:对于非光滑优化问题Fminunc 可能求不到正确的结果,而fminsearch 却能很好地胜任这类问题的求解。

2 MATLAB 优化工具箱在一维优化问题中的应用

2.1 应用fminbnd 函数

在MATLAB 中,fminbnd 函数可用来求解一维优化问题,其调用格式为:

(1)x=fminbnd(fun,x1,x2); %求函数fun 在区间(x1,x2)上的极小值对应的自变量值。

(2)x=fminbnd(fun,x1,x2,options); % 按options 结构指定的优化参数求函数fun 在区间(x1,x2)上的极小值对应的自变量值,而options 结构的参数可以通过函数optimset 来设置,其中options 结构中的字段如下:

Display ——设置结果的显示方式:

off ——不显示任何结果;iter ——显示每步迭代后的结果;final ——只显示最后的结果;notify

——只有当求解不收敛的时候才显示结果。

FunValCheck ——检查目标函数值是否可接受:

On ——当目标函数值为复数或NaN 时显示出错信息;

Off ——不显示任何错误信息。

MaxFunEvals ——最大的目标函数检查步数。

MaxIter ——最大的迭代步数。

OutputFcn ——用户自定义的输出函数,它将在每个迭代步调用。

PlotFcns ——用户自定义的绘图函数。

TolX ——自变量的精度。

(3)[x,fval]= fminbnd(...); %此格式中的输出参数fval 返回目标函数的极小值。

(4)[x,fval,exitflag]= fminbnd(...); %此格式中的输出参数exitflag 返回函数fminbnd 的求解状态(成功或失败),说明如下:

exitflag=1——fminbnd 成功求得最优解,且解的精度为TolX ;

exitflag=0——由于目标函数检查步数达到最大或迭代步数达到最大值而推出。

exitflag=-1——用户自定义函数引起的退出。

exitflag=-2——边界条件不协调(x1>x2)。

(5)[x,fval,exitflag,output]= fminbnd(...); %此格式中的输出参数output 返回函数fminbnd 的求解信息(迭代次数、所用算法等),说明如下:

output 结构中的字段:

output.algorithm: 优化算法

output.iterations: 优化迭代步数

output.funcCount: 目标函数检查步数

output.message: 退出信息

例1:用fminbnd 求函数()42

1f x x x x =-+-在区间[-2,1]上的极小值。 解:在MATLAB 命令窗口输入

>>[x,fval,exitflag,output]= fminbnd(‘x^4-x^2+x-1’,-2,1)

所得结果为

x =-0.8846

fval =-2.0548

exitflag =1

output = iterations: 11 %迭代次数为11次

funcCount: 12 %函数计算了12次

algorithm: 'golden section search, parabolic interpolation' % fminbnd用了黄金分割法和抛物线算法求本例函数的极小值

message: [1x112 char]

要查看结果的精度,可以接着在MATLAB命令窗口中输入

>> output.message

可得如下信息

ans =Optimization terminated:

the current x satisfies the termination criteria using OPTIONS.TolX of 1.000000e-004

说明求得结果的精度为1.0e-4,如果想提高精度,可以通过option结构来指定,在MATLAB命令窗口输入

>>opt=optimset(‘TolX’,1.0e-6);

>>format long;

>>[x,fval,exitflag,output]= fminbnd(‘x^4-x^2+x-1’,-2,1,opt)

所得结果为

x = -0.884646164474752

fval = -2.054784062185396

exitflag = 1

output = iterations: 11

funcCount: 12

algorithm: 'golden section search, parabolic interpolation'

message: [1x112 char]

这样求得的结果x就有了1.0e-6的精度。

为了理解fminbnd的求解原理,将每一步的迭代过程打印出来,在MATLAB命令窗口中输入

>> opt=optimset(‘display’,’iter’);

>>[x,fval,exitflag,output]= fminbnd(‘x^4-x^2+x-1’,-2,1,opt)

所得结果为

Func-count x f(x) Procedure

1 -0.85410

2 -2.05144 initial

2 -0.145898 -1.1667

3 golden

3 -1.2918 -1.17585 golden

4 -0.7202

5 -1.9699 parabolic

5 -0.853884 -2.05139 parabolic

6 -0.89088

7 -2.05464 parabolic

7 -1.04402 -1.94595 golden

8 -0.884922 -2.05478 parabolic

9 -0.88455 -2.05478 parabolic

10 -0.884647 -2.05478 parabolic

11 -0.884613 -2.05478 parabolic

12 -0.88468 -2.05478 parabolic

Optimization terminated:

the current x satisfies the termination criteria using OPTIONS.TolX of 1.000000e-004 x = -0.884646700241543

fval = -2.054784062184385

exitflag = 1

output = iterations: 11

funcCount: 12

algorithm: 'golden section search, parabolic interpolation'

message: [1x112 char]

分析迭代过程可发现,fminbnd 首先产生一个迭代的初始点,经过简单的计算可以发现,这个初始点是区间的黄金分割点(-0.854=-2+(1-0.618)*(1+2)),接着再用黄金分割法迭代,直到相连两步迭代得到的f(x)相差不大时,此时用二次插值法迭代一步,如果用二次插值法得到的估计点可以接受的话(和前次黄金分割法得到的f(x)相差不大),则再用二次插值法迭代,如果相连两次二次插值法迭代得到的f(x)相差不大,且自变量的差别很小,则继续直到满足精度要求,否则换用黄金分割法。

例2:用fminbnd 求函数()()2sin x f x e

x x -=+在区间[-10,10]上的极小值。 解:在MATLAB 命令窗口中输入

>>[x,fval,exitflag]= fminbnd(‘exp(-x^2)*(x+sin(x))’,-10,10)

所得结果为

x = -0.6796

fval = -0.8242

exitflag = 1

函数()()2sin x f x e x x -=+在区间[-10,10]上的图形如图所示,

在此区间上函数有两个极值点,一个极大值,一个极小值,函数fminbnd 成功求得极小值点。

例3:用fminbnd 求函数()sin(21)3sin(43)5sin(65)f x x x x =+++++在区间[-4,4]上的极小值。 解:在MATLAB 命令窗口中输入

>>[x,fval]= fminbnd(‘sin(2*x+1)+3*sin(4*x+3)+5*sin(6*x+5)’,-4,4)

所得结果为

x =-1.1082

fval =-8.8940

若在MATLAB 命令窗口中输入

>>[x,fval,exitflag]= fminbnd(‘sin(2*x+1)+3*sin(4*x+3)+5*sin(6*x+5)’,-4,4)

x =-1.1082

fval =-8.8940

exitflag =1

例4:用fminbnd 求函数()222111(2)33(5)42(1)1

f x x x x =----+-+-+在区间[-8,8]上的极小值。 解:在MATLAB 命令窗口中输入

>>[x,fval]= fminbnd(‘-1/((x-2)^2+3)-1/(3*(x-5)^2+4)-1/(2*(x-1)^2+1)’,-8,8)

所得结果为

x =1.0337

fval =-1.2715

例5:用fminbnd 求函数()2

12f x x x x =+++-在区间[-2,2]上的极小值。 解:在MATLAB 命令窗口中输入

>>[x,fval]= fminbnd(‘abs(x+1)+x^2+x-2’,-2,2)

所得结果为

x =-1.0000

fval =-2.0000

2.2 应用fminsearch 函数

fminsearch 函数的主要功能是求多变量的极值问题,当然也就可以求单变量极值问题。

例:用fminsearch 函数求函数()42

1f x x x x =-+-的极小值。 解:在MATLAB 命令窗口中输入

>>[x,fval,exitflag,output]= fminsearch(‘x^4-x^2+x-1’,0)

所得结果为

x =-0.8846

fval =-2.0548

exitflag =1

output =iterations: 24

funcCount: 48

algorithm: 'Nelder-Mead simplex direct search'

message: [1x196 char]

3 MATLAB优化工具箱在无约束优化问题中的应用

3.1 应用fminsearch函数

在MATLAB中,fminsearch函数可用来求解无约束多维极值问题,其调用格式为

(1)x= fminsearch(fun,x0):从起始点x0出发,求出fun的一个局部极小点;

(2)x= fminsearch(fun,x0,options):按options结构指定的优化参数求函数fun的极小点,而options 结构的参数可以通过函数optimset来设置,options结构中的各个字段及其含义如表所示;

(3)[x,fval]= fminsearch(…):此格式中的输出参数fval返回目标函数的极小值。

(4)[x,fval,exitflag]= fminsearch(…):此格式中的输出参数exitflag返回函数fminsearch的求解状

(5)[x,fval,exitflag,output]= fminsearch(…):此格式中的输出参数output 返回函数fminsearch 的求解信息(迭代次数、所用算法等),其字段及其含义如表所示:

例1:用fminsearch 函数求解无约束多维函数()12sin sin f x x x =+的极小值。

解:在MATLAB 命令窗口中输入

>>fx=@(x)sin(x(1))+sin(x(2)); %建立函数

>>[xv,fv]= fminsearch(fx,[0,0])

所得结果为

xv =-1.5708 -1.5708

fv =-2.0000

例2:用fminsearch 函数求解无约束多维函数()()()22121

1

23215f x x x =---++-的极小值。

解:显然,上式的极值点为(2,-1),最小值为-2/15。

在MATLAB 命令窗口中输入

>>fx=@(x)-1/((x(1)-2)^2+3)-1/(2*(x(2)+1)^2-5);

>>[xv,fv]= fminsearch(fx,[0,0])

所得结果为

xv =2.0000 -1.0000

fv =-0.1333

为了看清楚fminsearch 函数的单纯型搜索过程,采用optimset 函数设置options 结构,将display 字段设为iter ,以显示每次迭代的信息。

在MATLAB 命令窗口中输入

>>opt=optimset(‘display ’,’iter ’);

>>[xv,fv]= fminsearch(fx,[0,0],opt)

所得结果为

Iteration Func-count min f(x) Procedure

0 1 0.190476

1 3 0.190456 initial simplex %初始单纯型

2 5 0.190224 expand %扩展

3 7 0.190067 expand

4 9 0.189526 expand

5 11 0.188944 expand

6 13 0.187583 expand

7 15 0.185763 expand

8 17 0.182219 expand

9 19 0.177002 expand

10 21 0.167918 expand

11 23 0.154383 expand

12 25 0.13326 expand

13 27 0.103875 expand

14 29 0.0643404 expand

15 31 0.0157881 expand

16 33 -0.0384754 expand

17 35 -0.0567264 reflect %反射

18 36 -0.0567264 reflect

19 38 -0.0567264 contract inside %压缩

20 40 -0.0594596 contract inside

21 41 -0.0594596 reflect

22 43 -0.0599578 contract inside

23 45 -0.0599653 contract outside

24 47 -0.0601014 contract inside

25 49 -0.0601014 contract inside

26 51 -0.0601903 reflect

27 53 -0.0601903 contract inside

28 55 -0.0603234 expand

29 57 -0.0604675 expand

30 59 -0.0607257 expand

31 61 -0.0612865 expand

32 63 -0.0617259 expand

33 65 -0.0635127 expand

34 66 -0.0635127 reflect

35 68 -0.0673697 expand

36 69 -0.0673697 reflect

37 71 -0.0740469 expand

38 73 -0.0780703 expand

39 75 -0.0928988 expand

40 77 -0.10392 expand

41 79 -0.127078 expand

42 81 -0.130651 reflect

43 82 -0.130651 reflect

44 84 -0.131814 contract inside

45 86 -0.133102 contract inside

46 88 -0.133102 contract inside

47 90 -0.133204 reflect

48 92 -0.133204 contract inside

49 94 -0.13329 contract inside

50 96 -0.133326 contract inside

51 98 -0.133326 contract inside

52 100 -0.133326 contract outside

53 102 -0.133328 contract inside

54 104 -0.133331 contract outside

55 106 -0.133332 contract inside

56 108 -0.133333 contract inside

57 110 -0.133333 contract outside

58 112 -0.133333 contract inside

59 114 -0.133333 contract inside

60 116 -0.133333 contract inside

61 118 -0.133333 contract inside

62 120 -0.133333 contract inside

63 121 -0.133333 reflect

64 123 -0.133333 contract inside

65 125 -0.133333 contract outside

66 127 -0.133333 contract inside

67 129 -0.133333 contract inside

68 131 -0.133333 contract inside

69 133 -0.133333 reflect

70 135 -0.133333 contract inside

Optimization terminated:

the current x satisfies the termination criteria using OPTIONS.TolX of 1.000000e-004 and F(X) satisfies the convergence criteria using OPTIONS.TolFun of 1.000000e-004

xv =2.0000 -1.0000

fv =-0.1333

从迭代过程可看出,经过多次扩展、反射、压缩过程,才求得极小值。为了得到每一步优化得到的x 值,通过建立相应的m 文件可实现。

例3:用fminsearch 函数求解无约束多维函数()1212

11f x x x x x =+++的极小值。 解:显然,上式的最小值为4,极值点为(1,1)。

在MATLAB 命令窗口中输入

>>fx=@(x)x(1)+1/x(1)+x(2)+1/x(2); %建立函数

>>[xv,fv]=fminsearch(fx,[2,3])

所得结果为

xv =1.0000 1.0000

fv =4.0000

fminsearch 用的算法是单纯形搜索法,由于不需要计算梯度,因此fminsearch 函数的运算速度很快,常见的函数都能立即求出极小值。

3.2 应用fminunc 函数

fminunc 函数也能求无约束极值问题。常用的调用格式为:

(1)x=fminunc(fun,x0):表示从起始点x0出发,求出fun 的一个局部极小点。

(2)x=fminunc(fun,x0,options):按options 结构指定的优化参数求函数的极小点,而options 结构的参数通过函数optimset 来设置,options 结构和fminsearch 函数一样。

(3)x=fminunc(problem):所需求解的极值问题及选项通过problem 结构指定,其字段及其含义如表所示:

(4)[x,fval]=fminunc(...):输出参数fval 返回目标函数的极小值;

(5)[x,fval ,exitflag]=fminunc(...):输出参数exitflag 返回函数fminunc 的求解状态(成功或失败);

(6)[x,fval ,exitflag ,output]=fminunc(...):输出参数output 返回函数fminunc 的求解信息(迭代次数,所用算法等);

(7)[x,fval ,exitflag ,output ,grad]=fminunc(...):输出参数grad 返回函数fun 在极小点x 处的梯度。

(8)[x,fval ,exitflag ,output ,grad ,hessian]=fminunc(...):输出参数hessian 返回函数fun 在极小点x 处的海森矩阵。

例1:用fminunc 函数求解无约束多维函数()()()22121

1

23215f x x x =---++-的极小值。

解:在MATLAB 命令窗口中输入

>> fx=@(x)-1/((x(1)-2)^2+3)-1/(2*(x(2)+1)^2-5);

>>pro.objective=fx; %此处用的是problem 结构来求解极值。

>>pro.x0=[0,0];

>>pro.solver=’fminunc ’;

>>pro.options=optimset(‘Display’,’iter’)

>>[xv,fv,exitflag,output,grad,hess]=fminunc(pro)

所得结果为

Warning: Gradient must be provided for trust-region method;

using line-search method instead.

> In fminunc at 265

First-order

Iteration Func-count f(x) Step-size optimality

0 3 0.190476 0.444

1 6 0.0784714 1 0.116

2 9 0.048262

3 1 0.0945

3 12 -0.0532145 1 0.124

4 18 -0.0761872 0.405817 0.162

5 21 -0.09662 1 0.105

6 24 -0.128396 1 0.0394

7 27 -0.132689 1 0.0141

8 30 -0.133331 1 0.000826

9 33 -0.133333 1 5.13e-006

10 36 -0.133333 1 9.31e-009

Optimization terminated: relative infinity-norm of gradient less than options.TolFun.

Computing finite-difference Hessian using user-supplied objective function.

xv =2.0000 -1.0000

fv =-0.1333

exitflag = 1

output = iterations: 10

funcCount: 36

stepsize: 1

firstorderopt: 9.3132e-009

algorithm: 'medium-scale: Quasi-Newton line search'

message: 'Optimization terminated: relative infinity-norm of gradient less than options.TolFun.'

grad = 1.0e-008 *

-0.9313

0.1863

hess = 0.2222 0

0 0.1600

注意一开始出现的Warning ,fminunc 会根据输入自动选择合适的算法,当用户没有提供梯度矩阵的时候,fminunc 采用线性搜索算法,而且从后面的输出结果可以得知fminunc 求解此题用的是拟牛顿法,当用户提供梯度矩阵的时候,fminunc 采用信赖域算法。

和上面用fminsearch 函数的求解相比,求解同样问题fminunc 用的迭代步数少得多。从输出的梯度矩阵近似为0可以得出[2,-1]是函数的驻点,而再根据海森矩阵的元素特点:对角元素都大于0,非对角元素为0,则可知[2,-1]确实是一个极小值点。

4 MATLAB 优化工具箱在线性优化问题中的应用

例1:用linprog 函数求解线性规划问题:

()12

12121212min 4242312..3

,0f X x x x x x x s t x x x x =---+≤??+≤??-≤??≥?

解:在MATLAB 命令窗口中输入

>> f=[-4;-1];

>> A=[-1 2;2 3;1 -1];

>> b=[4;12;3];

>> [x,fval,exitflag,output,lamda]=linprog(f,A,b,[],[],zeros(2,1))

所得结果为

Optimization terminated.

x = 4.2000

1.2000

fval = -18.0000

exitflag = 1

output = iterations: 5

algorithm: 'large-scale: interior point'

cgiterations: 0

message: 'Optimization terminated.'

lamda = ineqlin: [3x1 double]

eqlin: [0x1 double]

upper: [2x1 double]

lower: [2x1 double]

例2:用linprog函数求解线性规划问题:

5 MATLAB优化工具箱在约束优化问题中的应用

Matlab优化工具箱函数简介

Matlab优化工具箱函数简介 一维搜索问题fminbnd 无约束极小值fminunc, fminsearch 约束极小值fmincon 线性规划linprog 二次规划quadprog 1.一维搜索问题 优化工具箱函数fminbnd 对应问题:min f(x) x10表示计算收敛,exitflag=0表示超过了最大的迭代次数,exitflag<0表示计算不收敛,返回值output有3个分量,其中iterations是优化过程中迭代次数,funcCount是代入函数值的次数,algorithm是优化所采用的算法。 例: clear fun='(x^5+x^3+x^2-1)/(exp(x^2)+sin(-x))' ezplot(fun,[-2,2])

2019年matlab优化工具箱的使用

优化工具箱的使用 MATLAB的优化工具箱提供了各种优化函数,这些优化函数可以通过在命令行输入相应的函数名加以调用;此外为了使用方便,MA TLAB还提供了图形界面的优化工具(GUI Optimization tool)。 1 GUI优化工具 GUI优化工具的启动 有两种启动方法: (1)在命令行输入optimtool; (2)在MA TLAB主界面单击左下角的“Start”按钮,然后依次选择“Toolboxes→Optimization→Optimization tool” GUI优化工具的界面 界面分为三大块: 左边(Problem Setup and Results)为优化问题的描述及计算结果显示; 中间(Options)为优化选项的设置; 右边(Quick Reference)为帮助。为了界面的简洁,可以单击右上角“<<”、“>>”的按钮将帮助隐藏或显示。 1、优化问题的描述及计算结果显示 此板块主要包括选择求解器、目标函数描述、约束条件描述等部分。 选择合适的求解器以及恰当的优化算法,是进行优化问题求解的首要工作。 ?Solver:选择优化问题的种类,每类优化问题对应不同的求解函数。 ?Algorithm:选择算法,对于不同的求解函数,可用的算法也不同。 Problem框组用于描述优化问题,包括以下内容: ?Objective function: 输入目标函数。 ?Derivatives: 选择目标函数微分(或梯度)的计算方式。 ?Start point: 初始点。 Constraints框组用于描述约束条件,包括以下内容: ?Linear inequalities: 线性不等式约束,其中A为约束系数矩阵,b代表约束向量。 ?Linear equalities: 线性等式约束,其中Aeq为约束系数矩阵,beq代表约束向量。 ?Bounds: 自变量上下界约束。 ?Nonlinear Constraints function; 非线性约束函数。 ?Derivatives: 非线性约束函数的微分(或梯度)的计算方式。 Run solver and view results框组用于显示求解过程和结果。 (对于不同的优化问题类型,此板块可能会不同,这是因为各个求解函数需要的参数个数不一样,如Fminunc 函数就没有Constraints框组。) 2、优化选项(Options) ?Stopping criteria: 停止准则。

最新matlab优化工具箱介绍

m a t l a b优化工具箱介 绍

matlab优化工具箱介绍 分类: Matlab2007-11-03 20:27 6405人阅读评论(0) 收藏举报在生活和工作中,人们对于同一个问题往往会提出多个解决方案,并通过各方面的论证从中提取最佳方案。最优化方法就是专门研究如何从多个方案中科学合理地提取出最佳方案的科学。由于优化问题无所不在,目前最优化方法的应用和研究已经深入到了生产和科研的各个领域,如土木工程、机械工程、化学工程、运输调度、生产控制、经济规划、经济管理等,并取得了显著的经济效益和社会效益。 用最优化方法解决最优化问题的技术称为最优化技术,它包含两个方面的内容: 1)建立数学模型即用数学语言来描述最优化问题。模型中的数学关系式反映了最优化问题所要达到的目标和各种约束条件。 2)数学求解数学模型建好以后,选择合理的最优化方法进行求解。 最优化方法的发展很快,现在已经包含有多个分支,如线性规划、整数规划、非线性规划、动态规划、多目标规划等。 9.1 概述 利用Matlab的优化工具箱,可以求解线性规划、非线性规划和多目标规划问题。具体而言,包括线性、非线性最小化,最大最小化,二次规划,半无限问题,线性、非线性方程(组)的求解,线性、非线性的最小二乘问题。另外,该工具箱还提供了线性、非线性最小化,方程求解,曲线拟合,二次规划等问

5.大型方法的演示函数

9.1.3 参数设置 利用optimset函数,可以创建和编辑参数结构;利用optimget函数,可以获得options优化参数。 ● optimget函数 功能:获得options优化参数。 语法: val = optimget(options,'param') val = optimget(options,'param',default) 描述: val = optimget(options,'param') 返回优化参数options中指定的参数的 值。只需要用参数开头的字母来定义参数就行了。 val = optimget(options,'param',default) 若options结构参数中没有定义 指定参数,则返回缺省值。注意,这种形式的函数主要用于其它优化 函数。 举例:

MATLAB优化工具箱应用简介

MATLAB优化工具箱 1 工具箱概述 1.1 功能 (1)求解无约束条件非线性极小值; (2)求解约束条件下非线性极小值,包括目标逼近问题、极大-极小值问题和半无限极小值问题; (3)求解二次规划和线性规划问题; (4)非线性最小二乘逼近和曲线拟合; (5)非线性系统的方程求解; (6)约束条件下的线性最小二乘优化; (7)求解复杂结构的大规模优化问题。 1.2 工具箱的新特色 MATLAB R2008b使用的是4.1版本的优化工具箱,较3.x的变化在于: (1)fmincon、fminimax和fgoalattain中引入了并行机制,加快梯度计算速度; (2)函数gatool和pserchtool整合到优化工具箱GUI中; (3)函数fmincon的求解器中新增内点算法; (4)提供了KNITRO优化库的接口; (5)函数lsqcurvefit、lsqnonlin和fsolve的优化选项参数PrecondBandWinth默认值由0变为inf; (6)优化选项参数TolConSQP的默认值改为1e-6; (7)输出结构中引入了参数constrviolation。 2 工具箱函数 常用函数: 输入参数中可以用options,用于所有函数,其中包括有一下参数。 (1)Display:结果显示方式,off不显示,iter显示每次迭代的信息,final为最终结果,notify只有当求解不收敛的时候才显示结果。 (2)MaxFunEvals:允许函数计算的最大次数,取值为正整数。 (3)MaxIter:允许迭代的最大次数,正整数。 (4)TolFun:函数值(计算结果)精度,正整数。 (5)TolX:自变量的精度,正整数。 而且可以用函数optimset创建和修改。 模型输入时需要注意问题: (1)目标函数最小化;

matlab自带优化工具箱遗传算法中文解释

matlab自带优化工具箱遗传算法中文解释 problem setup and results设置与结果 problem fitness function适应度函数 number of variable变量数 constraints约束 linear inequalities线性不等式,A*x<=b形式,其中A是矩阵,b是向量 linear equalities线性等式,A*x=b形式,其中A是矩阵,b是向量 bounds定义域,lower下限,upper上限,列向量形式,每一个位置对应一个变量 nonlinear constraint function非线性约束,用户定义,非线性等式必须写成c=0形式,不等式必须写成c<=0形式 integer variable indices整型变量标记约束,使用该项时Aeq和beq必须为空,所有非线性约束函数必须返回一个空值,种群类型必须是实数编码 run solver and view results求解 use random states from previous run使用前次的状态运行,完全重复前次运行的过程和结果 population population type编码类型 double vector实数编码,采用双精度 bitstring二进制编码对于生成函数和变异函数,只能选用uniform和custom,对于杂交函数,只能使用 scattered singlepoint,twopoint或custom不能使用hybrid function和nonlinear constraint function custom 自定义 population size:种群大小 creation function:生成函数,产生初始种群 constraint dependent:约束相关,无约束时为uniform,有约束时为feasible population uniform:均匀分布 feasible population :自适应种群,生成能够满足约束的种群 initial population:初始种群,不指定则使用creation function生成,可以指定少于种群数量的种群,由creation function完成剩余的 initial scores:初始值,如果不指定,则有计算机计算适应度函数作为初始值,对于整型约束不可用,使用向量表示 initial range:初始范围,使用向量矩阵表示,第一行表示范围的下限,第二行表示上限 fitness scaling:适应度尺度 rank:等级。将适应度排序,然后编号 proportional:按比例 top:按比例选取种群中最高适应度的个体,这些个体有等比例的机会繁衍,其余的个体被淘汰 shift linear:线性转换

Matlab各工具箱功能简介(部分)

Toolbox工具箱 序号工具箱备注 一、数学、统计与优化 1 Symbolic Math Toolbox 符号数学工具箱 Symbolic Math Toolbox?提供用于求解和推演符号运算表达式以及执行可变精度算术的函数。您可以通过分析执行微分、积分、化简、转换以及方程求解。另外,还可以利用符号运算表达式为MATLAB?、Simulink?和Simscape?生成代码。 Symbolic Math Toolbox 包含MuPAD?语言,并已针对符号运算表达式的处理和执行进行优化。该工具箱备有MuPAD 函数库,其中包括普通数学领域的微积分和线性代数,以及专业领域的数论和组合论。此外,还可以使用MuPAD 语言编写自定义的符号函数和符号库。MuPAD 记事本支持使用嵌入式文本、图形和数学排版格式来记录符号运算推导。您可以采用HTML 或PDF 的格式分享带注释的推导。 2 Partial Differential Euqation Toolbox 偏微分方程工具箱 偏微分方程工具箱?提供了用于在2D,3D求解偏微分方程(PDE)以及一次使用有限元分析。它可以让你指定和网格二维和三维几何形状和制定边界条件和公式。你能解决静态,时域,频域和特征值问题在几何领域。功能进行后处理和绘图效果使您能够直观地探索解决方案。 你可以用偏微分方程工具箱,以解决从标准问题,如扩散,传热学,结构力学,静电,静磁学,和AC电源电磁学,以及自定义,偏微分方程的耦合系统偏微分方程。 3 Statistics Toolbox 统计学工具箱

4 Curve Fitting Toolbox 曲线拟合工具箱 Curve Fitting Toolbox?提供了用于拟合曲线和曲面数据的应用程序和函数。使用该工具箱可以执行探索性数据分析,预处理和后处理数据,比较候选模型,删除偏值。您可以使用随带的线性和非线性模型库进行回归分析,也可以指定您自行定义的方程式。该库提供了优化的解算参数和起始条件,以提高拟合质量。该工具箱还提供非参数建模方法,比如样条、插值和平滑。 在创建一个拟合之后,您可以运用多种后处理方法进行绘图、插值和外推,估计置信区间,计算积分和导数。 5 Optimization Toolbox 优化工具箱 Optimization Toolbox?提供了寻找最小化或最大化目标并同时满足限制条件的函数。工具箱中包括了线性规划、混合整型线性规划、二次规划、非线性优化、非线性最小二乘的求解器。您可以使用这些求解器寻找连续与离散优化问题的解决方案、执行折衷分析、以及将优化的方法结合到其算法和应用程序中。 6 Global Optimization Toolbox 全局优化工具箱 Global Optimization Toolbox 所提供的方法可为包含多个极大值或极小值的问题搜索全局解。它包含全局搜索、多初始点、模式搜索、遗传算法和模拟退火求解器。对于目标

MATLAB_优化工具箱介绍

MATLAB优化工具箱介绍 在生活和工作中,人们对于同一个问题往往会提出多个解决方案,并通过各方面的论证从中提取最佳方案。最优化方法就是专门研究如何从多个方案中科学合理地提取出最佳方案的科学。由于优化问题无所不在,目前最优化方法的应用和研究已经深入到了生产和科研的各个领域,如土木工程、机械工程、化学工程、运输调度、生产控制、经济规划、经济管理等,并取得了显著的经济效益和社会效益。 用最优化方法解决最优化问题的技术称为最优化技术,它包含两个方面的内容: 1) 建立数学模型即用数学语言来描述最优化问题。模型中的数学关系式反 映了最优化问题所要达到的目标和各种约束条件。 2) 数学求解数学模型建好以后,选择合理的最优化方法进行求解。 最优化方法的发展很快,现在已经包含有多个分支,如线性规划、整数规划、非线性规划、动态规划、多目标规划等。 9.1 概述 利用Matlab 的优化工具箱,可以求解线性规划、非线性规划和多目标规划问题。具体而言,包括线性、非线性最小化,最大最小化,二次规划,半无限问题,线性、非线性方程(组)的求解,线性、非线性的最小二乘问题。另外,该工具箱还提供了线性、非线性最小化,方程求解,曲线拟合,二次规划等问题中大型课题的求解方法,为优

化方法在工程中的实际应用提供了更方便快捷的途径。 9.1.1优化工具箱中的函数 优化工具箱中的函数包括下面几类: 1 .最小化函数 表9-1最小化函数表 .方程求解函数 表方程求解函数表

3.最小二乘(曲线拟合)函数 表9-3最小二乘函数表 4.实用函数 表9-4实用函数表

5 .大型方法的演示函数 表9-5大型方法的演示函数表 6.中型方法的演示函数 表9-6中型方法的演示函数表 9.1.3参数设置

(整理)Matlab优化工具箱基本用法.

Matlab 优化工具箱 x = bintprog(f, A, b, Aeq, Beq, x0, options) 0-1规划

用MATLAB 优化工具箱解线性规划 命令:x=linprog (c ,A ,b ) 2、模型: beq AeqX b AX ..min =≤=t s cX z 命令:x=linprog (c ,A ,b ,Aeq,beq ) 注意:若没有不等式:b AX ≤存在,则令A=[ ],b=[ ]. 若没有等式约束, 则令Aeq=[ ], beq=[ ]. 3、模型: VUB X VLB beq AeqX b AX ..min ≤≤=≤=t s cX z 命令:[1] x=linprog (c ,A ,b ,Aeq,beq, VLB ,VUB ) [2] x=linprog (c ,A ,b ,Aeq,beq, VLB ,VUB, X0) 注意:[1] 若没有等式约束, 则令Aeq=[ ], beq=[ ]. [2]其中X0表示初始点 4、命令:[x,fval]=linprog(…) 返回最优解x及x处的目标函数值fval. 例1 max 6543216.064.072.032.028.04.0x x x x x x z +++++= 85003.003.003.001.001.001.0. .654321≤+++++x x x x x x t s 70005.002.041≤+x x 10005.002.052≤+x x 90008.003.063≤+x x 6,2,10 =≥j x j 解 编写M 文件小xxgh1.m 如下: c=[-0.4 -0.28 -0.32 -0.72 -0.64 -0.6]; A=[0.01 0.01 0.01 0.03 0.03 0.03;0.02 0 0 0.05 0 0;0 0.02 0 0 0.05 0;0 0 0.03 0 0 0.08]; b=[850;700;100;900]; Aeq=[]; beq=[]; vlb=[0;0;0;0;0;0]; vub=[]; [x,fval]=linprog(c,A,b,Aeq,beq,vlb,vub) min z=cX b AX t s ≤..1、模型:

用MATLAB优化工具箱解线性规划

用MATLAB 优化工具箱解线性规划 命令:x=linprog (c ,A ,b ) 2、模型: beq AeqX b AX ..min =≤=t s cX z 命令:x=linprog (c ,A ,b ,Aeq,beq ) 注意:若没有不等式:b AX ≤存在,则令A=[ ],b=[ ]. 若没有等式约束, 则令Aeq=[ ], beq=[ ]. 3、模型: VUB X VLB beq AeqX b AX ..min ≤≤=≤=t s cX z 命令:[1] x=linprog (c ,A ,b ,Aeq,beq, VLB ,VUB ) [2] x=linprog (c ,A ,b ,Aeq,beq, VLB ,VUB, X0) 注意:[1] 若没有等式约束, 则令Aeq=[ ], beq=[ ]. [2]其中X0表示初始点 4、命令:[x,fval]=linprog(…) 返回最优解x及x处的目标函数值fval. 例1 max 6543216.064.072.032.028.04.0x x x x x x z +++++= 85003.003.003.001.001.001.0..654321≤+++++x x x x x x t s 70005.002.041≤+x x 10005.002.052≤+x x 90008.003.063≤+x x 6,2,10Λ=≥j x j 解 编写M 文件小xxgh1.m 如下: c=[-0.4 -0.28 -0.32 -0.72 -0.64 -0.6]; A=[0.01 0.01 0.01 0.03 0.03 0.03;0.02 0 0 0.05 0 0;0 0.02 0 0 0.05 0;0 0 0.03 0 0 0.08]; b=[850;700;100;900]; Aeq=[]; beq=[]; vlb=[0;0;0;0;0;0]; vub=[]; [x,fval]=linprog(c,A,b,Aeq,beq,vlb,vub) min z=cX b AX t s ≤..1、模型:

matlab优化工具箱的使用

matlab优化工具箱的使用

优化工具箱的使用 MATLAB的优化工具箱提供了各种优化函数,这些优化函数可以通过在命令行输入相应的函数名加以调用;此外为了使用方便,MATLAB还提供了图形界面的优化工具(GUI Optimization tool)。 1 GUI优化工具 1.1 GUI优化工具的启动 有两种启动方法: (1)在命令行输入optimtool; (2)在MATLAB主界面单击左下角的“Start”按钮,然后依次选择“Toolboxes→Optimization→Optimization tool” 1.2 GUI优化工具的界面 界面分为三大块: 左边(Problem Setup and Results)为优化问题的描述及计算结果显示; 中间(Options)为优化选项的设置; 右边(Quick Reference)为帮助。为了界面的简洁,可以单击右上角“<<”、“>>”的按钮将帮助隐藏或显示。 1、优化问题的描述及计算结果显示

此板块主要包括选择求解器、目标函数描述、约束条件描述等部分。 选择合适的求解器以及恰当的优化算法,是进行优化问题求解的首要工作。 ?Solver:选择优化问题的种类,每类优化问题对应不同 的求解函数。 ?Algorithm:选择算法,对于不同的求解函数,可用的 算法也不同。 Problem框组用于描述优化问题,包括以下内容: ?Objective function: 输入目标函数。 ?Derivatives: 选择目标函数微分(或梯度)的计算方式。 ?Start point: 初始点。 Constraints框组用于描述约束条件,包括以下内容: ?Linear inequalities: 线性不等式约束,其中A为约束系 数矩阵,b代表约束向量。 ?Linear equalities: 线性等式约束,其中Aeq为约束系 数矩阵,beq代表约束向量。 ?Bounds: 自变量上下界约束。 ?Nonlinear Constraints function; 非线性约束函数。 ?Derivatives: 非线性约束函数的微分(或梯度)的计算 方式。 Run solver and view results框组用于显示求解过程和结果。

Matlab优化工具箱基本用法共20页

Matlab 优化工具箱

x = bintprog(f, A, b, Aeq, Beq, x0, options) 0-1规划 用MATLAB 优化工具箱解线性规划 命令:x=linprog (c ,A ,b ) 2、模型: beq AeqX b AX ..min =≤=t s cX z 命令:x=linprog (c ,A ,b ,Aeq,beq ) 注意:若没有不等式:b AX ≤存在,则令A=[ ],b=[ ]. 若没有等式约束, 则令Aeq=[ ], beq=[ ]. 3、模型: VUB X VLB beq AeqX b AX ..min ≤≤=≤=t s cX z 命令:[1] x=linprog (c ,A ,b ,Aeq,beq, VLB ,VUB ) [2] x=linprog (c ,A ,b ,Aeq,beq, VLB ,VUB, X0) 注意:[1] 若没有等式约束, 则令Aeq=[ ], beq=[ ]. [2]其中X0表示初始点 min z=cX b AX t s ≤..1、模型:

4、命令:[x,fval]=linprog(…) 返回最优解x及x处的目标函数值fval. 例1 max 6543216.064.072.032.028.04.0x x x x x x z +++++= 85003.003.003.001.001.001.0..654321≤+++++x x x x x x t s 70005.002.041≤+x x 10005.002.052≤+x x 90008.003.063≤+x x 6,2,10 Λ=≥j x j 解 编写M 文件小xxgh1.m 如下: c=[-0.4 -0.28 -0.32 -0.72 -0.64 -0.6]; A=[0.01 0.01 0.01 0.03 0.03 0.03;0.02 0 0 0.05 0 0;0 0.02 0 0 0.05 0;0 0 0.03 0 0 0.08]; b=[850;700;100;900]; Aeq=[]; beq=[]; vlb=[0;0;0;0;0;0]; vub=[]; [x,fval]=linprog(c,A,b,Aeq,beq,vlb,vub) 例2 321436m in x x x z ++= 120..321=++x x x t s 301≥x 5002≤≤x 203≥x 解: 编写M 文件xxgh2.m 如下: c=[6 3 4]; A=[0 1 0]; b=[50]; Aeq=[1 1 1];

Matlab优化工具箱

Matlab优化工具箱 1工具箱概述 ?计算机学院软件工程系38专业 ?C#.NET,https://www.doczj.com/doc/4e7609423.html,,软件工程,UML ?Matlab,SPSS,BI,SAS ?王华秋 1.1工具箱的功能 优化工具箱主要可以用于解决以下问题: ?(1)求解无约束条件非线性极小值; ?(2)求解约束条件下非线性极小值,包括目标逼近问题、极大-极小值问题以及半无限极小值问题; ?(3)求解二次规划和线性规划问题; ?(4)非线性最小二乘逼近和曲线拟合; ?(5)非线性系统的方程求解; ?(6)约束条件下的线性最小二乘优化; ?(7)求解复杂结构的大规模优化问题。 1.2工具箱的新特色 MATLAB R2008b提供的优化工具箱是4.1版本,4.1版本较之以前的3.x版本,主要增加了以下新的特色。 ?(1)函数fmincon、fminimax和fgoalattain中引入了并行机制,加快了梯度的计算速度; ?(2)函数gatool和psearchtool整合到优化工具箱GUI中; ?(3)函数fmincon的求解器中新增内点算法; ?(4)提供了KNITRO优化库的接口; ?(5)函数lsqcurvefit、lsqnonlin和fsolve的优化选项参数PrecondBandWidth默认值由0变为inf; ?(6)优化选项参数TolConSQP的默认值修改为1e–6; 1

?(7)输出结构中引入了参数constrviolation。 1.3 工具箱的结构 2

3

4

5

模型输入时需要注意的问题 ?(1)目标函数最小化 ?优化函数fminbnd、fminsearch、fminunc、fmincon、fgoalattain、fminmax和lsqnonlin都要求目标函数最小化。 ?(2)约束非正 ?优化工具箱要求非线性不等式约束的形式为Ci(x)≤0,通过对不等式取负可以达到使大于零的约束形式变为小于零的不等式约束形式的目的。 ?(3)避免使用全局变量ce Model.vi”等VI来实现。 2工具箱函数 3GUI优化工具 优化工具(optimtool)是2006年9月在MATLAB7.2版本优化工具箱3.1版本中推出的,它是执行下列常见优化任务的图形用户界面。 ?选择求解器并定义优化问题; ?设置和检查优化选项; ?运行问题并将结果可视化; ?在MATLAB工作空间和优化工具之间导入和导出问题定义、算法选项和结果; ?自动生成M文件代码,以获取工作并自动执行任务; ?带有图形选项,用来显示对求解器执行期间进度的预定义或自定义测量标准。 3.1GUI优化工具的启动 ?启动GUI Optimization tool有以下两种方法。 ?(1)在命令行上输入optimtool; ?(2)在MATLAB主界面单击左下角的“Start”按钮,然后依次选择“Toolboxes→Optimization→Optimization tool(optimtool)。 6

MATLAB优化工具箱

用MATLAB优化工具箱解线性规划 min z=cX 1、模型: 命令:x=linprog(c,A,b) 2、模型: 命令:x=linprog(c,A,b,Aeq,beq) 注意:若没有不等式:存在,则令A=[ ],b=[ ]. 若没有等式约束, 则令Aeq=[ ], beq=[ ]. 3、模型: 命令:[1] x=linprog(c,A,b,Aeq,beq, VLB,VUB) [2] x=linprog(c,A,b,Aeq,beq, VLB,VUB, X0) 注意:[1] 若没有等式约束, 则令Aeq=[ ], beq=[ ]. [2]其中X0表示初始点4、命令:[x,fval]=linprog(…) 返回最优解x及x处的目标函数值fval. 例1 max 解编写M文件小xxgh1.m如下: c=[-0.4 -0.28 -0.32 -0.72 -0.64 -0.6]; A=[0.01 0.01 0.01 0.03 0.03 0.03;0.02 0 0 0.05 0 0;0 0.02 0 0 0.05 0;0 0 0.03 0 0 0.08]; b=[850;700;100;900]; Aeq=[]; beq=[]; vlb=[0;0;0;0;0;0]; vub=[]; [x,fval]=linprog(c,A,b,Aeq,beq,vlb,vub)

例2 解: 编写M文件xxgh2.m如下: c=[6 3 4]; A=[0 1 0]; b=[50]; Aeq=[1 1 1]; beq=[120]; vlb=[30,0,20]; vub=[]; [x,fval]=linprog(c,A,b,Aeq,beq,vlb,vub 例3 (任务分配问题)某车间有甲、乙两台机床,可用于加工三种工件。 假定这两台车床的可用台时数分别为800和900,三种工件的数量分别为400、 600和500,且已知用三种不同车床加工单位数量不同工件所需的台时数和加工 费用如下表。问怎样分配车床的加工任务,才能既满足加工工件的要求,又使 加工费用最低? 解设在甲车床上加工工件1、2、3的数量分别为x1、x2、x3,在乙车床上 加工工件1、2、3的数量分别为x4、x5、x6。可建立以下线性规划模型:

Matlab优化工具箱函数简介

Matlab优化工具箱函数简介 一维搜索问题fminbnd 无约束极小值fminunc, fminsearch 约束极小值fmincon 线性规划linprog 二次规划quadprog 1.一维搜索问题 优化工具箱函数fminbnd 对应问题:minf(x) x10表示计算收敛,exitflag=0表示超过了最大的迭代次数,exitflag<0表示计算不收敛,返回值output有3个分量,其中iterations是优化过程中迭代次数,funcCount是代入函数值的次数,algorithm是优化所采用的算法。 例: clear fun='(x^5+x^3+x^2-1)/(exp(x^2)+sin(-x))' ezplot(fun,[-2,2])

matlab优化工具箱介绍

Matlab优化工具箱简介 1 引言 最优化方法是专门研究如何从多个方案中选择最佳方案的科学。最优化是一门应用广泛的学科,它讨论决策问题的最佳选择的特性,构造寻求最佳解的计算方法[1]。在生活和工作中,优化问题广泛存在。最优化方法的研究和应用已经涉及很多领域,并取得了很好的经济效益和社会效益。 MATLAB是Mathworks公司推出的一套功能强大的过程计算及数值分析软件,是目前世界上应用最广泛的工程计算软件之一[2]。它包含很多工具箱,主要用来扩充matlab的数值计算、符号运算、图形建模仿真等功能,使其能够用于多种学科。如,控制系统工具箱(Control System Toolbox)、信号处理工具箱(Signal Processing Toolbox)、财政金融工具箱(Financial Toolbox)等等.本文主要介绍Matlab的优化工具箱(Optimization Toolbox)的一些内容。 2 优化工具箱简介 (1)Matlab的优化工具箱主要应用包括: ①求解无约束条件非线性极小值; ②求解约束条件下非线性极小值,包括目标逼近问题、极大-极小值问题; ③求解二次规划和线性规划问题; ④非线性最小二乘逼近和曲线拟合; ⑤求解复杂结构的大规模优化问题。 (2 (3)Matlab优化函数的查阅与定位 在matlab的命令窗口键入命令 help optiom 结果显示该工具箱中所有函数清单,部分函数如下图示。

优化工具箱部分函数清单 (4)优化工具箱的结构 优化工具箱的结构如下图所示;

3 优化函数简介 3.1 线性规划问题 线性规划问题是目标函数和约束条件均为线性函数的问题。 线性规划问题的数学模型为: min n R x x f ∈' s.t.:b x A ≤* beq x Aeq =* ub x lb ≤≤ 其中f 、x 、b 、beq 、lb 、ub 为向量,A 、Aeq 为矩阵。 其它形式的线性规划问题都可经过适当变换化为此标准形式。 函数 linprog 调用格式如下: x = linprog(f,A,b) %求min f ' *x sub.to b x A ≤?线性规划的最优解。 x = linprog(f,A,b,Aeq,beq) %等式约束beq x Aeq =?,若没有不等式约束b x A ≤?,则A=[ ],b=[ ]。 x = linprog(f,A,b,Aeq,beq,lb,ub) %指定x 的范围ub x lb ≤≤,若没有等式约束beq x Aeq =? ,则Aeq=[ ],beq=[ ] x = linprog(f,A,b,Aeq,beq,lb,ub,x0) %设置初值x0 x = linprog(f,A,b,Aeq,beq,lb,ub,x0,options) % options 为指定的优化参数 [x,fval] = linprog(…) % 返回目标函数最优值,即fval= f ' *x 。 [x,lambda,exitflag] = linprog(…) % lambda 为解x 的Lagrange 乘子。 [x, lambda,fval,exitflag] = linprog(…) % exitflag 为终止迭代的错误条件。 [x,fval, lambda,exitflag,output] = linprog(…) % output 为关于优化的一些信息 3.2 非线性规划问题 3.2.1 无约束非线性规划问题 多元函数最小值的数学模型为: )x (f min x

相关主题
文本预览
相关文档 最新文档