static double[] getNIJ(AdjacencyList g, List <CaminoOptimo> cs) { bool[] visitados = new bool[g.tamanioGrafo()]; char[] letras = new char[] { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I' }; foreach (int i in Enumerable.Range(0, g.tamanioGrafo())) { visitados[i] = false; } //OBTENER ARREGLO CON nij List <int> tmpCosts = new List <int>(); List <double> nij = new List <double>(); for (int i = 0; i < g.tamanioGrafo() - 1; i++) { visitados[i] = true; var vecinos = g[i]; foreach (var j in vecinos) { if (!visitados[j.Item1]) { double x = (double)1 / (double)j.Item2; nij.Add(x); primerosArcos.Add(new Tuple <int, int>(i, j.Item1)); tmpCosts.Add(j.Item2); } } } foreach (var i in primerosArcos) { Console.WriteLine($"{letras[i.Item1]} - {letras[i.Item2]}"); } costosPrimerosArcos = tmpCosts.ToArray(); return(nij.ToArray()); }
public static void Init(AdjacencyList grafo, List <CaminoOptimo> caminos) { double[] nij = getNIJ(grafo, caminos); List <int[]> hormigas = getHormigas(primerosArcos.Count, caminos); int[] costos = getCostos(hormigas, hormigas.Count); //Costos de viajes de estas hormigas List <double[]> deltaArcos = getdtijk(nij.Length, hormigas.Count, hormigas, costos); /* Console.WriteLine("deltas"); * Program.imprimirArrayDouble(deltatij); * Console.WriteLine("feromonas"); * Program.imprimirArrayDouble(feromonas); * Console.WriteLine("probabilidades"); * Program.imprimirArrayDouble(probabilidadArco); */ foreach (var x in caminos) { x.imprimirCamino(); } List <double[]> matrizCaminosNuevos = getNuevaMatriz(nij.Length, hormigas.Count, nij, hormigas); Console.WriteLine("NUEVOS CAMINOS"); foreach (var i in matrizCaminosNuevos) { foreach (var j in i) { Console.Write($"{j}-"); } Console.WriteLine(""); } //generarNuevosCaminos(nij.Length,hormigas.Count,matrizCaminosNuevos); }
static void leerGrafo() { string archivoTxt = Path.Combine(Directory.GetCurrentDirectory(), "adyacenciaCiclado.txt"); string[] lines = File.ReadAllLines(archivoTxt); Console.WriteLine(lines.Length); grafo = new AdjacencyList(int.Parse(lines[0])); foreach (var i in lines) { string[] j = i.Split(','); int x = int.Parse(j[0]); try{ grafo.agregaVertice(int.Parse(j[0]), int.Parse(j[1]), int.Parse(j[2])); }catch (Exception) { //PARA EVITAR LA PRIMERA LINEA QUE ES EL NUMERO DE NODOS continue; } } }