protected override int[] InitialSolution() { int[] solution; if (generatedSolutions == 0) { solution = TSPUtils.GreedySolution(Instance); } else { solution = TSPUtils.RandomSolution(Instance); } generatedSolutions++; return(solution); }
public MaxMinAntSystem2OptFirst4TSP(TSPInstance instance, int numberAnts, double rho, double alpha, double beta, int maxReinit, int candidateLength, double candidateWeight) : base(instance.NumberCities, TSPUtils.Fitness(instance, TSPUtils.RandomSolution(instance)), numberAnts, rho, alpha, beta, maxReinit) { Instance = instance; this.candidateWeight = candidateWeight; // Build the candidate list. this.candidateLists = new List <Tuple <double, int> > [Instance.NumberCities]; for (int i = 0; i < Instance.NumberCities; i++) { this.candidateLists[i] = new List <Tuple <double, int> >(); for (int j = 0; j < Instance.NumberCities; j++) { if (i != j) { this.candidateLists[i].Add(new Tuple <double, int>(Instance.Costs[i, j], j)); } } this.candidateLists[i].Sort(); this.candidateLists[i].RemoveRange(candidateLength, this.candidateLists[i].Count - candidateLength); } }