private static ISearchStrategy LS1(TerminateStrategy ts) => new LS(
     initalise: new RandomInitalise(),
     neighbourhood: new TwoOpt(),
     step: new LowestCost(),
     terminate: ts,
     name: "Local Search - Random initialisations"
     );
 private static ISearchStrategy RND(TerminateStrategy ts) => new LS(
     initalise: new RandomInitalise(),
     neighbourhood: new NonNeighbourhood(),
     step: new LowestCost(),
     terminate: ts,
     name: "Random Search"
     );
 public LocalSearch(IInitalise initalise, INeighbourhood neighbourhood, IStepFunction step, TerminateStrategy terminate, string name = "Local Search")
 {
     this.initalisationStrategy = initalise;
     this.neighbourhood         = neighbourhood;
     this.step = step;
     this.terminateStrategy = terminate;
     this.name = name;
 }
 /// <summary>
 /// Generates a list of available searches with a given <see cref="TerminateStrategy"/>
 /// </summary>
 /// <param name="ts">The <see cref="TerminateStrategy"/> that is to be used (may be ignored by some searches eg Greedy Search)</param>
 /// <returns>A list of searches</returns>
 internal static List <ISearchStrategy> GenerateSearches(TerminateStrategy ts)
 {
     return(new List <ISearchStrategy>()
     {
         new ExhaustiveSearch(),
         RND(ts),
         LS1(ts),
         LS2(),
         GN1(ts, 100, 20),
     });
 }
 private static ISearchStrategy GN1(TerminateStrategy ts, uint populationSize, uint k, float elitism = 0.2f, float mutationRate = 0.04f) => new Evolution(
     initalise: new RandomInitalise(),
     selectionStrategy: new TournamentSelection(k),
     crossoverStratergy: new OrderedCrossover(),
     swap: new TwoOpt(),
     stepFunction: new LowestCost(),
     terminate: ts,
     populationSize: populationSize,
     eliteism: elitism,
     mutationRate: mutationRate,
     name: "Evolutionary Search - Tournament"
     );
Beispiel #6
0
 public Evolution(IInitalise initalise, ISelectionStrategy selectionStrategy, ICrossover crossoverStratergy, ISwap swap, TerminateStrategy terminate, IStepFunction stepFunction, uint populationSize, float eliteism, float mutationRate, string name = "Evolution Search")
 {
     this.InitalisationStrategy = initalise;
     this.selectionStrategy     = selectionStrategy;
     this.crossoverStratergy    = crossoverStratergy;
     this.step = stepFunction;
     this.swap = swap;
     this.terminateStrategy = terminate;
     this.name         = name;
     this.eliteism     = eliteism;
     this.mutationRate = mutationRate;
     population        = new Route[populationSize];
 }