コード例 #1
0
ファイル: RefinementStrategy.py プロジェクト: SGpp/SGpp
    def update(self, grid, v, admissibleSet):
        # prepare data
        gpsi = list(admissibleSet.values())

        # prepare list of grid points
        gs = grid.getStorage()
        gpsj = [None] * gs.getSize()
        for i in range(gs.getSize()):
            gpsj[i] = gs.getPoint(i)

        # compute stiffness matrix for next run
        basis = getBasis(grid)
        A = self._strategy.computeBilinearFormByList(basis, gpsi, gpsj)
        # compute the expectation value term for the new points
        b = self._strategy.computeBilinearFormIdentity(basis, gpsi)

        # estimate missing coefficients
        w = np.ndarray(admissibleSet.getSize())
        for i, gp in enumerate(admissibleSet.values()):
            w[i] = estimateSurplus(grid, gp, v)
            # w[i] = estimateConvergence(grid, gp, v)

        # update the ranking
        values = self.__computeRanking(v, w, A, b)
        self._ranking = {}
        for i, gpi in enumerate(admissibleSet.values()):
            self._ranking[gpi.getHash()] = values[i]
コード例 #2
0
    def update(self, grid, v, admissibleSet):
        # prepare data
        gpsi = admissibleSet.values()

        # prepare list of grid points
        gs = grid.getStorage()
        gpsj = [None] * gs.size()
        for i in xrange(gs.size()):
            gpsj[i] = gs.get(i)

        # compute stiffness matrix for next run
        basis = getBasis(grid)
        A = self._strategy.computeBilinearFormByList(basis, gpsi, gpsj)
        # compute the expectation value term for the new points
        b = self._strategy.computeBilinearFormIdentity(basis, gpsi)

        # estimate missing coefficients
        w = DataVector(admissibleSet.getSize())
        for i, gp in enumerate(admissibleSet.values()):
            w[i] = estimateSurplus(grid, gp, v)
            # w[i] = estimateConvergence(grid, gp, v)

        # update the ranking
        values = self.__computeRanking(v, w, A, b)
        self._ranking = {}
        for i, gpi in enumerate(admissibleSet.values()):
            self._ranking[gpi.hash()] = values[i]
コード例 #3
0
ファイル: RefinementStrategy.py プロジェクト: SGpp/SGpp
    def rank(self, grid, gp, alphas, params, *args, **kws):
        # get grid point associated to ix
        gs = grid.getStorage()
        p = [gs.getCoordinates(gp, j) for j in range(gs.getDimension())]

        # get joint distribution
        ap = params.activeParams()
        U = ap.getIndependentJointDistribution()
        T = ap.getJointTransformation()
        q = T.unitToProbabilistic(p)

        # estimate the surplus
        alpha = estimateSurplus(grid, gp, alphas)

        # get area of basis function
        A = 1.0
        for d in range(gs.getDimension()):
            A *= getIntegral(grid, gp.getLevel(d), gp.getIndex(d))

        return abs(alpha) * U.pdf(q) * A
コード例 #4
0
    def rank(self, grid, gp, alphas, params, *args, **kws):
        # get grid point associated to ix
        gs = grid.getStorage()
        p = [gp.getCoord(j) for j in xrange(gs.dim())]

        # get joint distribution
        ap = params.activeParams()
        U = ap.getIndependentJointDistribution()
        T = ap.getJointTransformation()
        q = T.unitToProbabilistic(p)

        # estimate the surplus
        alpha = estimateSurplus(grid, gp, alphas)

        # get area of basis function
        A = 1.0
        for d in xrange(gs.dim()):
            A *= getIntegral(grid, gp.getLevel(d), gp.getIndex(d))

        return abs(alpha) * U.pdf(q) * A
コード例 #5
0
    def rank(self, grid, gp, alphas, params, *args, **kws):
        gs = grid.getStorage()

        # estimate the convergence of ancestors of gp
        ratio = estimateSurplus(grid, gp, alphas)

        # get grid point associated to ix
        p = [gp.getCoord(j) for j in xrange(gs.dim())]

        # get joint distribution
        ap = params.activeParams()
        U = ap.getIndependentJointDistribution()
        T = ap.getJointTransformation()
        q = T.unitToProbabilistic(p)

        # scale surplus by probability density
        a = abs(ratio) * U.pdf(q)

        # get area of basis function
        A = 1.0
        for d in xrange(gs.dim()):
            A *= getIntegral(grid, gp.getLevel(d), gp.getIndex(d))

        return a * A
コード例 #6
0
    def rank(self, grid, gp, alphas, params, *args, **kws):
        gs = grid.getStorage()

        # estimate the convergence of ancestors of gp
        ratio = estimateSurplus(grid, gp, alphas)

        # get grid point associated to ix
        p = [gp.getCoord(j) for j in xrange(gs.dim())]

        # get joint distribution
        ap = params.activeParams()
        U = ap.getIndependentJointDistribution()
        T = ap.getJointTransformation()
        q = T.unitToProbabilistic(p)

        # scale surplus by probability density
        a = abs(ratio) * U.pdf(q)

        # get area of basis function
        A = 1.0
        for d in xrange(gs.dim()):
            A *= getIntegral(grid, gp.getLevel(d), gp.getIndex(d))

        return a * A
コード例 #7
0
ファイル: RefinementStrategy.py プロジェクト: SGpp/SGpp
 def rank(self, grid, gp, alphas, params, *args, **kws):
     return np.abs(estimateSurplus(grid, gp, alphas))
コード例 #8
0
 def rank(self, grid, gp, alphas, params, *args, **kws):
     return abs(estimateSurplus(grid, gp, alphas))
コード例 #9
0
for i in range(gs.getSize()):
    gs.getCoordinates(gs.getPoint(i), p)
    nodalValues[i] = f(p.array())

v = hierarchize(grid, nodalValues)

ipar = 1
assert ipar < len(v)
gp = gs.getPoint(ipar)
print("Grand father:", gs.getCoordinate(gs.getPoint(0), 0), v[0])
print("Father:", gs.getCoordinate(gs.getPoint(0), 0), v[ipar])

gpl = HashGridPoint(gp)
gpl.getLeftChild(0)
gpr = HashGridPoint(gp)
gpr.getRightChild(0)

assert gsc.isContaining(gpl)
assert gsc.isContaining(gpr)

print(gs.getCoordinate(gpl, 0), \
    estimateSurplus(grid, gpl, v), \
    estimateConvergence(grid, gpl, v), \
    w[gsc.getSequenceNumber(gpl)])

print(gs.getCoordinate(gpr, 0), \
    estimateSurplus(grid, gpr, v), \
    estimateConvergence(grid, gpr, v), \
    w[gsc.getSequenceNumber(gpr)])