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

📄 reseau.java

📁 application som kohonen , pour une classification de couleur et voir l application de l algorithme
💻 JAVA
字号:
package neuronespack;

/**
 * Package Neurones
 * Fonctionalit閟 de base des r閟eaux neuronaux.
 * R閟eaux Neauronaux, Vuibert 2006.
 * Jean-Philippe Rennard
 * version 1.0, 17/3/2006
 */

import java.util.*;

/**
 * <p>Title: R閟eau</p>
 * <p>Description: Gestion des fonctions de base d'un r閟eau.</p>
 */
public abstract class Reseau {
  public static int CNX_ENTREE = 0;
  public static int CNX_SORTIE = 1;
  public static int CNX_COUCHE = 2;
  public static int CNX_BIAIS = 3;

  /** Nombre de couches */
  private int nbCouches;
  /** Liste des couches */
  private Vector lesCouches;
  /** Liste des connexions */
  private Vector lesConnexions;
  /** Donn閑s courantes */
  private DonneesEntree donneesCourantes;
  /** Donn閑s de r閟ultats */
  private Resultats lesResultats;
  /** Biais */
  private Biais leBiais;

  /**
   * Constructeur du r閟eau
   * @param nbC int : nombre de couches
   */
  public Reseau(int nbC) {
    nbCouches = nbC;
    lesCouches = new Vector(nbCouches);
    lesConnexions = new Vector();
  }

  /** Ajout d'une couche */
  public void addCouche(Couche c) {
    lesCouches.addElement(c);
  }

  /** Getter d'une couche */
  public Couche getCouche(int c) {
    return (Couche) lesCouches.elementAt(c);
  }

  /**
   * Construction des connexions d'entr閑s
   * @param mc boolean[][] : Matrice des connexions
   * @return Connexions : Objet Connexions cr殚
   */
  public Connexions construitConnexionsEntrees(boolean mc[][]) {
    Connexions connexion = ajouteConnexionsEntrees(donneesCourantes,
                            (GroupeUnites) getCouche(0), mc);
    connexion.setPoidsFixes(1.0D);
    return connexion;
  }

  /**
   * Construction des connexions directes d'entr閑s
   * @return Connexions : Objet Connexions cr殚
   */
  public Connexions construitConnexionsEntreesDirectes() {
    int nbe; // Nombre d'unit閟 閙ettrices
    int nbr; // Nombre d'unit閟 r閏eptrices
    boolean mc[][]; // Matrice de connexion
    nbe = donneesCourantes.getTailleVecteurEntree();
    nbr = getCouche(0).getNbUnites();
    mc = new boolean[nbe][nbr];
    Connexions.construitConnexionsDirectes(nbe, mc);
    return construitConnexionsEntrees(mc);
  }

  /**
   * Ajout des connexions d'entr閑
   * @param dataE GroupeUnites : Ensemble des unit閟 d'origine
   * @param c GroupeUnites : Ensemble des unit閟 de destination
   * @param mc boolean[][] : Matrice des connexions
   * @return Connexions : Objet Connexions cr殚
   */
  public Connexions ajouteConnexionsEntrees(GroupeUnites dataE, GroupeUnites c,
                                      boolean mc[][]) {
    Connexions connexion = new Connexions(Reseau.CNX_ENTREE, dataE, c, mc);
    lesConnexions.addElement(connexion);
    return connexion;
  }

  /**
   * Construction des connexions de sorties
   * @param mc boolean[][] : Matrice des connexions
   * @return Connexions : Objet Connexions cr殚
   */
  public Connexions construitConnexionsSorties(boolean mc[][]) {
    Connexions connexion = ajouteConnexionsSorties(
       (GroupeUnites) getCouche(nbCouches-1), lesResultats, mc);
    connexion.setPoidsFixes(1.0D);
    return connexion;
  }

  /**
   * Construction des connexions directes de sorties
   * @return Connexions : Objet Connexions cr殚
   */
  public Connexions construitConnexionsSortiesDirectes() {
    int nbe; // Nombre d'unit閟 閙ettrices
    int nbr; // Nombre d'unit閟 r閏eptrices
    nbe = getCouche(nbCouches-1).getNbUnites();
    nbr = lesResultats.getNbUnites();
    boolean mc[][] = new boolean[nbe][nbr];
    Connexions.construitConnexionsDirectes(nbe, mc);
    return construitConnexionsSorties(mc);
  }

  /**
   * Ajoute des connexions de sortie
   * @param c GroupeUnites : Ensemble des unit閟 d'origine
   * @param dataR GroupeUnites : Ensemble des unit閟 de destination
   * @param mc boolean[][] : Matrice des connexions
   * @return Connexions : Objet Connexions cr殚
   */
  public Connexions ajouteConnexionsSorties(GroupeUnites c, GroupeUnites dataR,
                                      boolean mc[][]) {
    Connexions connexion = new Connexions(Reseau.CNX_SORTIE, c, dataR, mc);
    lesConnexions.addElement(connexion);
    return connexion;
  }

  /**
   * Construction des connexions entre deux couches
   * @param c1 GroupeUnites : Ensemble des unit閟 d'origine
   * @param c2 GroupeUnites : Ensemble des unit閟 de destination
   * @param mc boolean[][] : Matrice des connexions
   * @return Connexions : Objet Connexions cr殚
   */
  public Connexions construitConnexionsCouches(
    GroupeUnites c1, GroupeUnites c2, boolean mc[][]) {
    Connexions connexion = ajouteConnexionsCouches(c1, c2, mc);
    connexion.setPoidsAleat(0.0D, 1.0D);
    return connexion;
  }

  /**
   * Construction de connexions compl鑤es entre deux couches
   * @param c1 GroupeUnites : Ensemble des unit閟 d'origine
   * @param c2 GroupeUnites : Ensemble des unit閟 de destination
   * @return Connexions : Objet Connexions cr殚
   */
  public Connexions construitConnexionsCouchesComplete(GroupeUnites c1, GroupeUnites c2) {
    int nbe; // Nombre d'unit閟 閙ettrices
    int nbr; // Nombre d'unit閟 r閏eptrices
    boolean mc[][]; // Matrice des connexions
    nbe = c1.getNbUnites();
    nbr = c2.getNbUnites();
    mc = new boolean[nbe][nbr];
    Connexions.construitConnexionsCompletes(nbe, nbr, mc);
    return construitConnexionsCouches(c1, c2, mc);
  }

  /**
   * Connexion de 2 couches
   * @param c1 CoucheBase : Couche d'origine
   * @param c2 CoucheBase : Couche de destination
   * @param mc boolean[][] : Matrice de connexions
   * @return ConnexionsCouches : Connexion cr殚e
   */
  public Connexions ajouteConnexionsCouches(GroupeUnites c1,
                                      GroupeUnites c2, boolean mc[][]) {
    Connexions connexion = new Connexions(Reseau.CNX_COUCHE, c1, c2, mc);
    lesConnexions.addElement(connexion);
    return connexion;
  }

  /**
   * Construction des connexions au biais
   * @param vb double[][] : Valeurs des biais (seuils) par couche et par neurone
   */
  public void construitConnexionsBiais(double vb[][]) {
    leBiais = new Biais(0);
    for(int i=0; i<nbCouches; i++) {
     ajouteConnexionsBiais(getCouche(i), vb[i]);
    }
  }

  /**
   * Ajoute les connexions de biais
   * @param couche CoucheMP : Couche concern閑
   * @param val double[] : Valeurs des biais (seuils) par neurone
   */
  public void ajouteConnexionsBiais(Couche couche, double val[]) {
    boolean mc[][] = new boolean[1][couche.getNbUnites()];
    double biais[][] = new double[1][couche.getNbUnites()];
    for(int i=0; i<couche.getNbUnites(); i++) {
      mc[0][i] = true;
      biais[0][i] = val[i];
    }
    Connexions connexion = new Connexions(Reseau.CNX_BIAIS, leBiais, couche, mc);
    connexion.setMatricePoids(biais);
    lesConnexions.addElement(connexion);
  }

  /**
   * Fixe les poids des connexions selon matrice poids
   * @param c int : Couche d'origine des connexions
   * @param pc int : Type de connexion de la couche
   * @param p double[][] : Matrice des poids
   */
  public void setPoidsConnexions(Connexions cnx, double p[][]) {
    cnx.setMatricePoids(p);
 }

  /** Getter du nombre couches */
  public int getNbCouches() {
    return nbCouches;
  }

  /** Getter des couches */
  public Vector getLesCouches() {
    return lesCouches;
  }

  /** Getter d'une connexion */
  public Connexions getConnexions(int c) {
    return (Connexions) lesConnexions.elementAt(c);
  }

  /** Getter des Connexions */
  public Vector getLesConnexions() {
    return lesConnexions;
  }

  /** Getter du biais */
  public Biais getLeBiais() {
    return leBiais;
  }

  /**
   * Construit l'objet donn閑s courantes
   * @param tve int : Taille du vecteur d'entr閑
   * @param tvs int : Taille du vecteur de sortie d閟ir閑s
   */
  public void setDonneesCourantes(int tve, int tvs) {
    donneesCourantes = new DonneesEntree(tve, tvs);
  }

  /** Getter des donn閑s courantes */
  public DonneesEntree getDonneesCourantes() {
    return donneesCourantes;
  }

  /**
   * Construit l'objet r閟ultat
   * @param tvr int : Taille du vecteur r閟ultat (sortie)
   */
  public void setResultat(int tvr) {
    lesResultats =  new Resultats(tvr);
  }

  /** Getter des r閟ultats */
  public Resultats getResultats() {
    return lesResultats;
  }

  /**
   * Connecte un fichier d'entr閑
   * @param pat Patterns : Objet Patterns concern

⌨️ 快捷键说明

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