- % mg0523076 潘向昱
- %求min(x1^2+x2^2),约束条件1-x1-x2<=0
- %0.618法
- a=[0,0];
- b=[10,10]; %确定单谷搜索[a,b]
- c_wucha=[1.0e-7,1.0e-7]; %给定最后精度c_wucha
- t1=[0.1,0.1];
- t2=[9.9,9.9];
- ck=50; %给出罚参数
- f1=t1(1,1)^2+t1(1,2)^2+ck*(max(1-t1(1,1)-t1(1,2),0))^2;
- f2=t2(1,1)^2+t2(1,2)^2+ck*(max(1-t2(1,1)-t2(1,2),0))^2; %计算最初的两个探索点
- t1=a+0.382*(b-a);
- t2=a+0.618*(b-a);
- while(1)
- if f1<=f2 %如果f1<f2
- if t2(1,1)-a(1,1)<=c_wucha(1,1)
- break
- else
- b=t2;
- t2=t1;
- t1=a+0.382*(b-a);
- f2=f1;
- f1=t1(1,1)^2+t2(1,2)^2+ck*(max(1-t1(1,1)-t1(1,2),0))^2;
- end
- else
- if b(1,1)-t1(1,1)<=c_wucha(1,1)
- break
- else
- a=t1;
- t1=t2;
- t2=a+0.618*(b-a);
- f1=f2;
- f2=t2(1,1)^2+t2(1,2)^2+ck*(max(1-t2(1,1)-t2(1,2),0))^2;
- end
- end
- ck=ck*2; %调整罚参数
- end
- (t1+t2)/2
- t1
- t2
复制代码 |