python 拉丁超立方抽样

了解拉丁超立方原理建议去youtube搜视频,最多就5min,讲得很通俗易懂,看了很多文章长篇大论duck不必,搞懂后原来只是一个简单抽样规则而已。

  1. 自己写代码
   def _domain_lhs_sample(n_domain):
        # 域内取点
        result=np.empty([n_domain,2],dtype=float)# 生成一个指定维度的数组,还可以定义类型
        result.fill(0)#全赋初值为0
        #  result=[[0]*D]*N 方法二
        temp=np.empty([n_domain])
        d=1/n_domain
        for i in range(2):
            for j in range(n_domain):
                temp[j]=np.random.uniform(low=j*d, high=(j+1)*d,size=1)[0]# 从1*1的面积中取得点,后面需要扩大为相应尺度
            np.random.shuffle(temp)     
            for j in range(n_domain):
                result[j,i]=temp[j]
        b = np.array([-0.5,0.5,-0.5,0.5])
        lower_bounds = b[0]
        upper_bounds = b[1]
        if np.any(lower_bounds > upper_bounds):
            print('范围出错')
            return None
        np.add(np.multiply(result,
                           (upper_bounds - lower_bounds),
                           out=result),
               lower_bounds,
               out=result)
        # D参数个数,bounds 参数对应范围,N,拉丁超立方层数
        return result
  1. 调库 pyDOE
from pyDOE import lhs 
lb=np.array([x_min,y_min])
ub=np.array([x_max.y_max])
point=lb+(ub-lb)*lhs(2,2000)
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值