1)区间收缩法 ;
2)函数逼近法;
非精确一维搜索:
1)Armijo准则;
2)Wolfe准则;
主要步骤:
算法流程:
例题:
对称原则:
保持缩减比例原则:
优点: 不要求函数可微,除过第一次外,每次迭代只需计算一个函数值,计算量小,程序简单;
缺点:收敛速度慢;
例题:
详细迭代结果:
#include <iostream.h>double jisuanEF(double AG)
{
return AG*AG*AG*AG-5*AG*AG*AG+4*AG*AG-6*AG+60
}
double search(double min,double max,double e)
{
double a,b,a1,a2,f1,f2,temp
a=min
b=max
a1=b-0.618*(b-a)
f1=jisuanEF(a1)
a2=a+0.618*(b-a)
f2=jisuanEF(a2)
for()
{
if(f1<=f2)
{
b=a2
a2=a1
f2=f1
a1=b-0.618*(b-a)
f1=jisuanEF(a1)
}
else
{
a=a1
a1=a2
f1=f2
a2=a+0.618*(b-a)
f2=jisuanEF(a2)
}
if(b-a<=e)
break
}
temp=(b+a)/2
return temp
}
void main()
{
double d,c,g
d=search(2.0,8.0,0.01)
c=jisuanEF(d)
g=jisuanEF(3.2796)
cout<<"c="
cout<<c<<" "
cout<<"g="
cout<<g
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)