/// <summary> /// Initializes a new instance of the <see cref="PNormProportionalSelection"/> class. /// </summary> /// <param name="direction">The direction.</param> /// <param name="AlwaysKeepBest">The always keep best.</param> /// <param name="Q">The q.</param> public PNormProportionalSelection(optimize direction, Boolean AlwaysKeepBest, double Q = 0.5) : base(new[] { direction }) { rnd = new Random(); alwaysKeepBest = AlwaysKeepBest; this.Q = Q; }
/// <summary> /// Initializes a new instance of the <see cref="StochasticNeighborGenerator"/> class. /// </summary> /// <param name="discreteSpaceDescriptor">The discrete space descriptor.</param> /// <param name="direction">The direction.</param> /// <param name="maxNumNeighbors">The maximum number neighbors.</param> public StochasticNeighborGenerator(DesignSpaceDescription discreteSpaceDescriptor, optimize direction, int maxNumNeighbors = 250) : base(discreteSpaceDescriptor) { r = new Random(); changeVectors = discreteSpaceDescriptor.CreateNeighborChangeVectors(maxNumNeighbors); this.direction = direction; ResetStats(); }
/// <summary> /// Does c1 dominate c2? assuming this is a minimization of all objectives /// </summary> /// <param name = "c1">the subject candidate, c1 (does this dominate...).</param> /// <param name = "c2">the object candidate, c2 (is dominated by).</param> /// <returns></returns> protected static Boolean dominates(candidate c1, candidate c2) { var length = Math.Min(c1.performanceParams.Count, c2.performanceParams.Count); var optvector = new optimize[length]; for (var i = 0; i < length; i++) { optvector[i] = optimize.minimize; } return(dominates(c1, c2, optvector)); }
/// <summary> /// Initializes a new instance of the <see cref="SimulatedAnnealing"/> class. /// </summary> /// <param name="direction">The direction.</param> /// <param name="ConstraintsSolvedWithPenalties">The constraints solved with penalties.</param> public SimulatedAnnealing(optimize direction, Boolean ConstraintsSolvedWithPenalties = true) { RequiresObjectiveFunction = true; this.ConstraintsSolvedWithPenalties = ConstraintsSolvedWithPenalties; InequalitiesConvertedToEqualities = false; RequiresSearchDirectionMethod = false; RequiresLineSearchMethod = false; RequiresAnInitialPoint = true; RequiresConvergenceCriteria = true; RequiresFeasibleStartPoint = false; RequiresDiscreteSpaceDescriptor = true; selector = new MetropolisCriteria(direction); }
/// <summary> /// Initializes a new instance of the <see cref="ImplicitEnueration" /> class. /// </summary> /// <param name="SpaceDescription">The space description.</param> /// <param name="direction">The direction.</param> public ImplicitEnueration(DesignSpaceDescription SpaceDescription, optimize direction) { spaceDescription = SpaceDescription; this.direction = direction; comparer = new optimizeSort(direction); RequiresObjectiveFunction = false; ConstraintsSolvedWithPenalties = false; InequalitiesConvertedToEqualities = false; RequiresSearchDirectionMethod = false; RequiresLineSearchMethod = false; RequiresAnInitialPoint = false; RequiresConvergenceCriteria = false; RequiresFeasibleStartPoint = false; RequiresDiscreteSpaceDescriptor = true; }
public ExhaustiveSearch(DesignSpaceDescription SpaceDescription, optimize direction) { spaceDescription = SpaceDescription; if (!SpaceDescription.AllDiscrete) { throw new Exception("Exhaustive Search can only be used when Space is all discrete"); } comparer = new optimizeSort(direction); RequiresObjectiveFunction = false; ConstraintsSolvedWithPenalties = false; InequalitiesConvertedToEqualities = false; RequiresSearchDirectionMethod = false; RequiresLineSearchMethod = false; RequiresAnInitialPoint = false; RequiresConvergenceCriteria = false; RequiresFeasibleStartPoint = false; RequiresDiscreteSpaceDescriptor = true; }
/* if using with SortedList, set AllowEqualInSorting to false, otherwise * it will crash when equal values are encountered. If using in Linq's * OrderBy then the equal is need (AllowEqualInSorting = true) otherwise * the program will hang. */ /// <summary> /// Initializes a new instance of the <see cref="optimizeSort"/> class. /// </summary> /// <param name="direction">The direction.</param> /// <param name="AllowEqualInSort">The allow equal in sort.</param> public optimizeSort(optimize direction, Boolean AllowEqualInSort = false) { this.direction = (int)direction; this.AllowEqualInSort = AllowEqualInSort; }
/// <summary> /// Initializes a new instance of the <see cref="KeepSingleBest"/> class. /// </summary> /// <param name="direction">The direction.</param> public KeepSingleBest(optimize direction) : base(new [] { direction }) { }
/// <summary> /// Initializes a new instance of the <see cref="RandomPairwiseCompare"/> class. /// </summary> /// <param name="direction">The direction.</param> public RandomPairwiseCompare(optimize direction) : base(new[] { direction }) { rnd = new Random(); }
public Elitism(optimize direction) : base(new[] { direction }) { }
public MetropolisCriteria(optimize direction) : base(new[] { direction }) { rnd = new Random(); }