示例#1
0
    def doLearningIteration(self, set):
        # initialize values
        self.linearSystem = DMSystemMatrix(self.grid, set.getPoints(),
                                           self.specification.getCOperator(),
                                           self.specification.getL())
        size = self.grid.getSize()
        # Reuse data from old alpha vector increasing its dimension
        if self.solver.getReuse() and self.alpha is not None:
            alpha = DataVector(self.alpha)
            alpha.resize(size)
        # Use new alpha vector
        else:
            alpha = DataVector(size)
            alpha.setAll(0.0)
        b = DataVector(size)
        self.linearSystem.generateb(set.getValues(), b)
        # calculates alphas
        self.solver.solve(self.linearSystem, alpha, b, self.solver.getReuse(),
                          False, self.solver.getThreshold())

        return alpha
示例#2
0
# create regular grid, level 3
level = 3
gridGen = grid.createGridGenerator()
gridGen.regular(level)
print "number of initial grid points:    {}".format(gridStorage.size())

# definition of function to interpolate - nonsymmetric(!)
f = lambda x0, x1: 16.0 * (x0 - 1) * x0 * (x1 - 1) * x1 * x1
# create coefficient vector
alpha = DataVector(gridStorage.size())
print "length of alpha vector:           {}".format(alpha.getSize())

# now refine adaptively 5 times
for refnum in range(5):
    # set function values in alpha
    for i in xrange(gridStorage.size()):
        gp = gridStorage.get(i)
        alpha[i] = f(gp.getCoord(0), gp.getCoord(1))

    # hierarchize
    createOperationHierarchisation(grid).doHierarchisation(alpha)

    # refine a single grid point each time
    gridGen.refine(SurplusRefinementFunctor(alpha, 1))
    print "refinement step {}, new grid size: {}".format(
        refnum + 1, gridStorage.size())

    # extend alpha vector (new entries uninitialized)
    alpha.resize(gridStorage.size())
示例#3
0
# set function values in alpha
for i in range(gs.getSize()):
    gs.getPoint(i).getStandardCoordinates(p)
    alpha[i] = dist.pdf(p.array())

# hierarchize
createOperationHierarchisation(grid).doHierarchisation(alpha)

for refnum in range(refnums):
    # refine a single grid point each time
    gridGen.refine(SurplusRefinementFunctor(alpha, 1))
    print("refinement step {}, new grid size: {}".format(
        refnum + 1, gs.getSize()))

    # extend alpha vector (new entries uninitialized)
    alpha.resize(gs.getSize())

    # set function values in alpha
    for i in range(gs.getSize()):
        gs.getPoint(i).getStandardCoordinates(p)
        alpha[i] = dist.pdf(p.array())

    # hierarchize
    createOperationHierarchisation(grid).doHierarchisation(alpha)

alpha = alpha.array()
sgdeDist = SGDEdist(grid,
                    alpha,
                    trainData=trainSamples,
                    bounds=dist.getBounds())
print(
示例#4
0
# create regular grid, level 3
level = 3
gridGen = grid.createGridGenerator()
gridGen.regular(level)
print "number of initial grid points:    {}".format(gridStorage.size())

# definition of function to interpolate - nonsymmetric(!)
f = lambda x0, x1: 16.0 * (x0-1)*x0 * (x1-1)*x1*x1
# create coefficient vector
alpha = DataVector(gridStorage.size())
print "length of alpha vector:           {}".format(alpha.getSize())


# now refine adaptively 5 times
for refnum in range(5):
    # set function values in alpha
    for i in xrange(gridStorage.size()):
        gp = gridStorage.get(i)
        alpha[i] = f(gp.getCoord(0), gp.getCoord(1))

    # hierarchize
    createOperationHierarchisation(grid).doHierarchisation(alpha)

    # refine a single grid point each time
    gridGen.refine(SurplusRefinementFunctor(alpha, 1))
    print "refinement step {}, new grid size: {}".format(refnum+1, gridStorage.size())

    # extend alpha vector (new entries uninitialized)
    alpha.resize(gridStorage.size())