def run_atan_sg(inputspace, gridType, level, numGridPoints, boundaryLevel, fullGrid, refinement, out, plot): testSetting = AtanPeridynamicExample(inputspace) if refinement is not None: testSetting.run_adaptive_sparse_grid(Grid.stringToGridType(gridType), level, numGridPoints, refinement, boundaryLevel, fullGrid, out, plot) else: testSetting.run_regular_sparse_grid(Grid.stringToGridType(gridType), level, numGridPoints, boundaryLevel, fullGrid, out, plot)
def run_sobol_g_function_sg(fullModel, gridType, level, numGridPoints, fullGrid, refinement, out): testSetting = SobolGFunctionSudret2008(fullModel) sobol_indices, N = testSetting.run_sparse_grids( Grid.stringToGridType(gridType), level, numGridPoints, fullGrid, refinement, out) return testSetting.sobol_indices, sobol_indices, N
def run_adaptive_sparse_grid(self, gridTypeStr, level, maxGridSize, refinement, boundaryLevel=None, out=False, plot=False): np.random.seed(1234567) gridType = Grid.stringToGridType(gridTypeStr) results = {'surrogate': 'asg', 'grid_type': gridType, 'is_full': False, 'time_steps': self.toi, 'setting': self.setting, 'num_dims': self.numDims, 'qoi': self.qoi, 'max_grid_size': maxGridSize, 'boundary_level': boundaryLevel, 'refinement': refinement, 'refinement_technique': 'refinement', 'adaptPoints': 5, 'adaptRate': 0.05, 'adpatEps': 1e-10, 'results': {}} # ---------------------------------------------------------- # define the learner # ---------------------------------------------------------- builder = UQBuilder() self.defineUQSetting(builder) uqSetting = builder.andGetResult() uqManager = TestEnvironmentSG().buildSetting(self.params, level=level, gridType=gridType, deg=20, maxGridSize=maxGridSize, isFull=False, adaptive=refinement, adaptPoints=5, # adaptRate=0.05, epsilon=1e-10, boundaryLevel=boundaryLevel, qoi=self.qoi, toi=self.toi, saveAfterN=-1, # dont save at all uqSetting=uqSetting, uqSettingRef=self.uqSettings['ref']) # ---------------------------------------------- # first run oldSize = uqManager.uqSetting.getSize() while uqManager.hasMoreSamples(): uqManager.runNextSamples() # ---------------------------------------------------------- # specify ASGC estimator analysis = ASGCAnalysisBuilder().withUQManager(uqManager)\ .withAnalyticEstimationStrategy()\ .andGetResult() analysis.setVerbose(False) # ---------------------------------------------------------- label = "asg_l%i_%s" % (level, gridTypeStr) self.runAnalysis(analysis, uqManager, "sg", label, out, plot, results) # update results results["max_grid_size"] = uqManager.getGrid().getSize() if out: # store results filename = os.path.join(self.pathResults, "%s-qoi%s_%s_d%i_%s_Nmax%i_r%s_N%i.pkl" % (self.radix, self.qoi, "asg", self.numDims, gridTypeStr, maxGridSize, refinement, uqManager.getGrid().getSize())) fd = open(filename, "w") pkl.dump(results, fd) fd.close()
def run_regular_sparse_grid(self, gridTypeStr, level, maxGridSize, boundaryLevel=1, isFull=False, out=False, plot=False): np.random.seed(1234567) gridType = Grid.stringToGridType(gridTypeStr) results = {'surrogate': 'sg', 'grid_type': gridType, 'is_full': False, 'time_steps': self.toi, 'setting': self.setting, 'num_dims': self.numDims, 'qoi': self.qoi, 'max_grid_size': maxGridSize, 'boundary_level': boundaryLevel, 'refinement': None, 'results': {}} while True: print("-" * 80) print("level = %i, grid type = %s" % (level, gridTypeStr)) builder = UQBuilder() self.defineUQSetting(builder) uqSetting = builder.andGetResult() uqManager = TestEnvironmentSG().buildSetting(self.params, level=level, gridType=gridType, deg=20, maxGridSize=maxGridSize, isFull=isFull, boundaryLevel=boundaryLevel, qoi=self.qoi, toi=self.toi, saveAfterN=-1, uqSetting=uqSetting, uqSettingRef=self.uqSettings['ref']) if uqManager.sampler.getSize() > maxGridSize: print("DONE: %i > %i" % (uqManager.sampler.getSize(), maxGridSize)) break # ---------------------------------------------- oldSize = uqManager.uqSetting.getSize() while uqManager.hasMoreSamples(): uqManager.runNextSamples() # ---------------------------------------------------------- # specify ASGC estimator analysis = ASGCAnalysisBuilder().withUQManager(uqManager)\ .withAnalyticEstimationStrategy()\ .andGetResult() analysis.setVerbose(False) # ---------------------------------------------------------- label = "sg_l%i_%s" % (level, gridTypeStr) self.runAnalysis(analysis, uqManager, "sg", label, out, plot, results) level += 1 # update results results["max_grid_size"] = uqManager.getGrid().getSize() if out: # store results filename = os.path.join(self.pathResults, "%s-qoi%s_%s_d%i_%s_Nmax%i_r%i_N%i.pkl" % (self.radix, self.qoi, "sg" if not isFull else "fg", self.numDims, gridTypeStr, maxGridSize, False, uqManager.getGrid().getSize())) fd = open(filename, "w") pkl.dump(results, fd) fd.close()
def run_ishigami_sg(gridType, level, numGridPoints, fullGrid, refinement, out): testSetting = IshigamiSudret2008() sobol_indices, N = testSetting.run_sparse_grids( Grid.stringToGridType(gridType), level, numGridPoints, fullGrid, refinement, out) return testSetting.sobol_indices, sobol_indices, N