【MATLAB第67期】# 源码分享 | 基于MATLAB的morris全局敏感性分析

【MATLAB第67期】# 源码分享 | 基于MATLAB的morris全局敏感性分析

一、代码展示

clear all
npoint=100;%在分位数超空间中要采样的点数(计算次数iter=npoint*(nfac+1)
nfac=20;%研究函数的不确定因素数量
[mu, order] = morris_sa1(@(x)test_function(x), nfac, npoint)

 for t=1:size(mu,2)
W(1,t)=mu(1,t)/sum(mu);
end
figure()
bar(W)
grid on
xlabel('Feature index')
ylabel('Feature weight')

%输出
%1)μ:
%每个因素,按降序排列。
%2)order:各因素的指标。考虑修正最后的因素,
%那些“mu”非常接近于零的数。


function [ mu, order ] = morris_sa1( studied_function, nfac, npoint )

%
%输出
%1)μ:
%每个因素,按降序排列。
%2)顺序:各因素的指标。考虑修正最后的因素,
%那些“mu”非常接近于零的人。
delta=1/npoint;
mini=delta/2;
maxi=mini+delta*(npoint-1);

coord = 0:npoint-1;
for i=1:nfac
    points(1:npoint,i) = coord(randperm(length(coord)));
end
points = points/(npoint-1)*(maxi-mini)+mini;


for i=1:npoint
    table_outputs(i,1) = studied_function(points(i,:)); % Output at the sampled point.
    for j=1:nfac
        if points(i,j) < 0.5 % If the coordinate is smaller than 0.5, a positive variation is applied
            table_outputs(i,1+j) = studied_function([points(i,1:j-1) points(i,j)+0.5 points(i,j+1:nfac)]); % Output after the variation of the j-th factor.
            table_ee(i,j) = (table_outputs(i,1+j)-table_outputs(i,1))/0.5; % Elementary effect of the j-th factor.
        else % If the coordinate if larger than 0.5, a negative variation is applied
            table_outputs(i,1+j) = studied_function([points(i,1:j-1) points(i,j)-0.5 points(i,j+1:nfac)]);
            table_ee(i,j) = (table_outputs(i,1+j)-table_outputs(i,1))/(-0.5);
        end
    end
end

% Estimation of the factors influence with the average of the absolute
% values of the elementary effects
for j=1:nfac
    mu_temp(j) = mean(abs(table_ee(:,j)));
end

[mu, order] = sort(mu_temp,'descend'); % Ordering.

end

目标函数

a = [100 0 100 100 100 100 1 10 0 0 9 0 100 100 4 100 100 7 100 2];
alpha = [1 4 1 1 1 1 0.4 3 0.8 0.7 2 1.3 1 1 0.3 1 1 1.5 1 0.6];
delt = [0.2942 0.2560 0.3004 0.5150 0.7723 0.4567 0.8390 0.1369 0.1558 0.4356 0.0257 0.3248 0.0718 0.9155 0.6877 0.5548 0.5835 0.8083 0.6309 0.8071];

for i=1:20
    y(i) = ((1+alpha(i))*abs(2*(X(i)+delt(i)-fix(X(i)+delt(i)))-1)^alpha(i)+a(i))/(1+a(i));
end

二、效果展示

在这里插入图片描述

三、代码获取

后台私信回复“67期”即可获取下载链接。

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: MATLAB Morris全局敏感性分析方法是一种用于评估模型输入参数对输出结果的影响程度的方法。它通过将参数值修改为不同的水平,并记录输出结果的变化来分析参数的重要性。 该方法基于Morris采样算法,该算法通过扰动输入参数的取值来快速估计敏感性。在MATLAB中,通过使用Global Sensitivity Analysis Toolbox(全局敏感性分析工具箱)中的函数来实施Morris全局敏感性分析。 这个方法有以下几个特点: 1. 不要求模型的全局数学函数形式或概率分布假设,因此适用于各种复杂模型。 2. 该方法能够同时处理连续变量和离散变量。 3. 使用Morris采样算法,可以在较少的采样次数下得到较为准确的敏感性指标。 实施Morris全局敏感性分析的步骤如下: 1. 选择感兴趣的输入参数和输入范围。 2. 根据选择的参数范围,选择合适的参数取样点数和取样水平数,令参数个数为p,取样点数为n,取样水平数为r。 3. 利用Morris采样算法生成取样点,并结合模型运行,记录相应输出结果。 4. 通过对取样点间距的排序,分析参数对模型输出结果的主要影响。 5. 根据Morris全局敏感性指标,计算每个参数的敏感性,指标越大表示该参数对输出结果的影响越大。 通过Morris全局敏感性分析,可以帮助研究人员确定模型中最重要的参数,从而提供有效的决策依据。此外,MATLAB还提供了其他一些全局敏感性分析方法,如Sobol分析和FAST分析,用于更全面地评估参数对模型输出的敏感性。 ### 回答2: Morris全局敏感性分析是一种常用于评估模型的输入变量对输出结果的影响程度的方法。它通过对输入变量进行随机扰动,观察输出结果的变化,从而判断不同输入变量的敏感性程度。 Matlab中提供了用于执行Morris全局敏感性分析的工具箱,可以帮助研究人员进行这种分析。这个工具箱提供了一系列函数,可以根据用户给定的输入参数范围和分辨率,生成一组随机采样点,并计算相应的模型输出。 该工具箱中最重要的函数是"Morris"函数,它可以执行Morris分析并生成相应的结果。这个函数需要输入用户自定义的模型函数,以及模型的输入参数范围、分辨率等信息。在执行分析后,"Morris"函数将返回包含敏感性指数和其它统计数据的结果结构体。 结果结构体包含几个重要的字段,包括元素敏感性(ElementaryEffect)、总体敏感性(TotalEffect)和标准差等。元素敏感性表示每个输入参数对输出结果的影响程度,总体敏感性则是所有输入参数的元素敏感性的平均值。标准差是用于评估结果的稳定性和可靠性的指标。 使用Matlab进行Morris全局敏感性分析,研究人员可以得到各个输入参数的敏感性指数,从而判断它们对模型输出结果的重要性。这些指数可以帮助研究人员识别关键的输入参数,优化模型的设计和参数选择,提高模型的可靠性和准确性。 ### 回答3: MATLAB Morris全局敏感性分析方法是一种用于评估输入参数对系统输出结果的敏感性的统计方法。它基于Morris采样设计和元分析,适用于单一输出的低维和中等维度的非线性、非光滑和复杂模型。 该方法通过随机地变化输入参数值,观察系统的输出结果,从而量化每个输入参数对系统输出的影响程度。具体步骤如下: 1. 设计采样:首先,根据输入参数的分布情况,生成一组随机采样点。采样点的数量通常较小,以降低计算成本。 2. 构建采样路径:对于每个采样点,按照某种规则选择相邻的参数值进行变化。采样路径主要用于评估参数的一阶效应。 3. 确定输出:根据采样路径和参数值,计算系统的输出结果。输出可以是某个目标函数的取值,也可以是系统的响应曲线。 4. 分析敏感性:使用Morris敏感度指标来评估参数的敏感性Morris敏感度指标包括一阶和总方差敏感度,分别反映参数的线性和非线性输入效应。 5. 元分析:对于较小的采样点数量,重复多次采样并计算敏感度指标的均值和置信区间,以提高可靠性。 MATLAB Morris全局敏感性分析方法的优点是简化了参数敏感性分析的复杂度和计算工作量,适用于中等维度的模型。然而,由于采样点数量较少,可能会存在评估结果的不确定性。因此,在实际应用中,需要结合其他敏感性分析方法进行综合评估,以获得更准确的结果。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

随风飘摇的土木狗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值