基于最大最小思想优化拉丁超立方采样

由于普通的拉丁超立方采样,样本点序列是一个随机的排列,就会出现如下分布状况,虽然采样点满足了空间投影均匀的特性,但它的空间填充效果并不好。

 根据参考文献的那篇论文提出的最大最小方法优化普通拉丁超立方采样。论文中阐述了最大最小的方法是,对于每一个样本点,它与之前几个样本点的距离最小值为该样本点的特征距离,而优化的目的是为了使这个特征距离最大,让样本点之间更加离散充满整个空间而不是聚集在一起。

下面引用一个例子介绍一下关于二维设计变量空间如何利用最大最小方法优化拉丁超立方采样。

如上图所示,打算在二维空间采集5个点,根据拉丁超立方思想,样本点在每一维上每个区间内保证只有一个投影点,因此,在x,y轴上均分5个区间。首先从第一个点开始,为了方便,假设第i个样本点在x轴上的位置是第i个区间,第一个点p1在x轴上第一个区间,在y轴上的区间位置随机(图片上是编号为2的位置),根据投影区间只有一个样本点思想,那么第二个点p2在y轴上的位置就需要排除编号为2的位置,那么对于p2来说y轴上只有编号为1,3,4,5的位置可选,分别计算y轴位置在1,3,4,5的p2点与p1点距离,选择距离最大的那个y轴位置也就是编号为5的位置当做第二个样本点的最终位置。对于p3由于前两个样本点使用掉了2,5位置,因此p3样本点y轴位置只能在1,3,4选择,假如p3样本点在y轴位置是1,分别计算它与前面p1,p2样本点的距离,由图可知距离分别为2.236和4.123,那么它的特征距离也就是这两个距离最小值2.236,再分别用同样的方式,计算p3样本点y轴上的位置在3,4上的特征距离,选出特征距离最大的那个y轴位置就是最终p3样本点在y轴上的位置也就是图中所示的位置。依此类推计算出其他几个样本点的位置。这样就能够得到一个空间填充性能较好的样本点同时也满足拉丁超立方的投影特性。

matlab代码实现利用该方法在一个二维空间内采集十个样本点

X=zeros(10,2);   %初始化采样点
X(1,:)=[1,ceil(10*rand(1))];  %第一个点横坐标为1,纵坐标1到10随机
A=[X(1,2)];     %用来存储存在的点所占用在纵坐标的标数
B=[1,2,3,4,5,6,7,8,9,10];
for i=2:10
    isA=ismember(B,A);
    C=B(~isA);    %记录在该横坐标处剩余可用纵坐标的可用标号
    [~,n]=size(C);
    X(i,1)=i;
    for j=1:n     %从可用标号依次计算
        X(i,2)=C(j);
        for k=1:i-1
            d(k)=sum((X(i,:)-X(k,:)).^2);  %计算改点出与之前的点的距离的平方
        end
        distance(j)=min(d);   %最小的距离就是该点处的特征距离
    end
    [~,index]=max(distance);   %找到特征距离最大处的索引
    X(i,2)=C(index);     %最小距离最大的地方就是该点的纵坐标
    A=[A,C(index)];   %加入占用纵坐标
    clear distance   %清除上一次迭代的变量
    clear c
    clear d
end
X(:,1)=X(:,1)/10-rand(10,1)/10;
X(:,2)=X(:,2)/10-rand(10,1)/10;
scatter(X(:,1),X(:,2),'filled')
grid on
xticks(0:0.1:1)
yticks(0:0.1:1)

结果如下:

普通的拉丁超立方采样结果: 

 可以看到样本点之间的距离相比于普通的拉丁超立方要更加离散,样本点不会发生聚集。空间分布更加均匀合理。

参考文献:

YI  J,LI  X,XIAO  M,et  al.  Construction  of  nested maximin designs based on successive local enumeration and modified novel global harmony search algorithm[J]. Engineering Optimization,2017,49(1):161-180.

  • 10
    点赞
  • 87
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
### 回答1: 拉丁立方采样是一种采样方法,可以在实验设计和参数优化等方面广泛应用。这种采样方法可以使得采样点更加均匀地分布在整个采样空间中,从而避免了传统随机采样的缺点。 MATLAB 是一个用于数值计算和科学计算的软件,其中也包括了拉丁立方采样的工具箱。在 MATLAB 中使用拉丁立方采样需要经过以下步骤: 1.准备好采样所需的参数,包括采样点数目、采样维数和采样范围等。 2.在 MATLAB 中使用已经准备好的参数生成拉丁立方样本集合。 3.对生成的样本进行分析和处理,获取需要的信息。 4.根据分析结果加以调整和修改,重新生成样本集合。 需要注意的是,在使用 MATLAB 进行拉丁立方采样时,可以根据自己的需要进行调整和修改,使得采样结果更加符合实际需求。同时,也需要注意对采样数据的存储和管理,以便于后续的处理和分析。 ### 回答2: 拉丁立方采样是一种用于确定模型参数不确定性和灵敏度分析的采样技术,常用于工程、科学和经济学等领域。MATLAB是一种常用的科学计算软件,提供了许多工具和函数用于数据分析和统计学习。在MATLAB中,使用拉丁立方采样可以通过使用LatinHypercube和sobolset函数来实现。 拉丁立方采样是一种非随机的采样技术,它产生的采样点在各维度上均匀分布,并且在各维度上的采样点之间互不相关。为了生成拉丁立方采样点,需要对每个维度生成随机排列,并将每个排列中的每个元素除以该维度的总采样数,然后再将其加上一个随机偏移量。这个偏移量是从[0,1]之间的均匀分布随机采样得到的。 在MATLAB中,可以使用LatinHypercube函数生成拉丁立方采样点。LatinHypercube函数的输入为采样点个数和维度数。例如,要生成100个三维拉丁立方采样点,可以使用以下代码: X = LatinHypercube(100,3); 在MATLAB中,也可以使用sobolset函数生成采样点。Sobol序列是一组高维序列,具有良好的分散性和可重复性,适用于高维参数空间采样。sobolset函数的输入为采样点个数和维度数。例如,要生成100个三维Sobol采样点,可以使用以下代码: p = sobolset(3); X = net(p,100); 无论使用拉丁立方采样还是Sobol采样,都可以通过将生成的采样点作为模型的观测数据,来研究模型的参数不确定性和灵敏度分析。这些采样点可以用于构建响应曲面和敏感性分析,也可以用于不确定性量化和优化设计。MATLAB提供了许多工具和函数用于数据分析和统计学习,使得这些分析和优化过程变得更加简单和高效。 ### 回答3: 拉丁立方采样是一种常用的多维随机采样方法,常被应用于模拟仿真、数值计算、优化设计等领域。而MATLAB则是一种著名的科学计算软件,它在数据处理、算法实现、图形绘制等方面具有很强的功能。 在MATLAB中,实现拉丁立方采样可以通过使用内置函数lhsdesign实现。lhsdesign函数的主要作用是根据用户设定的样本数目和样本维度,产生符合拉丁立方采样规则的样本点集。 具体实现方法如下: 1. 定义样本数目和样本维度 我们假设需要生成10个三维样本点,代码如下: samples = 10; dimensions = 3; 2. 调用lhsdesign函数生成样本点 我们可以调用lhsdesign函数来生成符合拉丁立方采样规则的样本点集。 points = lhsdesign(samples,dimensions); 3. 可视化样本点 将生成的样本点可视化,有助于我们对采样结果的观察和分析。我们仍以上述三维样本点为例,将其可视化代码为: scatter3(points(:,1),points(:,2),points(:,3),'filled'); 运行上述代码后可以看到生成的10个样本点位于三维空间中。 除了lhsdesign函数,MATLAB中还有许多其他的随机采样函数,如rand、randn、sobolset等等,使用不同函数所得到的采样结果也不尽相同,因此在具体应用中需要根据实际情况选择合适的函数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值