mg0523076zuoye.m

来自「黄金分割法」· M 代码 · 共 41 行

M
41
字号
%近代电子学作业
% 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

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?