⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 permain.m

📁 这次上传的绝对是好东西
💻 M
字号:
%permain program
eta=0.5;tau=0.5;epsilonk=20;muk=epsilonk;MB=1.0e+10;teminate=1.0e-6;
numer=[1,2,3,4,5,6,7,8,9,11,12,13,14,15,16,18,19,20,21,22,23,24,25,26,28,29,30,31,32,33,34];
%for i=1:30
    %tk(i)=0;tfnum(i)=0;tn(i)=0;tfile(i)='';
fprintf('Problem\t\t\tDim.\t\t\tIter.\t\t\t\tfnum\t\t\tgnum\t\t\tepsilon1\n');
 nprob=5;
for select=1:2
    epsilon1=epsilonk;
    if select==2
        epsilonk=0;epsilon1=epsilonk;muk=epsilonk;
    end
   
[n,m,xk,filename]=initf(nprob);
xk=.1*xk;
bk=eye(n);
k=0;
fk=objfcn(n,m,xk,nprob);
fnum=1;
gk=grdfcn(n,m,xk,nprob);
gnum=1;
delta=norm(gk,2);
while   k<1000
   
    if delta<=teminate
        break;
    else
        dk=-(bk+muk*eye(n))\gk;
        gk1=gk;fk1=fk;gkdk=gk'*dk;
        %pause
        if gk'*dk>=-1.0e-14
           dk=-gk;
       end
       %alphak=wolfe1(n,m,xk,dk,fk,gk,nprob)  
       %pause
        [alphak,fk,gk,wfnum,wgnum]=wolfe2(n,m,xk,dk,fk1,gk1,nprob);
        %pause
        fnum=fnum+wfnum;%;fk=fk2;gk=gk2
        gnum=gnum+wgnum;
        xk1=xk;xk=xk1+alphak*dk;
        fk=objfcn(n,m,xk,nprob);
        gk=grdfcn(n,m,xk,nprob);%gnum=gnum+1
        tem=norm(gk,2);
        if    norm(gk,2)<=teminate
            k=k+1;
            break;
        end
        
        
        %%%%%%%%%%%%%%%%% Bk update
        sk=xk-xk1;bks2=sk'*bk*sk;update=1.0e-8; yk=gk-gk1;
        yksk=yk'*sk;
        %pause
       if yksk>0
           
            bks1=bk*sk*sk'*bk;
            yks=yk*yk'/yksk;bk1=bk;
            bk=bk1-bk1*sk*sk'*bk1/(sk'*bk1*sk)+yk*yk'/(yk'*sk);
           % pause
           end
        %%%%%%%%%%%%%%%% Bk  update
   
       if norm(gk,2)/delta<=eta
            epsilonk=tau*epsilonk;muk=epsilonk;delta=norm(gk,2);
       else
           if norm(bk,'fro')>=max(MB,1/norm(gk,2))
               muk=epsilonk*norm(bk,'fro');
           end
       end
      
   end 
   k=k+1;
end
%tk(i)=k;tfnum(i)=fnum;tn(i)=n;tfile(i)=filename;

%end

%for i=1:31
%file=filename
fprintf('\n\t%s\t\t\t%2d\t\t\t%5d\t\t\t\t%5d\t\t\t%5d\t\t\t%3f\n',filename,n,k,fnum,gnum,epsilon1);pause
%pause;
%end
end

⌨️ 快捷键说明

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