/// <summary> /// Este método apenas converte o array de inteiros (resultado final) em um tipo DataTable para ser exibino no formulario /// </summary> private void ArrayRotaToTable(int origem, int[] rota) { this.MelhorRota = new DataTable(); Capital capital = new Capital(); DataTable cidade = capital.Cidade; this.MelhorRota.Columns.Add("Percurso"); this.MelhorRota.Rows.Add(cidade.Rows[origem][0].ToString()); foreach (int item in rota) { this.MelhorRota.Rows.Add(cidade.Rows[item][0].ToString()); } this.MelhorRota.Rows.Add(cidade.Rows[origem][0].ToString()); }
/// <summary> /// Este método calcula o total de distância da rota /// Origem = Cidade de Origem; /// Rota = array de inteiros, cada inteiro representa uma capital /// </summary> public static int Fitness(int origem, int[] rota) { int result = 0; Capital capital = new Capital(); result += capital.Distancia(origem, rota[0]); for (int i = 0; i < rota.Length - 1; i++) { int capital1 = rota[i]; int capital2 = rota[i + 1]; result += capital.Distancia(capital1, capital2); } result += capital.Distancia(rota[rota.Length - 1], origem); return(result); }