private static ISolver InsertionStartEndingDeleteConfiguration() { GreedyFastHeuristic randomSolver = new GreedyFastHeuristic(); ViewsHeuristic insertionHeuristic = new ViewsHeuristic() { MaxBreakExtensionUnits = 40, MaxLoops = 6, MaxInsertedPerBreak = 5, }; BeginingsHeuristic beginingsHeuristic = new BeginingsHeuristic() { MaxLoops = 6, MaxBreakExtensionUnits = 999, }; EndingsHeuristic endingHeuristic = new EndingsHeuristic() { MaxLoops = 6, MaxBreakExtensionUnits = 999, }; FreeSpaceHeuristic freeSpaceHeuristic = new FreeSpaceHeuristic() { ScoringFunction = new Scorer(), MaxLoops = 6, PropagateRandomSeed = true, Seed = 10, DiagnosticMessages = true, Description = "views_starts_ends_trim_heuristic", }; freeSpaceHeuristic.InitialSolvers.Add(randomSolver); freeSpaceHeuristic.InitialSolvers.Add(insertionHeuristic); freeSpaceHeuristic.InitialSolvers.Add(beginingsHeuristic); freeSpaceHeuristic.InitialSolvers.Add(endingHeuristic); return(freeSpaceHeuristic); }
public void StartsHeuristicSolveDay3ChannelInstance() { var file = Properties.Resources.day_DS_D_DH_inst; var reader = new InstanceJsonSerializer { Reader = new StreamReader(new MemoryStream(file), Encoding.UTF8) }; Instance instance = reader.DeserializeInstance(); GreedyFastHeuristic fastRandomHeur = new GreedyFastHeuristic() { Seed = 10, MaxOverfillUnits = 1, }; BeginingsHeuristic solver = new BeginingsHeuristic() { Seed = 10, ScoringFunction = new Scorer(), Instance = instance, PropagateRandomSeed = true, MaxBreakExtensionUnits = 30, }; solver.InitialSolvers.Add(fastRandomHeur); solver.Solve(); InstanceJsonSerializer serializer = new InstanceJsonSerializer() { Path = @"results\day_DS_D_DH_sol_startsheur.json" }; serializer.SerializeSolution(solver.Solution, SolutionSerializationMode.DebugTaskData); var taskStats = solver.Solution.AdOrdersScores; Assert.IsTrue(taskStats.Values.Sum(d => d.SelfIncompatibilityConflictsProportion) == 0); Assert.IsTrue(taskStats.Values.Sum(d => d.SelfSpacingConflictsProportion) == 0); Assert.IsTrue(taskStats.Values.Sum(d => d.OwnerConflictsProportion) == 0); Assert.IsTrue(taskStats.Values.Sum(d => d.BreakTypeConflictsProportion) == 0); }