ошибка в коде C#, winforms,
вот часть кода, прога винформы, C# ошибка в на строке, где current_generation_distances[h] Ошибка не в компиляторе, а при запуске алгоритма. Пишет, что индекс находился вне границ массива
number_of_genes = Project.number_of_points - 1;
public static int number_of_steps= 5, number_of_population = 4;
static int the_same_distance, i, j, for_switching_gene, number_of_chromosome, a1, a2, split,number_of_parent1,number_of_parent2, inversion_first_position, inversion_second_position, number_of_genes;
static Random for_randomizer=new Random();
static int[,] chromosome;
static double[,] distances_between_points;
static double[] current_generation_distances;
static double the_best_distance;
static List<int> for_random_generating = new List<int>();
static List<int> for_generating_new_ones_and_swap = new List<int>();
chromosome = new int[number_of_population * 2, number_of_genes];
distances_between_points = new double[number_of_genes+1, number_of_genes+1];
current_generation_distances = new double[number_of_population*2];
for (i = 0; i < number_of_genes+1; i++)
for (j = i+1; j < number_of_genes+1; j++)
{ distances_between_points[i, j] = Math.Sqrt((Project.Points[i].X - Project.Points[j].X) ^ 2 + (Project.Points[i].Y - Project.Points[j].Y) ^ 2);
distances_between_points[j, i] = distances_between_points[i, j];
}
int h, o;
for (number_of_chromosome=number_of_population; number_of_chromosome < number_of_population * 2; number_of_chromosome++)
do
{
inversion_first_position = for_randomizer.Next(0, number_of_genes - 1);
inversion_second_position = for_randomizer.Next(inversion_first_position, number_of_genes);
a1 = inversion_first_position; a2 = inversion_second_position;
while (a1 < inversion_second_position && a2 > inversion_first_position)
{
for_switching_gene = chromosome[number_of_chromosome, a1];
chromosome[number_of_chromosome, a1] = chromosome[number_of_chromosome, a2];
chromosome[number_of_chromosome, a2] = for_switching_gene;
a1++; a2--;
}
}
while (checking_chromosome(number_of_chromosome));
for (h = number_of_population; h < number_of_population * 2; h++)
current_generation_distances[h] = distances_between_points[0, chromosome[h, 0] - 1]+distances_between_points[chromosome[h,number_of_genes-1]-1,0];
for (h= number_of_population; h < number_of_population*2; h++)
for (o = 0; o < number_of_genes-1; o++)
current_generation_distances[h] += distances_between_points[chromosome[h, o] - 1, chromosome[h, o + 1] - 1];