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

📄 单纯形推移函数程序.m

📁 "试验设计"是很多工程人员尤其是化学工作者经常要面对的话题
💻 M
字号:
function X=simpx(N,A,N1)
ende=0.0001;
%fNFS='反射点';
while(1)
   NZ=zeros(N,1);
   NF=zeros(N+1,N);
   NZF=zeros(N,1);
   NFS=zeros(N,1);
   NK=zeros(N,1);
   NS2=zeros(N,1);
   AA=-2;							%预设最好点指标为0
   for I=1:N+1						%此循环求最好点
       if A(I)>=AA					%寻找最优点M1
          AA=A(I);					%最优指标以AA表示
          M1=I;					%最优顶点序号为M1
       end
   end
   A0=2;							%预设最坏点指标为2
   for I=1:N+1						%此循环求最坏点
       if A(I)<=A0
          A0=A(I);					%最坏点指标为A0
          M3=I;					%最坏点序号为M3
       end
   end
   ACC=2.0;						%预设次坏点指标为2
   for I=1:N+1						%以下求次坏点
       if I~=M3
          if A(I)<=ACC
             ACC=A(I);				%次坏点指标为ACC
             M2=I;					%次坏点序号为M2
          end
       end
   end
   if abs(AA-A0)<=ende
       break;
   end
   NF=N1;
   for I=1:N						%为求形心去最坏点
       NF(M3,I)=0;
   end
   for I=1:N						%对每一个因素求n个点的加和
       for J=1:N+1
           NZ(I)=NF(J,I)+NZ(I);
       end
   end
   for I=1:N						%求平均得形心点坐标NZ
       NZ(I)=NZ(I)/N;					
   end
   for I=1:N						%求最坏点到形心的距离NZF
       NZF(I)=NZ(I)-N1(M3,I);
   end
   for I=1:N						%求反射点NFS
       NFS(I)=NZ(I)+NZF(I);
   end
   %fNFS
   NFS
   AF=input('输入反射点试验指标:');							%输入反射点试验指标或由目标函数计算
   if AF>A(M1)
      for I=1:N						%求延伸点坐标NK
          NK(I)=(NFS(I)+NZF(I));
      end
      NK
      AK=input('输入延伸点试验指标:');						%或由目标函数计算
      if AK>AF
         for I=1:N					%以延伸点代最坏点构造新的单纯形
             N1(M3,I)=NK(I);
         end 
     
         A(M3)=AK;
         newsimp=[N1 A']                         %输出新的单纯形
     else
         for I=1:N					%以反射点代最坏点构造新的单纯形
             N1(M3,I)=NFS(I);
         end
         A(M3)=AF;
         N1                         %输出新的单纯形
      end
   else
      if AF>A(M2)
         for I=1:N					%直接以反射点代最坏点构造新的单纯形
             N1(M3,I)=NFS(I);
         end
         A(M3)=AF;
         newsimp=[N1 A']                         %输出新的单纯形
      else
         if AF>A(M3)
            for I=1:N				%将形心至最坏点以相反数表示
                NZF(I)=NZ(I)-NFS(I);
            end
         end
         for I=1:N					%求正压缩点或负压缩点
             NS2(I)=NZ(I)-0.5*NZF(I);
         end
         NS2
         AT=input('输入正压缩:');						%或负压缩点试验指标
         if AT>A(M3)
            for I=1:N				%以压缩点代最坏点构造新单纯形
                N1(M3,I)=NS2(I);
            end
            A(M3)=AT;
            newsimp=[N1 A']                         %输出新的单纯形
         else
            nn1=zeros(N,1);
            for I=1:N+1				%整体收缩计算
                if I~=M1
                   for J=1:N
                       N1(I,J)=(N1(I,J)+N1(M1,J))/2;
                       nn1(j,1)=N1(i,j);
                   end
                else
                   for J=1:n
                       nn1(j,1)=N1(i,j);
                   end
                end
                nn1
                A(I)=input('输入整体收缩点试验指标:'); 				%输入整体收缩点试验指标	
            end
         end
      end
   end
end

X=N1;

⌨️ 快捷键说明

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