/// <summary> /// Método responsável para atualizar os pesos do dado neurônio /// </summary> /// <param name="neuronio"></param> /// <param name="node"></param> /// <returns></returns> public static Neuronio AtualizarPesos(Neuronio neuronio, Node node) { for (int i = 0; i < neuronio.pesos.Count(); i++) { neuronio.pesos[i] = neuronio.pesos[i] + (alfa * (node.valores[i] - neuronio.pesos[i])); } return(neuronio); }
/// <summary> /// Método responsável por medir a distância euclidiana /// </summary> /// <param name="node"></param> /// <param name="neuronio"></param> /// <returns></returns> public static double DistanciaEuclidiana(Node node, Neuronio neuronio) { double valor = 0; for (int i = 0; i < node.valores.Count(); i++) { valor += Math.Pow((node.valores[i] - neuronio.pesos[i]), 2); } return(Math.Sqrt(valor)); }
/// <summary> /// Método responsável para encontrar os vizinhos do Neurônio /// </summary> /// <param name="neuronio"></param> /// <returns></returns> public static List <Node> EncontrarVizinhos(Neuronio neuronio) { List <Node> Vizinhos = new List <Node>(); for (int i = 0; i < Nodes.Count; i++) { var temp = DistanciaEuclidiana(Nodes[i], neuronio); if (temp < Raio && temp != 0) { Vizinhos.Add(Nodes[i]); } } return(Vizinhos); }
/// <summary> /// Método responsável por preencher a lista de neurônios /// </summary> /// <returns></returns> private static List <Neuronio> PreencherNeuronios() { List <Neuronio> neuronios = new List <Neuronio>(); Random rnd = new Random(1); for (int i = 0; i < k; i++) { var neuronio = new Neuronio(); neuronio.cod = i + 1; neuronio.pesos = new double[Nodes[i].valores.Count()]; neuronio.vizinhos = new List <Node>(); for (int j = 0; j < neuronio.pesos.Length; j++) { neuronio.pesos[j] = rnd.NextDouble(); } neuronios.Add(neuronio); } return(neuronios); }