【MATLAB第100期】基于MATLAB的多种改进拉丁超立方LHS数据抽样方法

2024-03-11 00:20

本文主要是介绍【MATLAB第100期】基于MATLAB的多种改进拉丁超立方LHS数据抽样方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

【MATLAB第100期】基于MATLAB的多种改进拉丁超立方LHS数据抽样方法

在这里插入图片描述

一、LHS种类

1、LHS

使用随机搜索生成拉丁超立方体样本。LHS函数特别适用于非常大的设计,当本机MATLAB函数内存不足时。这可能取决于MATLAB版本和所用机器的配置。当尝试运行“lhsdesign”但未成功时,此功能最有用。设计的每一行代表一个点(或样本)。设计变量被规范化,使得超立方体点的值在0和1之间。它使用最大帧间距离算法进行迭代。

2、OLHS

OLHS生成优化的拉丁超立方体样本。它使用Jin等人(2005)提出的增强随机进化算法(ESEA)或Bates等人(2004)提出的遗传算法(GA)来解决优化问题。设计的每一行代表一个运行(或示例)。设计变量被规范化,使得超立方体点的值在0和1之间。

在ESEA和GA策略中,由于用于解决优化问题的启发式优化技术的随机性,所获得的实验设计可能会从一次运行更改为另一次运行。

参考文献:
Jin R, Chen W and Sudjianto A, “An efficient algorithm for constructing optimal design of computer experiments,” Journal of Statistical Planning
and Inference, Vol. 134, pp 268 287, 2005.

Bates SJ, Sienz J, and Toropov VV, “Formulation of the optimal Latin
hypercube design of experiments using a permutation genetic algorithm,”
45th AIAA/ASME/ASCE/AHS/ASC Structures, Structural Dynamics and Materials Conference, Palm Springs, CA, 19 22 April 2004. AIAA-2004-2011.

3、TPLHS

LHS=TPLHS(nPoints,nDV,seed)
TPLHS通过使用平移传播算法(TPA)生成拉丁超立方体设计。目标是在不使用形式优化的情况下获得最优(或接近最优)拉丁超立方体设计。该过程需要最少的计算工作量,并且结果实际上是实时提供的。该算法利用点位置模式,基于PHIp准则(最大距离准则的变体)进行最优拉丁超立方体设计。由一个或多个点组成的小构建块(称为SEED)用于通过在超空间中的简单平移来重新创建这些模式。在TPA的开发过程中进行的研究发现,(i)随着维度的增加,PHIp的分布倾向于降低值;以及(ii)通过TPA获得的拉丁超立方体设计代表了高达中等尺寸的最佳拉丁超立方体的有吸引力的替代方案。得出的结论是,对于多达六个维度(无论点密度如何),所提出的拉丁超立方体设计提供了最优拉丁超立方体的计算上廉价的估计。设计的每一行代表一个运行(或示例)。设计变量被规范化,使得超立方体点的值在0和1之间。
例如:

P=TPLHS(NPOINTS,NDV)
通过NDV矩阵生成NPOINTS,NPOINTS是点数,NDV是变量数。
在这种情况下使用的种子设计是放置在设计空间原点的单个点。P=TPLHS(NPOINTS,NDV,SEED):通过NDV矩阵生成NPOINTS,NPOINTS
是点数,NDV是变量数。SEED是用于构建ELHD的基本拉丁超立方体设计。
1乘NDV SEED不需要归一化。P=TPLHS(NPOINTS,NDV,NTRIALS):通过NDV矩阵生成NPOINTS,
NPOINTS是点数,NDV是变量数。该算法运行NTRIALS次,种子大小从1到
NTRIALS不等。P是根据PHIp准则找到的最佳设计。

PHIp标准是对样本的点在设计空间上的分布程度的度量:
s
PHIp = ( sum J d^(-p) )^(1/p)
i=1
其中p是正整数d是距离值;J是由d分隔的设计中的点对的数量;s是不同距离值的数量。任意点对之间的一般点间距离可以表示如下:

nv
d_ij=(sum|x_ik-x_jk|(t))(1/t)
k=1
其中nv是变量的数量。

PHIP=PHIPfun(X):返回X中给定设计的PHIP值;假设p=50并且t=1。
PHIP=PHIPfun(X,p):返回X中给定的设计的PHIP值,其中p为p,假设t=1。
PHIP=PHIPfun(X,p,t):返回给定值为p和t的X中给定设计的PHIP值。

参考文献:
Viana FAC, Venter G, and Balabanov V, “An algorithm for fast optimal Latinhypercube design of experiments,” International Journal for NumericalMethods in Engineering, Vol. 82 (2), pp. 135-156, 2010
(DOI:10.1002/nme.2750).

二、主程序

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clc;
clear all;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%VarMin=[0 0 0];%各个参数下限
VarMax=[10  10 10];%各个参数上限
designspace=[VarMin;VarMax];%各个参数上下限
ndv = size(designspace, 2);%优化变量数量
npoints = 5;%抽样样本数
%% 一、在限定范围抽样
%% 1.LHS
X_LHS= createdoe(npoints,designspace,zeros(1,ndv),'lhc',0);
%% 2.TPLHS
X_TPLHS = SV(TPLHS(npoints, ndv), ...[zeros(1, ndv); ones(1, ndv)], ...designspace);%TPLHS抽样%% 二、在0-1范围抽样%% 1.LHS
iter=10;%迭代次數
X_LHS = LHfun(npoints, ndv,iter);%LHS抽样%% 2.ESEAOLHS
maxiter=50;
maxstalliter=20;
X_ESEAOLHS = ESEAOLHS(npoints, ndv, maxiter, maxstalliter);%ESEAOLHS抽样%% 3.GAOLHS
maxiter=50;
maxstalliter=20;
popsize=10*ndv;
X_GAOLHS = GAOLHS(npoints, ndv, maxiter, maxstalliter, popsize);%GAOLHS抽样

1、在限定范围抽样

(1)LHS

3.56160546861497	4.13444987304314	8.40777901990457
7.56802830455472	7.09267199095473	0.371967723696977
0.876211034143974	9.45225031978424	2.33170416235385
5.49104414252227	0.322064092441767	7.33971145788749
8.69849041404605	3.43078769064378	5.37088724880758

(2)TPLHS

5	0	0
0	7.50	2.50
7.50	10	5
2.50	2.50	7.50
10	5	10

2、在0-1范围抽样

(1)LHS

0	0	0.750000000000000
1	0.250000000000000	0.250000000000000
0.750000000000000	0.750000000000000	0.500000000000000
0.250000000000000	1	1
0.500000000000000	0.500000000000000	0

(2)GAOLHS

0.750000000000000	0.750000000000000	1
1	0.250000000000000	0.500000000000000
0	0.500000000000000	0.750000000000000
0.500000000000000	1	0.250000000000000
0.250000000000000	0	0

(3)ESEAOLHS

0.500000000000000	0.750000000000000	0
1	0.500000000000000	0.750000000000000
0	0.250000000000000	0.500000000000000
0.250000000000000	1	1
0.750000000000000	0	0.250000000000000

三、代码获取

1.阅读首页置顶文章
2.关注CSDN
3.根据自动回复消息,回复“100期”以及相应指令,即可获取对应下载方式。

这篇关于【MATLAB第100期】基于MATLAB的多种改进拉丁超立方LHS数据抽样方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/796007

相关文章

Java利用JSONPath操作JSON数据的技术指南

《Java利用JSONPath操作JSON数据的技术指南》JSONPath是一种强大的工具,用于查询和操作JSON数据,类似于SQL的语法,它为处理复杂的JSON数据结构提供了简单且高效... 目录1、简述2、什么是 jsONPath?3、Java 示例3.1 基本查询3.2 过滤查询3.3 递归搜索3.4

SpringBoot日志配置SLF4J和Logback的方法实现

《SpringBoot日志配置SLF4J和Logback的方法实现》日志记录是不可或缺的一部分,本文主要介绍了SpringBoot日志配置SLF4J和Logback的方法实现,文中通过示例代码介绍的非... 目录一、前言二、案例一:初识日志三、案例二:使用Lombok输出日志四、案例三:配置Logback一

Python实现无痛修改第三方库源码的方法详解

《Python实现无痛修改第三方库源码的方法详解》很多时候,我们下载的第三方库是不会有需求不满足的情况,但也有极少的情况,第三方库没有兼顾到需求,本文将介绍几个修改源码的操作,大家可以根据需求进行选择... 目录需求不符合模拟示例 1. 修改源文件2. 继承修改3. 猴子补丁4. 追踪局部变量需求不符合很

mysql出现ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘localhost‘ (10061)的解决方法

《mysql出现ERROR2003(HY000):Can‘tconnecttoMySQLserveron‘localhost‘(10061)的解决方法》本文主要介绍了mysql出现... 目录前言:第一步:第二步:第三步:总结:前言:当你想通过命令窗口想打开mysql时候发现提http://www.cpp

MySQL大表数据的分区与分库分表的实现

《MySQL大表数据的分区与分库分表的实现》数据库的分区和分库分表是两种常用的技术方案,本文主要介绍了MySQL大表数据的分区与分库分表的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有... 目录1. mysql大表数据的分区1.1 什么是分区?1.2 分区的类型1.3 分区的优点1.4 分

Mysql删除几亿条数据表中的部分数据的方法实现

《Mysql删除几亿条数据表中的部分数据的方法实现》在MySQL中删除一个大表中的数据时,需要特别注意操作的性能和对系统的影响,本文主要介绍了Mysql删除几亿条数据表中的部分数据的方法实现,具有一定... 目录1、需求2、方案1. 使用 DELETE 语句分批删除2. 使用 INPLACE ALTER T

MySQL INSERT语句实现当记录不存在时插入的几种方法

《MySQLINSERT语句实现当记录不存在时插入的几种方法》MySQL的INSERT语句是用于向数据库表中插入新记录的关键命令,下面:本文主要介绍MySQLINSERT语句实现当记录不存在时... 目录使用 INSERT IGNORE使用 ON DUPLICATE KEY UPDATE使用 REPLACE

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

Redis 中的热点键和数据倾斜示例详解

《Redis中的热点键和数据倾斜示例详解》热点键是指在Redis中被频繁访问的特定键,这些键由于其高访问频率,可能导致Redis服务器的性能问题,尤其是在高并发场景下,本文给大家介绍Redis中的热... 目录Redis 中的热点键和数据倾斜热点键(Hot Key)定义特点应对策略示例数据倾斜(Data S

Java 中实现异步的多种方式

《Java中实现异步的多种方式》文章介绍了Java中实现异步处理的几种常见方式,每种方式都有其特点和适用场景,通过选择合适的异步处理方式,可以提高程序的性能和可维护性,感兴趣的朋友一起看看吧... 目录1. 线程池(ExecutorService)2. CompletableFuture3. ForkJoi