Hooke_Jeeves_Method
简述
H-J法求解无约束最优化问题
Hooke_Jeeves_Method (X0:Array; D0:Array; DMin :Array;R:Real; CallBack:String):Array
名称 | 类型 | 说明 |
---|
X0 | Array | 一维数字数组类型 |
D0 | Array | 一维数字数组类型 |
DMin | Array | 一维数字数组类型 |
R | Real | 实数类型 |
CallBack | String | 字符串类型,计算目标值的回调 |
返回 | Array | 数组 |
(1)N=数组X0的长度,X0的值赋值给X,X的值赋值给Y,将D0赋值给Dt,采用字符串的方式调用TZZHCallBack函数得到函数初始值F0,并赋值给Fy;
(2)把Y的值赋值给X,Fy赋值给Fs;
(3)从nI=0到N-1进行循环,将X和Dt对应位置数据相加得到新的数组X,调用TZZHCallBack函数得到函数值Fx;若Fx<Fs或|Fx-Fs|<0.00001*|Fs|,Xs=X,Fs = Fx;若不满足条件,将X对应位置的数据和Dt对应位置的数据的2倍相减得到新的数组X,调用TZZHCallBack函数得到函数值Fx,若Fx<Fs或|Fx-Fs|<0.00001*|Fs|,Xs=X,Fs = Fx,否则,将X和Dt对应位置数据相加得到新的数组X;
(4)若第(3)步最终得到的Fs <Fy,从nI=0到N-1进行循环,将Xs对应位置的数据的2倍减X0对应位置的数据得到新的数组Y,调用TZZHCallBack函数得到函数值Fy,将Xs赋值给X0,如果Fy<Fs,将Xs赋值给Y,Fs赋值给Fy;
(5)当第(4)中的开始条件Fs <Fy不满足时,从nI=0到N-1进行循环,将Dt对应位置的数据乘0.5得到新的数组Dt,DtSum的初始值为0,若Dt对应位置的数据小于DMin对应位置的数据,DtSum加1;
(6)以上(2)-(5)直到DtSum=N为止,返回Y;