
Rosenbrock函数
实现代码:
clc,clear all
format long g
x0=[00]
fun=@func
gfun=@gfunc
[x,val,k]=grad(fun,gfun,x0) %最速下降法(梯度法)
目标函数
function f=func(x)
f=100*(x(1)^2-x(2))^2+(1-x(1))^2
end
梯度函数
function g=gfunc(x)
g=[400*x(1)*(x(1)^2-x(2))-x(2)+2*(x(1)-1)-200*(x(1)^2-x(2))]
end
运行结果
如有问题,可以私信于我。
用遗传算法ga()求Rosenbrock函数的结果,与用上述方法的结果相接近。
怎么全都是注释-------------------------------------------------------------
不太了解这个算法,还有一些单词不认识(interction是不是iteration?),翻译的不好,凑合着看吧。
F为目标函数,是字符串类型
G是搜索方向,表达式是G=(-1/norm)(grad
F)*grad
F,其中norm可能是法线方向,grad是梯度
grad
F
是F的梯度。G也是字符串类型。
P0是初始点
maxl是最大迭代次数
delta
是搜索方向(单一参数最小化的)偏差
epsilon
是y0方向的允许误差
如果show等于1,图形显示迭代过程。
输出值P0是最低点
y0是p0函数值函数F
err是y0的误差边界
p是向量(包含迭代?)
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)