目录
1 性质
当我们要对某个昂贵函数或者一些试验数据建立代理模型时,前期实验设计对于初始采样点的选取尤为重要,如何尽可能用少量点能够得到空间填冲效果好的初始样本点成为研究热点,拉丁超立方采样是一个热门的方法,拉丁超立方抽样是基于空间填充技术的,它满足投影特性,也就是在设计变量空间内的样本点在每一维上的投影都是均匀分布的,也就是在每一维上的投影都满足每个子区间上都只有一个投影点
也就是如上图所示,分析横坐标可以发现由于有10个点,它将横坐标分为10个子区间,每个子区间内都只有一个样本投影点,这样的好处就是可以在少量点的情况下更加充分地探索整个设计变量空间。
2 原理
从最早发布该方法的一篇论文中可以知道它的原理
论文中描述的是一个q维设计变量空间采样n个点, aik代表的是第i个样本点在第k维上的值是A矩阵上的一个元素,A矩阵是一个n*q矩阵,n代表n个点,q代表q维,A矩阵中每一行(a1k,a2k,...,ank)代表着1到n的一个随机排列,共有n!排列方式,一共有q行,也就是q维,u是一个n*q矩阵,uik服从在0-1区间内的均匀分布。
由于设计变量空间内每一维都满足空间填充,这里只分析一个维度上,如果有十个点,设计变量空间是两维,如果在第一维上ai1(i=1到10)如果其值是这样一个排列[1 2 3 4 5 6 7 8 9 10],根据公式可知样本点在该维上投影(aik/10)是[1/10, 2/10, 3/10, 4/10, 5/10, 6/10, 7/10, 8/10, 9/10, 10/10]由于uik(i=1到10,k=1到2)是一个在0-1之间的均匀分布,那么uik/10就是一个在0到1/10区间内的均匀分布,因此(aik-uik)/10等于将投影落在[0,1/10], [1/10,2/10], [2/10,3/10] , .... ... [9/10,1]之间,这就保证了每个子区间只有一个投影点。
3 实现
Matlab,实现一个二维,采样十个点的程序
M=10; %采样十个点
x=zeros(2,10); %初始化采样点,维度是2维
A=randperm(10); %获得1到10的随机排列
B=randperm(10);
x(1,:)=(A/10)-rand(1,10)/10; %让设计变量在0到1之间,将每一维均分10等分,让每一个点投影在每个等分区间内
x(2,:)=(B/10)-rand(1,10)/10;
plot(x(1,:),x(2,:),'*');
grid on %打开网格
xticks(0:0.1:1)
yticks(0:0.1:1)