コード例 #1
0
def buildMultiresolutionMatrix(xTrain,maxOrder,maxDetailLevel):
  # Construct samples
  samples = uq.uqSamples(xTrain.shape[1])
  currSample = uq.stdVec()
  for loopA in range(xTrain.shape[0]):
    currSample.clear()
    for loopB in range(xTrain.shape[1]):
      currSample.push_back(xTrain[loopA,loopB])
    samples.addOneSample(currSample)

  # Set Parameters for multiresolution basis
  maxOrder                = maxOrder
  addLegendrePoly         = True
  addMW                   = True
  useBinaryPartitions     = False
  mwMatType               = uq.kMWFixedMaxDetailLevel
  mwMatIncludeNullColumns = True
  useExactMW              = False
  mwQuadOrder             = 10
  measure                 = npToStdMat(np.ones((2*mwQuadOrder,1)))
  # print np.array(measure)
  maxColumns              = 0
  maxDetailLevel          = maxDetailLevel

  # Construct Multiresolution Matrix on samples
  mwMat = uq.uqMWMatrix(maxOrder,samples, \
                        addLegendrePoly,addMW,useBinaryPartitions, \
                        mwMatType,mwMatIncludeNullColumns, \
                        useExactMW,mwQuadOrder,measure, \
                        maxColumns,maxDetailLevel)
  # Return Matrix
  return mwMat
コード例 #2
0
def buildRegressionMatrix(pTrainVals,ord):
  # Construct samples
  samples = uq.uqSamples(pTrainVals.shape[1])
  currSample = uq.stdVec()
  for loopA in range(pTrainVals.shape[0]):
    currSample.clear()
    for loopB in range(pTrainVals.shape[1]):
      currSample.push_back(pTrainVals[loopA,loopB])
    samples.addOneSample(currSample)
  # Construct Polynomial Matrix on samples
  polyMat = uq.uqPolyMatrix(samples,ord,uq.kPolyLegendre,uq.kMIPartialOrder)
  # Return Matrix
  return polyMat
コード例 #3
0
# Imports
import sys

sys.path.insert(0, '../../py')

import tulipUQ as uq
import numpy as np
import matplotlib.pyplot as plt

if __name__ == "__main__":

    # Construct three sample objects
    randomSamples = uq.uqSamples()
    sparseGridSamples = uq.uqSamples()
    cartesianGridSamples = uq.uqSamples()

    # Add variables to random sampling
    randomSamples.addVariable('Var1', uq.kSAMPLEUniform, 0.0, 1.0)
    randomSamples.addVariable('Var2', uq.kSAMPLEUniform, 0.0, 1.0)
    randomSamples.generateRandomSamples(100)
    s1 = uq.stdMat()
    randomSamples.getValues(s1)
    npS1 = np.array(s1)

    # Add variables to sparse grid samples
    sparseGridSamples.addVariable('Var1', uq.kSAMPLEUniform, 0.0, 1.0)
    sparseGridSamples.addVariable('Var2', uq.kSAMPLEUniform, 0.0, 1.0)
    sparseGridSamples.generateSparseGrid(5)
    s2 = uq.stdMat()
    sparseGridSamples.getValues(s2)
    npS2 = np.array(s2)
コード例 #4
0
# Imports
import sys
sys.path.insert(0, '../../py')

import tulipUQ as uq
import numpy as np
import matplotlib.pyplot as plt

# =============
# MAIN FUNCTION
# =============
if __name__ == "__main__":

    # Construct samples
    samples = uq.uqSamples()
    samples.addVariable('Var1', uq.kSAMPLEUniform, -1.0, 1.0)
    samples.addVariable('Var2', uq.kSAMPLEUniform, -1.0, 1.0)
    samples.generateCartesianGrid(10, uq.kCC, uq.kHaarRange)

    # Construct Polynomial Matrix on samples
    polyMat = uq.uqPolyMatrix(samples, 5, uq.kPolyLegendre, uq.kMIPartialOrder)

    # Eval functional value with simple function
    rhs = uq.stdVec()
    rhs.resize(polyMat.getRowCount())
    for loopA in xrange(polyMat.getRowCount()):
        rhs[loopA] = samples.getValuesAt(loopA, 0) + samples.getValuesAt(
            loopA, 1)

    # Construct the regression algorithm
    bcs = uq.uqAlgorithmBCS()
コード例 #5
0
    #marginalFile = ""
    #error = approx.importFromTextFile(marginalFile)
    #if(error != 0):
    #  print 'ERROR: Cannot Read Approximant From File.'
    #  sys.exit(-1)

    # EVALUATE RANGE
    #tmpLimits = uq.stdVec()
    #approx.getExtremes(tmpLimits)
    #measureSize = fabs(tmpLimits[1] - tmpLimits[0])
    #print 'CURRENT LIMITS: %f %f' % (tmpLimits[0],tmpLimits[1])

    # FORM SAMPLES USING INTEGRATION GRID IN 1D
    mwOrder = 2
    mwQuadOrder = 30
    measure1DGridPoints = uq.uqSamples()
    measure1DGridPoints.addVariable('grid1D', uq.kSAMPLEUniform, 0.0, 1.0)
    measure1DGridPoints.generateCartesianGrid(mwQuadOrder, uq.kDoubleCC,
                                              uq.kHaarRange)

    intLocations = uq.stdVec()
    #scale1DGridOnPartition(measure1DGridPoints,tmpLimits[0],tmpLimits[1],intLocations);
    scale1DGridOnPartition(measure1DGridPoints, 0.0, 1.0, intLocations)

    # EVALUATE MARGINAL AT QUADRATURE POINTS
    measure = uq.stdMat()
    tmp = uq.stdVec()
    currInt = 0.0
    currLoc = 0.0
    currVal = 0.0
    for loopA in xrange(intLocations.size()):
コード例 #6
0
import os
import numpy as np
import time
import glob

#===============================================================================
#                            USER INPUTS HERE

INPUTS_FILE = 'sampledInputs.txt'
OUTPUTS_FILE = 'cylinderResults.txt'

#===============================================================================

if __name__ == '__main__':

    inputs = uq.uqSamples()

    # Create the Uncertainty Propagation Action Object
    mwBcs = ac.acActionUP_MWBCS()

    # Set Options
    mwBcs.opts.inputMode = ac.imTable
    mwBcs.opts.tableInputFileName = INPUTS_FILE
    mwBcs.opts.tableOutputFileName = OUTPUTS_FILE

    mwBcs.opts.addBoundaryPoints = False
    mwBcs.opts.boundaryPointOther = 30

    mwBcs.opts.numIniSamples = 0
    mwBcs.opts.doRefineSpace = True
    mwBcs.opts.doRefineSamples = False