public void TestReflection() { Poly cf = new Poly(); NelderMead optim = new NelderMead(cf); DoubleVector[] simplex = new DoubleVector[3]; simplex[0] = new DoubleVector(new double[2]{1,1}); simplex[1] = new DoubleVector(new double[2]{1,-1}); simplex[2] = new DoubleVector(new double[2]{2,0}); optim.Rho = 1.5; optim.InitializeMethod(simplex); optim.IterateMethod(); DoubleVector xr = (1+optim.Rho)*(new DoubleVector(new double[2]{1,0})) - optim.Rho*simplex[2]; Assert.IsTrue(optim.LastStep == NelderMead.Step.Reflection); Assert.AreEqual(optim.Simplex[0][0],xr[0]); Assert.AreEqual(optim.Simplex[0][1],xr[1]); }
public void TestShrink() { Poly cf = new Poly(); NelderMead optim = new NelderMead(cf); DoubleVector[] simplex = new DoubleVector[3]; simplex[0] = new DoubleVector(new double[2]{1,1}); simplex[1] = new DoubleVector(new double[2]{1,-1}); simplex[2] = new DoubleVector(new double[2]{2,0}); optim.Rho = 10; optim.Psi = 1.5; optim.InitializeMethod(simplex); optim.IterateMethod(); Assert.IsTrue(optim.LastStep == NelderMead.Step.Shrink); }