优化算法——全局灵敏度分析算法(PAWN )(Matlab代码实现)

  💥💥💥💞💞💞欢迎来到本博客❤️❤️❤️💥💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
📝目前更新:🌟🌟🌟电力系统相关知识,期刊论文,算法,机器学习和人工智能学习。
🚀支持:🎁🎁🎁如果觉得博主的文章还不错或者您用得到的话,可以关注一下博主,如果三连收藏支持就更好啦!这就是给予我最大的支持!

📋📋📋本文目录如下:⛳️⛳️⛳️

目录

1 概述

2 使基于SWAT 的高参数模型的 PAWN 和 Sobol 敏感性分析方法的比较

3 Matlab代码实现

 

1 概述

大量参数是复杂环境模型的主要问题,因为它限制了它们的应用。因此,旨在识别模型的有影响和无影响参数的敏感性分析 (SA) 方法对于这些模型的有效校准至关重要。 SA 确实允许通过应用因子固定 (FF) 和因子优先级 (FP) 来减少校准过程中涉及的参数数量。在本文中,基于密度的全球敏感性分析 (GSA) 方法 -PAWN- 应用于土壤和水评估工具 (SWAT),这是一种高度参数化的水文模拟器。本研究的目的是将新开发的 PAWN 方法与 Sobol 方法进行比较,Sobol 方法是一种成熟且广泛使用的基于方差的 SA 方法。 PAWN 方法考虑整个模型输出分布来描述输出不确定性,而 Sobol 方法隐含地假设方差是用于此目的的充分指标。为此,使用PAWN和Sobol'方法,选择了比利时Zenne河SWAT模型的26个水量相关参数进行排名。此外,还从收敛性、参数排序结果的相关演变和所需的计算成本等方面对两种 SA 方法进行了评估和比较。

2 使基于SWAT 的高参数模型的 PAWN 和 Sobol 敏感性分析方法的比较

部分代码: 

subplot(331); ylabel('y'); hold on;box on;
subplot(334); ylabel('CDF'); hold on;  box on;
subplot(337); ylabel('KS'); hold on; xlabel('x_1'); box on;
subplot(338); xlabel('x_2'); hold on;box on;
subplot(339); xlabel('x_3'); hold on;box on;
for ind=1:length(lb)
    subplot(330+ind)
    plot(par_c(:,ind),y_c, 'xk', 'markersize', 2);
end

crit_c = [1.22,1.36,1.48,1.63,1.73,1.95]; % 0.1, 0.05, 0.025, 0.010, 0.005, 0.001
critval = crit_c(2) * sqrt((Nu+Nc)/(Nu*Nc));

for ind=1:length(lb)
    subplot(333+ind)
    plot([-100, 100], [1, 1], 'k--'); hold on
    plot(ci,ft((ind-1)*n+1:ind*n,:), 'color', [0.8,0.8,0.8]); ylim([0,1]);
    plot(ci,f, 'r:','linewidth',4); ylim([0,1.2])
    hold off
end

colData = linspace(0,n,n)'/n; colData = [colData colData colData];

for ind=1:length(lb)
    subplot(336+ind)
    [xtoplot, indices] = sort(xvals(ind,:));
    ytoplot = KS(ind, :); ytoplot = ytoplot(indices);
    plot([min(xvals(:)), max(xvals(:))], [critval,critval], 'k--'); hold on;
    plot(xtoplot, ytoplot, 'k');
    scatter(xtoplot, ytoplot, [],  colData, 'filled', 'markeredgecolor', 'k'); 
    ylim([0,1])
    hold off
end

subplot(331); ylabel('y'); hold on;box on;
subplot(334); ylabel('CDF'); hold on;  box on;
subplot(337); ylabel('KS'); hold on; xlabel('x_1'); box on;
subplot(338); xlabel('x_2'); hold on;box on;
subplot(339); xlabel('x_3'); hold on;box on;
for ind=1:length(lb)
    subplot(330+ind)
    plot(par_c(:,ind),y_c, 'xk', 'markersize', 2);
end

crit_c = [1.22,1.36,1.48,1.63,1.73,1.95]; % 0.1, 0.05, 0.025, 0.010, 0.005, 0.001
critval = crit_c(2) * sqrt((Nu+Nc)/(Nu*Nc));

for ind=1:length(lb)
    subplot(333+ind)
    plot([-100, 100], [1, 1], 'k--'); hold on
    plot(ci,ft((ind-1)*n+1:ind*n,:), 'color', [0.8,0.8,0.8]); ylim([0,1]);
    plot(ci,f, 'r:','linewidth',4); ylim([0,1.2])
    hold off
end

colData = linspace(0,n,n)'/n; colData = [colData colData colData];

for ind=1:length(lb)
    subplot(336+ind)
    [xtoplot, indices] = sort(xvals(ind,:));
    ytoplot = KS(ind, :); ytoplot = ytoplot(indices);
    plot([min(xvals(:)), max(xvals(:))], [critval,critval], 'k--'); hold on;
    plot(xtoplot, ytoplot, 'k');
    scatter(xtoplot, ytoplot, [],  colData, 'filled', 'markeredgecolor', 'k'); 
    ylim([0,1])
    hold off
end

 

3 Matlab代码实现

博客主页:@橘柑橙柠桔柚

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MATLAB中进行灵敏度分析可以使用以下步骤: 1. 首先,定义一个函数或者模型,该函数或模型代表了你要进行灵敏度分析的系统。 2. 使用MATLAB的优化工具箱或者统计工具箱中的函数,如sensitivity和sobolset,来计算灵敏度指标。这些函数可以帮助你计算系统对输入参数的响应程度。 3. 确定你要进行灵敏度分析的参数范围和步长。你可以使用linspace函数来生成一系列等间隔的参数值。 4. 对于每个参数值,调用你定义的函数或模型,并记录系统的输出结果。 5. 分析每个参数值对系统输出结果的影响。你可以使用图表或者统计分析方法来展示和解释结果。 在上述引用和引用中,包含了一些MATLAB代码示例,可以用于进行灵敏度分析。你可以根据你的具体需求和模型的复杂性,选择适合的方法和工具进行灵敏度分析。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [使用matlab进行灵敏性分析(附源代码)](https://blog.csdn.net/qq_45803923/article/details/117091363)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [优化算法——全局灵敏度分析算法PAWN )(Matlab代码实现)](https://blog.csdn.net/2201_75454341/article/details/128096909)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值