def generate_krig(lb, ub, n_krigsamp, nvar, problem, n_cpu): init_krigsamp = mcpopgen(lb=lb, ub=ub, ndim=2, n_order=1, n_coeff=3) print("Evaluating Kriging Sample") ykrig = problem(init_krigsamp) print(np.count_nonzero(ykrig <= 0)) # Set Kriging Info KrigInfo = initkriginfo(1) KrigInfo["X"] = init_krigsamp KrigInfo["y"] = ykrig KrigInfo["nvar"] = nvar KrigInfo["nsamp"] = n_krigsamp KrigInfo["nrestart"] = 5 KrigInfo["ub"] = ub KrigInfo["lb"] = lb KrigInfo["nkernel"] = len(KrigInfo["kernel"]) KrigInfo["optimizer"] = "lbfgsb" #trainkrig drm = None t = time.time() krigobj = Kriging(KrigInfo, standardization=True, standtype='default', normy=False, trainvar=False) krigobj.train(n_cpu=n_cpu) loocverr, _ = krigobj.loocvcalc() elapsed = time.time() - t print("elapsed time to train Kriging model: ", elapsed, "s") print("LOOCV error of Kriging model: ", loocverr, "%") return krigobj, loocverr, drm
def generate_krig(init_samp, n_krigsamp, nvar, problem): # Kriging Sample t1 = time.time() init_krigsamp = mcpopgen(type="lognormal", ndim=nvar, n_order=1, n_coeff=5, stddev=0.2, mean=1) ykrig = evaluate(init_krigsamp, type=problem) t2 = time.time() print("50 samp eval", t2 - t1) # Evaluate Kriging Sample and calculate PoF real init_samp_G = evaluate(init_samp, type=problem) total_samp = np.hstack((init_samp, init_samp_G)).transpose() positive_samp = total_samp[:, total_samp[nvar] >= 0] positive_samp = positive_samp.transpose() nsamp = np.size(init_samp, 0) npos = np.size(positive_samp, 0) Pfreal = 1 - npos / nsamp lb = np.floor(np.min(init_samp)) * np.ones(shape=[nvar]) ub = np.ceil(np.max(init_samp)) * np.ones(shape=[nvar]) # Set Kriging Info KrigInfo = initkriginfo("single") KrigInfo["X"] = init_krigsamp KrigInfo["y"] = ykrig KrigInfo["nvar"] = nvar KrigInfo["nsamp"] = n_krigsamp KrigInfo["nrestart"] = 5 KrigInfo["ub"] = ub KrigInfo["lb"] = lb KrigInfo["nkernel"] = len(KrigInfo["kernel"]) KrigInfo["n_princomp"] = 4 KrigInfo["optimizer"] = "lbfgsb" #trainkrig t = time.time() krigobj = KPLS(KrigInfo, standardization=True, standtype='default', normy=False, trainvar=False) krigobj.train(parallel=False) loocverr, _ = krigobj.loocvcalc() elapsed = time.time() - t print("elapsed time for train Kriging model: ", elapsed, "s") print("LOOCV error of Kriging model: ", loocverr, "%") return krigobj, Pfreal
def generate_krig(init_samp, n_krigsamp, nvar, problem, n_cpu): init_krigsamp = mcpopgen(type="lognormal", ndim=nvar, n_order=1, n_coeff=5, stddev=0.2, mean=1) print("Evaluating Kriging Sample") ykrig = evaluate(init_krigsamp, type=problem) print(np.count_nonzero(ykrig <= 0)) lb = (np.min(init_samp, axis=0)) ub = (np.max(init_samp, axis=0)) Pfreal = None # Set Kriging Info KrigInfo = initkriginfo(1) KrigInfo["X"] = init_krigsamp KrigInfo["y"] = ykrig KrigInfo["nvar"] = nvar KrigInfo["nsamp"] = n_krigsamp KrigInfo["nrestart"] = 5 KrigInfo["ub"] = ub KrigInfo["lb"] = lb KrigInfo["nkernel"] = len(KrigInfo["kernel"]) KrigInfo["n_princomp"] = 4 KrigInfo["optimizer"] = "lbfgsb" #trainkrig drm = None t = time.time() krigobj = KPLS(KrigInfo, standardization=True, standtype='default', normy=False, trainvar=False) krigobj.train(n_cpu=n_cpu) loocverr, _ = krigobj.loocvcalc() elapsed = time.time() - t print("elapsed time to train Kriging model: ", elapsed, "s") print("LOOCV error of Kriging model: ", loocverr, "%") return krigobj, loocverr, drm
ax2.grid(which='both', axis='both', linestyle='--') ax2.set_title('Total Order ' + title, fontsize=15, fontweight='bold') ax2.set_xlim(xlim) ax2.xaxis.set_tick_params(labelsize=13, width=3) ax1.set_yticks(y_pos) ax1.set_yticklabels(vartot, fontsize=13, fontweight='bold') plt.subplots_adjust(wspace=0.1, hspace=0) plt.legend() plt.show() if __name__ == '__main__': ub = np.array([5, 5]) lb = np.array([-5, -5]) init_samp = mcpopgen(lb=lb, ub=ub, ndim=2, n_order=6, n_coeff=1) dic = dict() nvar = 2 n_krigsamp = 50 problem = cust n_cpu = 12 # Create Kriging model t = time.time() krigobj, loocverr, drm = generate_krig(lb, ub, n_krigsamp, nvar, problem, n_cpu) ktime = time.time() - t # Predict and UQ pred(krigobj, init_samp, problem, drmmodel=drm) # Sensitivity Analysis
# Define AKMCS Information akmcsInfo = dict() akmcsInfo["init_samp"] = init_samp akmcsInfo["maxupdate"] = 70 akmcsInfo["problem"] = problem # Run AKMCS t = time.time() akmcsobj = AKMCS(krigobj, akmcsInfo) akmcsobj.run(savedatato=filename) elapsed = time.time() - t print("elapsed time is : ", elapsed, "s") if __name__ == '__main__': init_samp = mcpopgen(type="lognormal", ndim=40, n_order=6, n_coeff=1, stddev=0.2, mean=1) nvar = 40 n_krigsamp = 50 problem = 'hidimenra' filename = "akmcshidimen.csv" krigobj, Pfreal = generate_krig(init_samp, n_krigsamp, nvar, problem) run_akmcs(krigobj, init_samp, problem, filename) print(Pfreal)
print("elapsed time is : ", elapsed, "s") xtotal = akmcsobj.krigobj.KrigInfo['X'] return xtotal if __name__ == '__main__': nvar = 2 n_krigsamp = 25 problem = 'styblinski' filename = "akmcs2d.csv" figloc = 'akmcsupdate' init_samp = mcpopgen(type='normal', ndim=nvar, n_order=6, n_coeff=1, stddev=1.5) ysamp = evaluate(init_samp, problem) krigsamp = mcpopgen(type='normal', ndim=nvar, n_order=1, n_coeff=2.5, stddev=1.5) pos_MC = init_samp[ysamp.flatten() > 0, :] neg_MC = init_samp[ysamp.flatten() <= 0, :] krigobj, Pfreal = generate_krig(init_samp, krigsamp, nvar, problem) xtotal = run_akmcs(krigobj, init_samp, problem, filename, figloc, pos_MC, neg_MC) print(Pfreal)