Hi Regis, Thanks for your reply. I am using the same script from this conversation. I enclosed it again. Sincerely, Pamphile |
import openturns as ot import numpy as np from memory_profiler import profile
ot.ResourceMap.SetAsUnsignedInteger("DesignProxy-DefaultCacheSize", 0)
# The model
x1 = ot.Uniform(15., 60.)
x2 = ot.Normal(4035., 400.)
dists = [x1, x2]
# The model
model = ot.SymbolicFunction(["x", "y"], ["sin(x) / (1.0 + y * y)"] * 14)
# The distribution and the associated multivariate polynomial basis
marginals = [ot.Exponential(2.0), ot.Normal(-1.0, 0.5)]
dimension = len(marginals)
distribution = ot.ComposedDistribution(marginals)
enumerateFunction = ot.EnumerateFunction(dimension)
basis = ot.OrthogonalProductPolynomialFactory(
[ot.StandardDistributionPolynomialFactory(ot.AdaptiveStieltjesAlgorithm(margin))
for margin in marginals], enumerateFunction)
measure = basis.getMeasure()
# The Functional Chaos details...
deg = 10
degrees = [deg + 1] * dimension
projectionStrategy = ot.IntegrationStrategy(ot.GaussProductExperiment(measure, degrees))
adaptiveStrategy = ot.FixedStrategy(basis, enumerateFunction.getStrataCumulatedCardinal(deg))
# Generate the input sample WITH THE ASSOCIATED WEIGTHS
inputSample, weights = projectionStrategy.getExperiment().generateWithWeights()
# Evaluate the model
outputSample = np.array(model(inputSample))
@profile
def model_fitting(column):
column = column.reshape((-1, 1))
pc_algo = ot.FunctionalChaosAlgorithm(inputSample, weights, column,
distribution, adaptiveStrategy,
projectionStrategy)
ot.Log.Show(ot.Log.ERROR)
pc_algo.run()
pc_result = pc_algo.getResult()
pc = pc_result.getMetaModel()
return pc, pc_result
results = [model_fitting(out) for out in outputSample.T]
|
_______________________________________________ OpenTURNS users mailing list [email protected] http://openturns.org/mailman/listinfo/users
