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

📄 sgnt_hwp.m

📁 用matlab编写的基于自生成神经网络(self-generated neural network)的预测方法(包含数据集)
💻 M
字号:
function node= sgnt_hwp(node,m);
 % HWP Purning  HWP(Horizontally Well Placed) d(n,np)<=d(n,ns)
[nr,nc]= size(node); 
 for i=2:1:nr
    if node(i,m+2)>0  & node(i,m+4)>0
       j=1;
       x(j)= node(i,m+4);
       temp= x(j);
       while ( temp> 0)
          temp= node(x(j),m+4);
          if temp > 0
             j=j+1;
             x(j)= temp;
          end 
       end
        
       for k=1:1:m 
          w(k)= node(i,k);
          wp(k)= node(node(i,m+2),k);
       end
       
       dp= sum((w-wp).^2);
       
       d_min= inf;
       hh= 0;
       for j=1:1:length(x)
           for k=1:1:m    ws(k)= node(x(j),k);      end
           ds= sum((w-ws).^2);
           if ds < d_min 
              d_min= ds;
              hh= x(j);
           end
       end
       if dp > d_min
           % update ns 
           if node(hh,m+3)==0  %hh is a leaf
               dead = 0;
               for jj=2:1:nr
                   if node(jj,m+2)== 0  
                       dead= jj; 
                       break;  
                   end
               end  
               
               if dead== 0
                   node(nr+1,:)= node(hh,:);
                   node(nr+1,m+2)= hh;
                   node(nr+1,m+3)= 0;
                   node(nr+1,m+4)= 0;
                   node(hh,m+3)= nr+1;
                   nr= nr+1;
               else
                   node(dead,:)= node(hh,:);
                   node(dead,m+2)= hh;
                   node(dead,m+3)= 0;
                   node(dead,m+4)= 0;
                   node(hh,m+3)= dead;
               end
           end
           
           for k=1:1:m
               node(hh,k)= (node(hh,k)*node(hh,m+1)+node(i,k)*node(i,m+1))...
                   /(node(hh,m+1)+ node(i,m+1));
           end
           node(hh,m+1)= node(hh,m+1)+ node(i,m+1);
           % connect(n,ns)
           if node(node(i,m+2),m+3)== i   
               node(node(i,m+2),m+3)= node(i,m+4);
               node(i,m+4)= 0; 
           elseif node(i,m+4) == 0 
               node(x(length(x)),m+4)= 0;
               node(i,m+4)= 0; 
           elseif ~(node(node(i,m+2),m+3)== i) &  node(i,m+4) > 0 
               sibling= node(node(hh,m+2),m+3);
               while ( node(sibling,m+4)>0 )
                   if node(sibling,m+4)== i  node(sibling,m+4)= node(i,m+4); end
                   sibling= node(sibling,m+4);
               end
               node(i,m+4)= 0;
           end
           node(i,m+2)= hh; 
           pointer= node(hh,m+3);
           sibling= pointer;
           while ( node(pointer,m+4) > 0 )
               sibling= pointer;
               pointer= node(pointer,m+4);
           end
           node(sibling,m+4)= i;
       end 
   end
   clear x
end

⌨️ 快捷键说明

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