拉丁超立方采样诞生于1979年,由美国洛斯阿拉莫斯国家实验室的McKay、Beckman和Conover提出。其思想源自两个经典概念:
拉丁方:欧拉研究的数学结构,要求符号在行列中不重复
超立方体:多维设计空间的几何表达
有趣的是:算法名称中的"拉丁"与拉丁语系无关,而是源自数学家们使用拉丁字母标记方阵的传统
LHS通过在每个维度上进行等概率分层,确保:
每个维度的投影分布均匀
多维空间中的样本点不聚集
全维度覆盖性优于简单随机采样
import numpy as np
from scipy.spatial import distance
deflatin_hypercube_sampling(n, dims):
"""
基础拉丁超立方采样函数
参数:
n (int): 样本数量
dims (int): 参数维度
返回:
np.ndarray: n×dims的采样矩阵,每列在[0,1]区间均匀分布
"""
# 1. 创建分层区间:将[0,1]区间分为n等份
intervals = np.linspace(0, 1, n+1) # 生成n+1个分割点
# 2. 在每个分层内随机采样
samples = np.random.uniform(
low=intervals[:-1], # 每层的下限(去掉最后一个点)
high=intervals[1:], # 每层的上限(去掉第一个点)
size=(n, dims) # 生成n×dims的矩阵
)
# 3. 对每列进行独立随机排列,确保各维度独立性
for d inrange(dims):
np.random.shuffle(samples[:, d]) # 打乱第d列的顺序
return samples
特性 | 随机采样 | 拉丁超立方 |
---|---|---|
单维均匀性 | 随机分布 | 严格分层 |
多维空间覆盖 | 可能聚集 | 最大最小距离优化 |
方差稳定性 | 较高 | 降低30-50% |
收敛速度 | O(1/√n) | O(1/n) |
某汽车悬架设计:
7个关键参数(弹簧刚度、减震系数等)
传统方法:500次采样
LHS方法:仅需120次达到相同精度
节省计算成本:76%(从300小时降至72小时)
# 悬架系统7个关键参数范围
param_ranges = np.array([
[22000, 28000], # 弹簧刚度(N/m)
[1500, 2500], # 减震系数(N·s/m)
[0.3, 0.7], # 稳定杆直径(m)
[0.4, 0.6], # 轮胎侧偏刚度
[12.5, 15.5], # 悬架杠杆比
[0.8, 1.2], # 衬套刚度系数
[1200, 1800] # 簧下质量(kg)
])
正交数组:离散水平,适合参数较少时
LHS:连续空间,高维优势明显
经验法则:当维度>5时优先选择LHS
高维诅咒:
维度>50时效率下降
解决方案:先进行参数筛选
非线性响应:
混合使用中心复合设计
案例:某非线性悬架系统分析
离散变量处理:
整数化后处理
特殊编码技术