public void ParticleSwarmOptimizer_Optimize() { var parameters = new double[][] { new double[] { 0.0, 100.0 } }; var sut = new ParticleSwarmOptimizer(parameters, 100); var results = sut.Optimize(Minimize2); var actual = new OptimizerResult[] { results.First(), results.Last() }; var expected = new OptimizerResult[] { new OptimizerResult(new double[] { 37.635959742891046 }, 109.58839344747747), new OptimizerResult(new double[] { 38.891904333594624 }, 166.38611320480345) }; Assert.AreEqual(expected.First().Error, actual.First().Error, 0.0001); Assert.AreEqual(expected.First().ParameterSet.First(), actual.First().ParameterSet.First(), 0.0001); Assert.AreEqual(expected.Last().Error, actual.Last().Error, 0.0001); Assert.AreEqual(expected.Last().ParameterSet.First(), actual.Last().ParameterSet.First(), 0.0001); }
public void ParticleSwarmOptimizer_Optimize() { var parameters = new ParameterBounds[] { new ParameterBounds(0.0, 100.0, Transform.Linear) }; var sut = new ParticleSwarmOptimizer(parameters, 100); var results = sut.Optimize(Minimize2); var actual = new OptimizerResult[] { results.First(), results.Last() }; var expected = new OptimizerResult[] { new OptimizerResult(new double[] { 37.660092259635064 }, 109.45936368750877), new OptimizerResult(new double[] { 39.038272502859328 }, 181.43166846962754) }; Assert.AreEqual(expected.First().Error, actual.First().Error, 0.0001); Assert.AreEqual(expected.First().ParameterSet.First(), actual.First().ParameterSet.First(), 0.0001); Assert.AreEqual(expected.Last().Error, actual.Last().Error, 0.0001); Assert.AreEqual(expected.Last().ParameterSet.First(), actual.Last().ParameterSet.First(), 0.0001); }
public void ParticleSwarmOptimizer_Optimize() { var parameters = new ParameterBounds[] { new ParameterBounds(0.0, 100.0, Transform.Linear) }; var sut = new ParticleSwarmOptimizer(parameters, 100); var results = sut.Optimize(Minimize2); var actual = new OptimizerResult[] { results.First(), results.Last() }; var expected = new OptimizerResult[] { new OptimizerResult(new double[] { 37.804275358363732 }, 109.68474734728727), new OptimizerResult(new double[] { 35.942821697748165 }, 238.00642904844648) }; Assert.AreEqual(expected.First().Error, actual.First().Error, 0.0001); Assert.AreEqual(expected.First().ParameterSet.First(), actual.First().ParameterSet.First(), 0.0001); Assert.AreEqual(expected.Last().Error, actual.Last().Error, 0.0001); Assert.AreEqual(expected.Last().ParameterSet.First(), actual.Last().ParameterSet.First(), 0.0001); }