1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
|
#! /usr/bin/env python
from __future__ import print_function
from openturns import *
from math import *
TESTPREAMBLE()
try:
#Log.Show( Log.Flags() | Log.INFO )
# Problem parameters
dimension = 8
# Create the Ishigami function
# Reference analytical values
meanTh = 1.0
covTh = 1.0
a = NumericalPoint(dimension)
a[0] = 1.0
a[1] = 2.0
a[2] = 5.0
a[3] = 10.0
a[4] = 20.0
a[5] = 50.0
a[6] = 100.0
a[7] = 500.0
inputVariables = Description(dimension)
outputVariables = Description(1)
outputVariables[0] = "y"
formula = Description(1)
formula[0] = "1.0"
for i in range(dimension):
covTh = covTh * (1.0 + 1.0 / (3.0 * (1.0 + a[i]) ** 2))
inputVariables[i] = "xi" + str(i)
formula[0] = formula[0] + \
" * ((abs(4.0 * xi" + str(i) + " - 2.0) + " + \
str(a[i]) + ") / (1.0 + " + str(a[i]) + "))"
covTh = covTh - 1.0
model = NumericalMathFunction(inputVariables, outputVariables, formula)
# Create the input distribution
distribution = ComposedDistribution([Uniform(0.0, 1.0)] * dimension)
# Create the orthogonal basis
q = 0.4
enumerateFunction = HyperbolicAnisotropicEnumerateFunction(dimension, q)
productBasis = OrthogonalProductPolynomialFactory(
[LegendreFactory()] * dimension, enumerateFunction)
# design experiment
samplingSize = 100
# build basis
basisSize = 917
listFittingAlgorithm = list()
listFittingAlgorithm.append(KFold())
listFittingAlgorithm.append(CorrectedLeaveOneOut())
for fittingAlgorithmIndex in range(len(listFittingAlgorithm)):
fittingAlgorithm = listFittingAlgorithm[fittingAlgorithmIndex]
adaptiveStrategy = FixedStrategy(productBasis, basisSize)
projectionStrategy = LeastSquaresStrategy(LowDiscrepancyExperiment(
SobolSequence(dimension), samplingSize), LeastSquaresMetaModelSelectionFactory(LAR(), fittingAlgorithm))
algo = FunctionalChaosAlgorithm(
model, distribution, adaptiveStrategy, projectionStrategy)
RandomGenerator.SetSeed(0)
algo.run()
result = algo.getResult()
print("coeffs = ", result.getCoefficients())
print("residuals = ", result.getResiduals())
print("relative errors = ", result.getRelativeErrors())
except:
import sys
print("t_LeastSquaresMetaModelSelection_std.py",
sys.exc_info()[0], sys.exc_info()[1])
|