MATLAB R2018a 全局优化工具箱学习(二)模式搜索法


MATLAB R2018a全局优化工具箱学习(二)模式搜索法

模式搜索法(又称Hooke-Jeeves的算法)是一种直接搜索的算法,它并不依赖于导数,因此可以使用直接搜索来解决目标函数不可微分或甚至不连续的问题。需要给定一个初始点.MATLAB提供了三种直接搜索算法,称为广义模式搜索(GPS)法,生成集搜索(GSS)法和网格自适应搜索(MADS)法。它们的不同之处在于用于搜索的方向向量不同。

所谓模式搜索,包含了两种移动过程,探测移动和模式移动。探测移动表示沿着相应维度的坐标轴的移动,探测使函数值下降的方向,而模式移动表示两个相邻的探测点连线方向的移动,最终给出最值点。

算法(参考网上):

 

MATLAB R2018a 全局优化工具箱学习(二)模式搜索法_第1张图片

 

[x,fval] = patternsearch(fun,x0)
[x,fval] = patternsearch(fun,x0,A,b)
[x,fval] = patternsearch(fun,x0,A,b,Aeq,beq)从v从v
[x,fval] = patternsearch(fun,x0,A,b,Aeq,beq,lb,ub)
[x,fval] = patternsearch(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)

参数解释:

%x为所求得的最小值点,而不是最小值

%fval为对应最小值点x处的最小值

%fun为目标函数。注:若有趣为m文件,要用通过句柄@进行引用

%x0 x0为给出进行搜索的初始向量

%A线性约束条件:不等式中的系数

%b线性约束条件:不等式右端的值

%Aeq线性约束条件:等式中的系数

%beq线性约束条件:等式右端的值

%lb x的下界

%ub x的上界

%nonlcon非线性约束条件:在MathWorks提供的文档中,是通过函数句柄的方法传入参数,对于约束条件{c <= 0; ceq = 0},构造一个函数,使用[c,ceq]作为返回值,c = *(x); ceq = **(x)的形式,nonlcon = @function;

 

 

你可能感兴趣的:(编程语言学习,数学建模)