DHNN的状态变换(java)----求稳定状态


package cn.juanjuan.jisuanzhineng;

import java.util.Scanner;
import java.lang.String;
import java.lang.Integer;

public class Main {
 static int cal(int n,double w[][],double e[],int v[])
 {
 int i,count=0;
 int k[];
 k=new int[n];
 k=v;
 double m[];
 m=new double[n];
 for(i=0;i
 {
  for(int j=0;j
  {
   m[i]+=(w[i][j]*k[j]);
  }
  m[i]-=e[i];
  
  
  if(m[i]>0)
   m[i]=1;
  else {
   m[i]=0;
  }
 }
 for(i=0;i
 {
  if(m[i]==v[i])
   {
       count++;
   }
 }
 
 if(count==n)
  return 1;
 else
  return 0;
 
}
 static int pow1(int x,int y,int z)
{
    z=x;
 for(int i=0;i
 {
  z*=x;
 }
 return z;
}
 public static void main(String[] args) {
  Scanner cin=new Scanner(System.in);
  System.out.print("请输入节点个数:");
  int n=cin.nextInt();
   double w[][];
  w=new double[n][n];
  System.out.print("请输入w矩阵:");
  for(int i=0;i
   for(int j=0;j
   {
    w[i][j]=cin.nextDouble();
   }
  System.out.print("请输入初始状态:");
  int v[] ;
  v=new int[n];
  for(int i=0;i
  {
   v[i]=cin.nextInt();
  }
  System.out.println("请输入阈值:");
  double e[];
  e=new double[n];
  for(int i=0;i
  {
   e[i]=cin.nextDouble();
  }
  
  int z=0;
  String s;
  char a;
  int m[];
  m=new int[n];
  int flag1=0;
  z=pow1(2, n, z);
  System.out.println(z);
  for(int i=0;i
  {
   flag1=0;
   for(int k=0;k
    m[k]=0;
   s=Integer.toBinaryString(i) ;
   int l=s.length();
   for(int j=0;j
   {
    a=s.charAt(j);
    m[n-(l-j-1)-1]=(int)(a-48); 
   }
   flag1=cal(n, w, e, m);
   if(flag1==1)
   {
    System.out.print("稳定状态: ");
    for(int k=0;k
     System.out.print(m[k]);
    System.out.println();
   }
  }
  
  
 }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

安二柴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值