예제 #1
0
    def runTest(self):
        n = 2
        npt = (n + 1) * (n + 2) // 2
        x0 = np.array([1.0, 1.0])
        xl = -1e2 * np.ones((n, ))
        xu = 1e2 * np.ones((n, ))
        model = Model(npt, x0, objfun(x0), xl, xu, 1)
        x1 = x0 + np.array([1.0, 0.0])
        model.change_point(1, x1 - model.xbase, objfun(x1))
        x2 = x0 + np.array([0.1, 0.9])
        model.change_point(2, x2 - model.xbase, objfun(x2))
        x3 = x0 + np.array([-0.1, 0.0])
        model.change_point(3, x3 - model.xbase, objfun(x3))
        x4 = x0 + np.array([-0.1, 2.0])
        model.change_point(4, x4 - model.xbase, objfun(x4))
        x5 = x0 + np.array([-1.1, 1.0])
        model.change_point(5, x5 - model.xbase, objfun(x5))

        xopt = model.xopt()
        for i in range(npt):
            c, g, hess = model.lagrange_polynomial(i)  # based at xopt
            for j in range(npt):
                dx = model.xpt(j) - xopt
                lag_value = c + model_value(g, hess, dx)
                expected_value = 1.0 if i == j else 0.0
                self.assertAlmostEqual(
                    lag_value,
                    expected_value,
                    msg="Lagrange for x%g has bad value at x%g" % (i, j))
예제 #2
0
    def runTest(self):
        n = 2
        npt = n + 1
        x0 = np.array([-1.2, 1.0])
        xl = -1e2 * np.ones((n, ))
        xu = 1e2 * np.ones((n, ))
        model = Model(npt, x0, rosenbrock(x0), xl, xu, 1)
        x1 = np.array([1.0, 0.9])
        model.change_point(1, x1 - model.xbase, rosenbrock(x1))
        x2 = np.array([2.0, 0.9])
        model.change_point(2, x2 - model.xbase, rosenbrock(x2))

        xopt = model.xopt()
        for i in range(npt):
            c, g, hess = model.lagrange_polynomial(i)  # based at xopt
            for j in range(npt):
                dx = model.xpt(j) - xopt
                lag_value = c + model_value(g, hess, dx)
                expected_value = 1.0 if i == j else 0.0
                self.assertAlmostEqual(
                    lag_value,
                    expected_value,
                    msg="Lagrange for x%g has bad value at x%g" % (i, j))