// Function that distributes people according to defined peaks static int[] DistributePeople(double totalPeople, double peaks) { double averagePeak = totalPeople / peaks; int peakHeight = (int)Math.Ceiling(averagePeak); // Average people in peak int finalPeak = (int)(peakHeight + (totalPeople - peakHeight * peaks)); // Adjust final peak return(FixedDistribution.GetDistribution(peaks, peakHeight, finalPeak)); }
public void FixedDistribution_Result() { FixedDistribution distr = new FixedDistribution(new double[] { 1, 2, 3, 4, 5 }); Assert.AreEqual(distr.GetResult()[0], 1); Assert.AreEqual(distr.GetResult()[1], 2); Assert.AreEqual(distr.GetResult()[2], 3); Assert.AreEqual(distr.GetResult()[3], 4); Assert.AreEqual(distr.GetResult()[4], 5); }
public void MaxMin() { Distribution distr = new FixedDistribution(1.0, 2.0, 3.0, 4.0, 5.0); var qrtValue = (QrtValue)distr; Assert.AreEqual(5.0, qrtValue.Maximum); Assert.AreEqual(1.0, qrtValue.Minimum); qrtValue = (QrtValue)10; Assert.AreEqual(10.0, qrtValue.Maximum); Assert.AreEqual(10.0, qrtValue.Minimum); }
public void RawVector() { Distribution distr = new FixedDistribution(1.0, 2.0, 3.0, 4.0, 5.0); var qrtValue = (QrtValue)distr; Simulation.NumberOfSamples = 5; Assert.AreEqual(distr.GetResult(), qrtValue.RawVector); qrtValue = (QrtValue)5.0; Assert.AreEqual(Vector <double> .Build.Dense(5, 5.0), qrtValue.RawVector); }
public void Division() { Simulation.NumberOfSamples = 5; var d1 = new FixedDistribution(2, 2, 2, 2, 2); var d2 = new FixedDistribution(3, 3, 3, 3, 3); var d3 = new FixedDistribution(6, 6, 6, 6, 6); var r1 = d3 / d2; Assert.AreEqual(r1.GetResult(), d1.GetResult()); var r2 = d3 / 3; Assert.AreEqual(r2.GetResult(), d1.GetResult()); var r3 = 6 / d2; Assert.AreEqual(r3.GetResult(), d1.GetResult()); }
public void Multiplication() { Simulation.NumberOfSamples = 5; var d1 = new FixedDistribution(2, 2, 2, 2, 2); var d2 = new FixedDistribution(3, 3, 3, 3, 3); var d3 = new FixedDistribution(6, 6, 6, 6, 6); var r1 = d1 * d2; Assert.AreEqual(r1.GetResult(), d3.GetResult()); var r2 = d1 * 3; Assert.AreEqual(r2.GetResult(), d3.GetResult()); var r3 = 3 * d1; Assert.AreEqual(r3.GetResult(), d3.GetResult()); }
public void Subtraction() { Simulation.NumberOfSamples = 5; var d1 = new FixedDistribution(1, 1, 1, 1, 1); var d2 = new FixedDistribution(2, 2, 2, 2, 2); var d3 = new FixedDistribution(3, 3, 3, 3, 3); var r1 = d3 - d2; Assert.AreEqual(r1.GetResult(), d1.GetResult()); var r2 = d3 - 2; Assert.AreEqual(r2.GetResult(), d1.GetResult()); var r3 = 3 - d2; Assert.AreEqual(r3.GetResult(), d1.GetResult()); }
public void Addition() { Simulation.NumberOfSamples = 5; var d1 = new FixedDistribution(1, 1, 1, 1, 1); var d2 = new FixedDistribution(2, 2, 2, 2, 2); var d3 = new FixedDistribution(3, 3, 3, 3, 3); var r1 = d1 + d2; Assert.AreEqual(r1.GetResult(), d3.GetResult()); var r2 = d1 + 2; Assert.AreEqual(r2.GetResult(), d3.GetResult()); var r3 = 2 + d1; Assert.AreEqual(r3.GetResult(), d3.GetResult()); }
public void DistributionOperators() { FixedDistribution fixedDistr = new FixedDistribution(new double[] { 1, 2, 3 }); // Distribution + Distribution var result = fixedDistr + fixedDistr; Assert.AreEqual(result.GetResult()[0], 2); Assert.AreEqual(result.GetResult()[1], 4); Assert.AreEqual(result.GetResult()[2], 6); // Distribution + double result = fixedDistr + 2.0; Assert.AreEqual(result.GetResult()[0], 3); Assert.AreEqual(result.GetResult()[1], 4); Assert.AreEqual(result.GetResult()[2], 5); // double + distribution result = 2.0 + fixedDistr; Assert.AreEqual(result.GetResult()[0], 3); Assert.AreEqual(result.GetResult()[1], 4); Assert.AreEqual(result.GetResult()[2], 5); // Distribution - Distribution result = fixedDistr - fixedDistr; Assert.AreEqual(result.GetResult()[0], 0); Assert.AreEqual(result.GetResult()[1], 0); Assert.AreEqual(result.GetResult()[2], 0); // Distribution - double result = fixedDistr - 2.0; Assert.AreEqual(result.GetResult()[0], -1); Assert.AreEqual(result.GetResult()[1], 0); Assert.AreEqual(result.GetResult()[2], 1); // double - distribution result = 2.0 - fixedDistr; Assert.AreEqual(result.GetResult()[0], 1); Assert.AreEqual(result.GetResult()[1], 0); Assert.AreEqual(result.GetResult()[2], -1); // distribution * distribution result = fixedDistr * fixedDistr; Assert.AreEqual(result.GetResult()[0], 1); Assert.AreEqual(result.GetResult()[1], 4); Assert.AreEqual(result.GetResult()[2], 9); // Distribution * double result = fixedDistr * 2.0; Assert.AreEqual(result.GetResult()[0], 2); Assert.AreEqual(result.GetResult()[1], 4); Assert.AreEqual(result.GetResult()[2], 6); // double * distribution result = 2.0 * fixedDistr; Assert.AreEqual(result.GetResult()[0], 2); Assert.AreEqual(result.GetResult()[1], 4); Assert.AreEqual(result.GetResult()[2], 6); // distribution / distribution result = fixedDistr / fixedDistr; Assert.AreEqual(result.GetResult()[0], 1); Assert.AreEqual(result.GetResult()[1], 1); Assert.AreEqual(result.GetResult()[2], 1); // Distribution / double result = fixedDistr / 2.0; Assert.AreEqual(result.GetResult()[0], 1.0 / 2.0); Assert.AreEqual(result.GetResult()[1], 2.0 / 2.0); Assert.AreEqual(result.GetResult()[2], 3.0 / 2.0); // double / distribution result = 2.0 / fixedDistr; Assert.AreEqual(result.GetResult()[0], 2.0 / 1.0); Assert.AreEqual(result.GetResult()[1], 2.0 / 2.0); Assert.AreEqual(result.GetResult()[2], 2.0 / 3.0); }