欢迎使用CSDN-markdown编辑器
来源:互联网 发布:linux怎么启动apache 编辑:程序博客网 时间:2024/06/13 21:52
# -*- coding: utf-8 -*-"""Created on Mon May 8 10:20:25 2017@author: Administrator"""# -*- coding: utf-8 -*-"""Created on Mon Apr 24 15:50:10 2017@author: Dean"""#==============================================================================# There are 4 cols in array x, of which each col stands for k1, h1, k2, h2# All the variables are normal and the key parameters are:# k1,5e-2,5e-3# h1,1e-3,1e-4# k2,4e-2,1e-3# h2,15e-3,5e-4# Only care about h1 & h2#==============================================================================import numpy as npfrom scipy import stats as stsimport matplotlib.pyplot as pltplt.style.use('seaborn-colorblind')#==============================================================================##### MC Part#==============================================================================# Calculation module# Define the Response Surface functiondef RS(x): xs = np.zeros(np.shape(x)) con1 = 0.7764490e+4*5e-2 - 0.3882245e+3 con2 = 0.7764490e+5*1e-3 - 0.7764490e+2 con3 = 0.7764490e+4*4e-2 - 0.3105796e+3 xs = 0.1552898e+4*x - 0.2329347e+2 y=0.2966269e+3+0.1892989e-2*con1-0.9514457e-1*con2+0.1998977*con3-0.5756422e+1*xs y=y+0.2440628*xs**2+0.9268875e-2*con2*xs-0.8182638e-2*con3*xs return y# Generate random samples for Monte Carlo simulations# Mean values & standard deviationmean = 15e-3std = 5e-4# Generate a sample populationns = 1000 # This number controls the smoothness of the sample populationsp = np.linspace(0.0001,0.9999,ns, endpoint = True)pop_mc = sts.norm.ppf(sp) * std + mean# Number of samples & experiments# Temperature tolerancetmp_ub = 310 # Upper boundary of temperaturent = 2000 # Calculation times in each repetitionrt = 1000 # Repetitions of simulationres_mc = np.zeros((nt,rt))intv = np.vectorize(np.int)sampleid_mc = np.round(np.random.uniform(0,ns-1,size = (nt,rt)))sampleid_mc = intv(sampleid_mc)sample_mc = pop_mc[sampleid_mc]res1 = RS(sample_mc)pos_mc = np.greater(res1, tmp_ub) res_mc[pos_mc] = 1 # Select those exceeding tmp_ub and set as 1prob_mc = np.mean(res_mc, axis = 0) eff_mc = prob_mc # Sampling efficiency, which equals to failure probability in MC sgm_mc = np.std(res_mc, axis = 0) tmn_mc = np.mean(sgm_mc)/np.mean(prob_mc) # Coefficient of variation#==============================================================================# ##### IS Part#==============================================================================opt_no = 20 # Optimization timestmn_trace = np.zeros(opt_no)mean_t = meanfor i in np.arange(opt_no): dmean = np.random.uniform(-0.3,0) * std mean_is = mean + dmean # Change the mean value pop_is = sts.norm.ppf(sp) * std + mean_is sampleid_is = np.round(np.random.uniform(0,ns-1,size = (nt,rt))) sampleid_is = intv(sampleid_is) sample_is = pop_is[sampleid_is] res2 = RS(sample_is) res_is = np.zeros((nt,rt)) pos_is = np.greater(res2, tmp_ub) res_is[pos_is] = 1 eff_is = np.mean(res_is, axis = 0) alpha_u = sts.norm.pdf(sample_is[pos_is], loc = mean_t, scale = std) alpha_l = sts.norm.pdf(sample_is[pos_is], loc = mean_is, scale = std) alpha = alpha_u/alpha_l # Get coefficient A_i res_is[pos_is] = alpha prob_is = np.mean(res_is, axis = 0) sgm_is = np.std(res_is, axis = 0) tmn_is = np.mean(sgm_is) if(tmn_is<tmn_mc): # Accept if better result acquired mean = mean_is tmn_mc = tmn_is prob_best = prob_is tmn_trace[i] = tmn_isplt.figure()plt.hist(prob_mc, 20, alpha = 0.8, label = 'MC')plt.hist(prob_best, 20, alpha = 0.8, label = 'IS')plt.legend()plt.grid('off')plt.title('Pf Estimation')plt.figure()#plt.hist(sgm_mc, 20, alpha = 0.8, label = 'MC')#plt.hist(sgm_is, 20, alpha = 0.8, label = 'IS')plt.hist(sgm_mc, 20, alpha = 0.8, label = 'MC', histtype = 'stepfilled')plt.hist(sgm_is, 20, alpha = 0.8, label = 'IS', histtype = 'stepfilled')plt.legend()plt.grid('off')plt.title('Std Comparison')plt.show()print(tmn_mc)print(mean)#==============================================================================
阅读全文
0 0
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- Java 编程题目 第十三题
- 从为什么 String=String 谈到 StringBuilder 和 StringBuffer
- 第33课: Spark Executor内幕彻底解密:Executor工作原理图、ExecutorBackend注册源码解密、Executor实例化内幕、Executor具体工作内幕
- t-io: 百万级TCP长连接即时通讯框架
- JNI 使用简介
- 欢迎使用CSDN-markdown编辑器
- Java 编程题目 第十四题
- Linux用户及文件权限管理
- 做题提示
- 下拉菜单的两种实现方式:CSS和JS
- YUVtoUIImage
- Java 编程题目 第十五题
- Java 编程题目 第十六题
- Tomcat部署Web应用方法总结