public void ShouldNotAddSetConstraintForEmptyRequest() { var req = new NameValueCollection(); var builder = new ConstraintsBuilder(req); builder.MaybeAddSetConstraint("test"); Assert.AreEqual(0, builder.ToList().Count); }
protected override IEnumerable <IQueryConstraint> DetermineConstraints(System.Collections.Specialized.NameValueCollection requestParams) { var builder = new ConstraintsBuilder(requestParams); builder.MaybeAddDateRangeConstraint("bizDate"); builder.MaybeAddSetConstraint("bookId"); return(builder.ToList()); }
public string Emit(Table table) { string sConstraints = new ConstraintsBuilder(table).BuildConstraints(); TemplatePlatformEmitter te = new TemplatePlatformEmitter("CreateTable", table.Name, new ColumnsBuilder(table, sConstraints.Length > 0).Build(), sConstraints); StringBuilder sTable = new StringBuilder(te.Emit(table)); sTable.Append(new ConstraintsBuilder(table).BuildForeignKeyConstraints()); sTable.Append(new IndexesBuilder(table.Indexes).Build()); sTable.Append(new InsertDefaultValuesEmitter().Emit(table)); return(sTable.ToString()); }
public IEngine Create(ExperimentParameters experimentParameters) { var benchmarksFactory = new BenchmarksFactory(); var pointsGenerator = new PointsGenerator(); var benchmark = benchmarksFactory.Create(experimentParameters); var constraintsBuilder = new ConstraintsBuilder(benchmark.Constraints, experimentParameters); var pointsNormalizer = new StandardScorePointsNormalizer(); var redundantConstraintsRemover = new RedundantConstraintsRemover(pointsGenerator, benchmark.Domains, experimentParameters); var meanAngleCalculator = new MeanAngleCalculator(); var stoper = new Stopwatch(); return(new Core.Engine(experimentParameters, benchmark, constraintsBuilder, pointsNormalizer, redundantConstraintsRemover, meanAngleCalculator, stoper)); }
public void ShouldAddSetConstraintWhenMultipleValuesArePresent() { var req = new NameValueCollection {{"someString", "a"}, {"someString", "b"}, {"someString", "c"}}; var builder = new ConstraintsBuilder(req); builder.MaybeAddSetConstraint("someString"); Assert.AreEqual(1, builder.ToList().Count); Assert.IsInstanceOf(typeof (SetQueryConstraint), builder.ToList()[0]); var c = (SetQueryConstraint) builder.ToList()[0]; var expected = new HashSet<String> { "a", "b", "c" }; Assert.That(expected, Is.EqualTo(c.Values).AsCollection); }
public void ShouldAddPrefixConstraintWhenValueIsPresent() { var req = new NameValueCollection(); req["someString-prefix"] = "abc"; var builder = new ConstraintsBuilder(req); builder.MaybeAddPrefixConstraint("someString"); Assert.AreEqual(1, builder.ToList().Count); Assert.IsInstanceOf(typeof(PrefixQueryConstraint), builder.ToList()[0]); var c = (PrefixQueryConstraint)builder.ToList()[0]; Assert.AreEqual("abc", c.Prefix); }
public void ShouldThrowInvalidConstraintExceptionWhenBadEndDateIsGiven() { var req = new NameValueCollection(); req["bizDate-start"] = "2011-06-01"; req["bizDate-end"] = "abc"; var builder = new ConstraintsBuilder(req); try { builder.MaybeAddDateRangeConstraint("bizDate"); Assert.Fail("Should have thrown InvalidConstraintException"); } catch (InvalidConstraintException ex) { Assert.AreEqual("The constraint value 'abc' is not valid for the field 'bizDate-end'", ex.Message); } }
public void ShouldAddPrefixConstraintWhenValueIsPresent() { var req = new NameValueCollection(); req["someString-prefix"] = "abc"; var builder = new ConstraintsBuilder(req); builder.MaybeAddPrefixConstraint("someString"); Assert.AreEqual(1, builder.ToList().Count); Assert.IsInstanceOf(typeof(PrefixQueryConstraint), builder.ToList()[0]); var c = (PrefixQueryConstraint)builder.ToList()[0]; Assert.AreEqual("abc", c.Prefix); }
public void ShouldAddDateRangeConstraintWhenBothStartAndEndArePresent() { var req = new NameValueCollection(); req["bizDate-start"] = "2011-06-01"; req["bizDate-end"] = "2011-06-30"; var builder = new ConstraintsBuilder(req); builder.MaybeAddDateRangeConstraint("bizDate"); Assert.AreEqual(1, builder.ToList().Count); Assert.IsInstanceOf(typeof (DateRangeQueryConstraint), builder.ToList()[0]); var c = (DateRangeQueryConstraint) builder.ToList()[0]; Assert.AreEqual(new DateTime(2011, 6, 1), c.LowerBound); Assert.AreEqual(new DateTime(2011, 6, 30), c.UpperBound); Assert.AreEqual("bizDate", c.Category); }
public void ShouldAddTimeRangeConstraintWhenBothStartAndEndArePresent() { var req = new NameValueCollection(); req["createTime-start"] = "2011-06-06T12:00:00.000Z"; req["createTime-end"] = "2011-06-06T16:00:00.000Z"; var builder = new ConstraintsBuilder(req); builder.MaybeAddTimeRangeConstraint("createTime"); Assert.AreEqual(1, builder.ToList().Count); Assert.IsInstanceOf(typeof(DateRangeQueryConstraint), builder.ToList()[0]); var c = (DateRangeQueryConstraint)builder.ToList()[0]; Assert.AreEqual(new DateTime(2011, 6, 6, 12, 0, 0, 0, DateTimeKind.Utc), c.LowerBound); Assert.AreEqual(new DateTime(2011, 6, 6, 16, 0, 0, 0, DateTimeKind.Utc), c.UpperBound); }
public void ShouldAddDateRangeConstraintWhenBothStartAndEndArePresent() { var req = new NameValueCollection(); req["bizDate-start"] = "2011-06-01"; req["bizDate-end"] = "2011-06-30"; var builder = new ConstraintsBuilder(req); builder.MaybeAddDateRangeConstraint("bizDate"); Assert.AreEqual(1, builder.ToList().Count); Assert.IsInstanceOf(typeof(DateRangeQueryConstraint), builder.ToList()[0]); var c = (DateRangeQueryConstraint)builder.ToList()[0]; Assert.AreEqual(new DateTime(2011, 6, 1), c.LowerBound); Assert.AreEqual(new DateTime(2011, 6, 30), c.UpperBound); Assert.AreEqual("bizDate", c.Category); }
public void ShouldAddSetConstraintWhenMultipleValuesArePresent() { var req = new NameValueCollection { { "someString", "a" }, { "someString", "b" }, { "someString", "c" } }; var builder = new ConstraintsBuilder(req); builder.MaybeAddSetConstraint("someString"); Assert.AreEqual(1, builder.ToList().Count); Assert.IsInstanceOf(typeof(SetQueryConstraint), builder.ToList()[0]); var c = (SetQueryConstraint)builder.ToList()[0]; var expected = new HashSet <String> { "a", "b", "c" }; Assert.That(expected, Is.EqualTo(c.Values).AsCollection); }
public void ShouldAddSetConstraintWhenSingleValueIsPresent() { var req = new NameValueCollection(); req["someString"] = "a"; var builder = new ConstraintsBuilder(req); builder.MaybeAddSetConstraint("someString"); Assert.AreEqual(1, builder.ToList().Count); Assert.IsInstanceOf(typeof(SetQueryConstraint), builder.ToList()[0]); var c = (SetQueryConstraint)builder.ToList()[0]; var expected = new HashSet <String> { "a" }; Assert.AreEqual(expected, c.Values); }
public void ShouldBeAbleToAddBothSetAndDateConstraints() { var req = new NameValueCollection { { "someString", "a" }, { "bizDate-start", "2011-06-01" }, { "bizDate-end", "2011-06-30" } }; var builder = new ConstraintsBuilder(req); builder.MaybeAddSetConstraint("someString"); builder.MaybeAddDateRangeConstraint("bizDate"); Assert.AreEqual(2, builder.ToList().Count); Assert.IsInstanceOf(typeof(SetQueryConstraint), builder.ToList()[0]); var sc = (SetQueryConstraint)builder.ToList()[0]; Assert.That(new HashSet <String> { "a" }, Is.EqualTo(sc.Values).AsCollection); Assert.IsInstanceOf(typeof(DateRangeQueryConstraint), builder.ToList()[1]); var c = (DateRangeQueryConstraint)builder.ToList()[1]; Assert.That(new DateTime(2011, 6, 1), Is.EqualTo(c.LowerBound.Value)); Assert.That(new DateTime(2011, 6, 30), Is.EqualTo(c.UpperBound.Value)); }
protected override IEnumerable<IQueryConstraint> DetermineConstraints(System.Collections.Specialized.NameValueCollection requestParams) { var builder = new ConstraintsBuilder(requestParams); builder.MaybeAddDateRangeConstraint("bizDate"); builder.MaybeAddSetConstraint("bookId"); return builder.ToList(); }
public void ShouldAddTimeRangeConstraintWhenBothStartAndEndArePresent() { var req = new NameValueCollection(); req["createTime-start"] = "2011-06-06T12:00:00.000Z"; req["createTime-end"] = "2011-06-06T16:00:00.000Z"; var builder = new ConstraintsBuilder(req); builder.MaybeAddTimeRangeConstraint("createTime"); Assert.AreEqual(1, builder.ToList().Count); Assert.IsInstanceOf(typeof (DateRangeQueryConstraint), builder.ToList()[0]); var c = (DateRangeQueryConstraint) builder.ToList()[0]; Assert.AreEqual(new DateTime(2011, 6, 6, 12, 0, 0, 0, DateTimeKind.Utc), c.LowerBound); Assert.AreEqual(new DateTime(2011, 6, 6, 16, 0, 0, 0, DateTimeKind.Utc), c.UpperBound); }
public void ShouldAddSetConstraintWhenSingleValueIsPresent() { var req = new NameValueCollection(); req["someString"] = "a"; var builder = new ConstraintsBuilder(req); builder.MaybeAddSetConstraint("someString"); Assert.AreEqual(1, builder.ToList().Count); Assert.IsInstanceOf(typeof (SetQueryConstraint), builder.ToList()[0]); var c = (SetQueryConstraint) builder.ToList()[0]; var expected = new HashSet<String> {"a"}; Assert.AreEqual(expected, c.Values); }
public void ShouldNotAddTimeRangeConstraintForEmptyRequest() { var req = new NameValueCollection(); var builder = new ConstraintsBuilder(req); builder.MaybeAddTimeRangeConstraint("test"); Assert.AreEqual(0, builder.ToList().Count); }
/// <summary> /// Creates a population and let it evolve until termination condition is reached. /// </summary> /// <param name="terminationCondition">Evolution termination condition evaluated on each new epoch</param> /// <returns>The best solution found across the evolution</returns> public ISolution EvolveUntil(TerminationCondition terminationCondition) { var rnd = RandomProvider.GetThreadRandom(); var shiftMatrix = MatrixBuilder.Build(this.problem); var enumerator = new IncreasingRowsRandomColumns(this.problem.Days, this.problem.Slots); var constraints = ConstraintsBuilder.Build(this.problem); var chromoProcessor = new ChromosomeProcessor(shiftMatrix, enumerator, constraints); var evaluator = new FitnessEvaluator(problem); var fitnessFunction = new Fitness.FitnessFunction(chromoProcessor, evaluator, shiftMatrix); var chromosomeLength = shiftMatrix.GetNumberOfUnforcedSlots(); const double crossoverProbability = 0.90; const double mutationProbability = 0.05; const int elitismPercentage = 5; epochs = 1; epochsWithoutFitnessImprovement = 0; overallBestFitness = -1; log.Debug("Starting population."); var population = new Population(); for (var i = 0; i < populationSize; i++) { var c = new Double[chromosomeLength]; for (var k = 0; k < chromosomeLength; k++) { c[k] = rnd.NextDouble(); } var ch = new Chromosome(c); population.Solutions.Add(ch); } //create the genetic operators var elite = new Elite(elitismPercentage); var crossover = new Crossover(crossoverProbability, true) { CrossoverType = CrossoverType.SinglePoint }; var mutation = new SwapMutate(mutationProbability); //create the GA itself var ga = new GeneticAlgorithm(population, fitnessFunction.Evaluate); //subscribe to the GAs Generation Complete event ga.OnGenerationComplete += Ga_OnGenerationComplete; //add the operators to the ga process pipeline ga.Operators.Add(elite); ga.Operators.Add(crossover); ga.Operators.Add(mutation); //run the GA ga.Run((pop, currentGeneration, currentEvaluation) => { return(terminationCondition(currentGeneration, epochsWithoutFitnessImprovement, population.MaximumFitness, population.AverageFitness)); }); population.GetTop(1)[0].Evaluate(fitnessFunction.Evaluate); return(SolutionBuilder.Build(overallBestFitness, shiftMatrix, epochs * population.PopulationSize, this.problem.Items)); }
public void ShouldBeAbleToAddBothSetAndDateConstraints() { var req = new NameValueCollection { { "someString", "a" }, { "bizDate-start", "2011-06-01" }, { "bizDate-end", "2011-06-30" } }; var builder = new ConstraintsBuilder(req); builder.MaybeAddSetConstraint("someString"); builder.MaybeAddDateRangeConstraint("bizDate"); Assert.AreEqual(2, builder.ToList().Count); Assert.IsInstanceOf(typeof(SetQueryConstraint), builder.ToList()[0]); var sc = (SetQueryConstraint)builder.ToList()[0]; Assert.That(new HashSet<String> { "a" }, Is.EqualTo(sc.Values).AsCollection); Assert.IsInstanceOf(typeof(DateRangeQueryConstraint), builder.ToList()[1]); var c = (DateRangeQueryConstraint)builder.ToList()[1]; Assert.That(new DateTime(2011, 6, 1), Is.EqualTo(c.LowerBound.Value)); Assert.That(new DateTime(2011, 6, 30), Is.EqualTo(c.UpperBound.Value)); }
public void ShouldThrowInvalidConstraintExceptionWhenBadStartDateIsGiven() { var req = new NameValueCollection(); req["bizDate-start"] = "abc"; req["bizDate-end"] = "2011-06-30"; var builder = new ConstraintsBuilder(req); try { builder.MaybeAddDateRangeConstraint("bizDate"); Assert.Fail("Should have thrown InvalidConstraintException"); } catch (InvalidConstraintException ex) { Assert.AreEqual("The constraint value 'abc' is not valid for the field 'bizDate-start'", ex.Message); } }