【AUV优化】使用加权法、ε

您所在的位置:网站首页 MATLAB求和函数单目标优化 【AUV优化】使用加权法、ε

【AUV优化】使用加权法、ε

2024-07-16 11:55| 来源: 网络整理| 查看: 265

 💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现

💥1 概述

AUV(自主水下车辆)无人机的优化研究是针对提高其性能、效率和功能的研究。以下是可能涉及到的一些优化方面:

1. **航行性能优化**:包括提高AUV的航行速度、操纵性和稳定性,以适应不同水下环境的要求。

2. **能源管理和续航能力**:设计更高效的电池系统、节能型的动力系统或者开发能够自主充电的技术,以延长AUV的续航时间。

3. **传感器和数据处理优化**:改进AUV的感知系统,包括声纳、相机、水质传感器等,以提高数据采集的准确性和效率。

4. **路径规划和自主控制**:开发智能算法和软件,使AUV能够根据任务需求自主规划航行路径,并实时调整以适应环境变化。

5. **通信和数据传输优化**:提高AUV与地面控制中心或其他无人系统之间的通信效率和稳定性,以确保数据的及时传输和命令的准确执行。

6. **结构设计和材料优化**:优化AUV的结构设计和选用轻量化、耐腐蚀的材料,以提高其耐用性和适应不同深度和水下压力的能力。

7. **环境适应能力**:使AUV具备在不同水下环境中适应和应对各种挑战的能力,包括深海、海洋底部、河流等。

8. **自主任务执行和协作能力**:使AUV能够自主执行各种任务,如海底地图绘制、水下资源勘察、环境监测等,并具备与其他AUV或人类操作者协作的能力。

### 1. 加权法(Weighted Sum Method): 加权法是多目标优化中常见的方法之一,它将多个目标函数线性组合成一个单一的目标函数,通过调整权重来平衡各个目标的重要性。在权重为0/1时,可以退化为单目标优化问题。加权法的优点在于简单易行,但缺点是对于不同问题需要事先确定好权重,可能导致结果偏离真实最优解。

### 2. ε-约束法(ε-Constrained Method): ε-约束法通过引入额外的约束条件,将多个目标函数优化问题转化为单目标优化问题的一种方法。通过逐步调整ε值,可以得到一系列不同的解,形成帕累托前沿(Pareto Front)。ε-约束法的优点在于能够直接找到帕累托前沿,但在高维问题中计算复杂度较高。

### 3. 全局准则法(Global Criterion Method): 全局准则法是一种综合考虑多个目标函数的优化方法,它尝试在一个统一的框架下直接对多个目标进行优化。这种方法通常需要定义一些全局准则来指导优化过程,例如最小化所有目标函数的最大值或最小值。全局准则法的优点在于能够同时考虑多个目标,但实现起来可能较为复杂。

### 4. Lq范数的理想点研究: Lq范数是向量空间中的一种范数,可以用来衡量向量的大小。在多目标优化中,Lq范数常被用来定义理想点(Ideal Point),即帕累托前沿上最理想的解。通过研究Lq范数的性质和计算方法,可以更好地理解多目标优化问题,并设计出更有效的优化算法。

### 可能的文章研究方向: 1. **基于加权法、ε-约束法和全局准则法的多目标优化比较研究**:分析这三种方法在不同问题上的优缺点,以及它们的适用范围和性能表现。

2. **基于Lq范数的理想点研究**:探讨不同的Lq范数在多目标优化中的作用,以及如何有效地计算和利用理想点来指导优化过程。

3. **多目标优化中的自适应方法研究**:结合加权法、ε-约束法和全局准则法,设计出能够自适应调整权重或ε值的优化算法,以提高优化的效率和性能。

4. **应用案例分析**:选择具体的应用场景,如工程优化、金融投资组合优化等,利用以上方法进行实际案例分析,验证其在实践中的有效性和实用性。

以上是一些可能的研究方向,希望能够为你提供一些启发。在选择具体的研究方向时,可以根据自己的兴趣和背景做进一步的深入探索。

其中许多是子函数。在这里,我们解释了在我们的项目演示和报告中显示的结果和图表的复制所需运行的脚本(不包括单调性分析和参数研究)。** 使用加权法、ε-约束法和全局准则法的多目标优化脚本在权重或ε为0/1时包括单目标优化,以及用于计算Lq范数的理想点。运行GridEval.m - 评估跨越变量整个范围的3D立方网格的点。仅保存满足所有约束条件的点,即可行区域。运行PlotGridEval.m - 根据两个目标和设计空间和准则空间中的Lq范数(1、2和Inf)的颜色绘制可行区域的图表。这将花费很长时间。运行weighted_fmincon_Script - 基于内置的MATLAB函数fmincon进行单目标约束优化的自定义加权法多目标优化方法。运行weighted_PenaltyMethod - 基于自定义惩罚法进行单目标约束优化的自定义加权法多目标优化方法,使用内置的MATLAB函数fminunc进行单目标无约束优化。运行weighted_PenaltyMethod2 - 与前一个相同,但使用不同的起始点。运行weighted_AugmentedLagranianMethod - 基于自定义ALM方法进行单目标约束优化的自定义加权法多目标优化方法,使用内置的MATLAB函数fminunc进行无约束优化。运行EpsilonConstrainedMethod_OptDrag - 基于内置的MATLAB函数fmincon进行单目标约束优化的自定义ε-约束法多目标优化方法。在约束体积的同时优化阻力。运行EpsilonConstrainedMethod_OptVolume - 与前一个相同,但在约束阻力的同时优化体积。运行fminimax_script - 使用内置的MATLAB函数fminmax进行多目标优化。运行带q = 1的GlobalCriterionMethod - 基于内置的MATLAB函数fmincon进行单目标约束优化的自定义全局准则法多目标优化方法。运行带q = 2的GlobalCriterionMethod - 与前一个相同,但q = 2。运行带q = Inf的GlobalCriterionMethod - 与前一个相同,但q = Inf。运行Compile_All_Opt - 保存来自不同方法的所有最优值。运行Plot_All_Opt_wColors - 创建所有最优值的图表,使用各种颜色/标记。运行isolate_Pareto - 创建仅显示准则空间中帕累托前沿的图表。运行Plot_Opt_on_Feas - 创建显示设计空间中帕累托前沿点的图表。

📚2 运行结果

​​​

运行结果图比较多,后面的运行结果去掉Matlab图框。

部分代码:

%% Instructions: %       Verify that all of the following files exist before hitting 'Run': %           'GRID_results.mat' %           'ALL_results.mat' %           'fmincon_results.mat' %           'penalty_results.mat' %           'penalty2_results.mat' %           ('ALM_results.mat') %           'fminimax_results.mat' %           'Lq1_results.mat' %           'Lq2_results.mat' %           'LqInf_results.mat' %           'EC_results.mat' %           'EC2_results.mat' %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% clean up close all clear clc

[d_L, d_U, t_L, t_U, L_L, L_U, ~, ~] = set_Lims();

%% GRID GRID_res = load('GRID_results.mat'); f1_s_GRID = GRID_res.f1_s; f2_s_GRID = GRID_res.f2_s;

%% all "optima" ALL_res = load('ALL_results.mat'); X = ALL_res.X; f1 = ALL_res.f1; f2 = ALL_res.f2; f1_s = ALL_res.f1_s; f2_s = ALL_res.f2_s; Lq1 = ALL_res.Lq1; Lq2 = ALL_res.Lq2; LqInf = ALL_res.LqInf;

% select the Lq1 norm from the full set of all optima [~, idx] = min(Lq1); X_LQ1 = X(idx, :); f1_LQ1 = f1(idx); f2_LQ1 = f2(idx); f1_s_LQ1 = f1_s(idx); f2_s_LQ1 = f2_s(idx);

% select the Lq2 norm from the full set of all optima [~, idx] = min(Lq2); X_LQ2 = X(idx, :); f1_LQ2 = f1(idx); f2_LQ2 = f2(idx); f1_s_LQ2 = f1_s(idx); f2_s_LQ2 = f2_s(idx);

% select the LqInf norm from the full set of all optima [~, idx] = min(LqInf); X_LQinf = X(idx, :); f1_LQinf = f1(idx); f2_LQinf = f2(idx); f1_s_LQinf = f1_s(idx); f2_s_LQinf = f2_s(idx);

% extract good and bad values from all optima f1_g    = min(f1); f1_b    = max(f1); f2_b    = min(f2); f2_g    = max(f2);

%% fmincon fmincon_res = load('fmincon_results.mat'); X_fmincon = fmincon_res.X; f1_fmincon = fmincon_res.f1; f2_fmincon = fmincon_res.f2;

% re-normalize according to full set of optima for i = 1:max(size(f1_fmincon))     f1_s_fmincon(i,:) = (f1_fmincon(i) - f1_g)/(f1_b - f1_g);     f2_s_fmincon(i,:) = (f2_fmincon(i) - f2_g)/(f2_b - f2_g); end

%% Penalty Method penalty_res = load('penalty_results.mat'); X_penalty = penalty_res.X; f1_penalty = penalty_res.f1; f2_penalty = penalty_res.f2;

% re-normalize according to full set of optima for i = 1:max(size(f1_penalty))     f1_s_penalty(i,:) = (f1_penalty(i) - f1_g)/(f1_b - f1_g);     f2_s_penalty(i,:) = (f2_penalty(i) - f2_g)/(f2_b - f2_g); end

% second chosen start point penalty2_res = load('penalty2_results.mat'); X_penalty2 = penalty2_res.X; f1_penalty2 = penalty2_res.f1; f2_penalty2 = penalty2_res.f2;

% re-normalize according to full set of optima for i = 1:max(size(f1_penalty2))     f1_s_penalty2(i,:) = (f1_penalty2(i) - f1_g)/(f1_b - f1_g);     f2_s_penalty2(i,:) = (f2_penalty2(i) - f2_g)/(f2_b - f2_g); end

% combine both sets of the penalty method results X_penalty = [X_penalty; X_penalty2]; f1_penalty = [f1_penalty; f1_penalty2]; f2_penalty = [f2_penalty; f2_penalty2]; f1_s_penalty = [f1_s_penalty; f1_s_penalty2]; f2_s_penalty = [f2_s_penalty; f2_s_penalty2];

% %% Augmented Lagrangian Method (ALM) % ALM_res = load('ALM_results.mat'); % X_ALM = ALM_res.X; % f1_ALM = ALM_res.f1; % f2_ALM = ALM_res.f2; %  %  % for i = 1:max(size(f1_ALM)) %     f1_s_ALM(i,:) = (f1_ALM(i) - f1_g)/(f1_b - f1_g); %     f2_s_ALM(i,:) = (f2_ALM(i) - f2_g)/(f2_b - f2_g); % end

%% fminimax fminimax_res = load('fminimax_results.mat'); X_fminimax = fminimax_res.X_opt; f1_fminimax = fminimax_res.f1; f2_fminimax = fminimax_res.f2;

% re-normalize according to full set of optima for i = 1:max(size(f1_fminimax))     f1_s_fminimax(i,:) = (f1_fminimax(i) - f1_g)/(f1_b - f1_g);     f2_s_fminimax(i,:) = (f2_fminimax(i) - f2_g)/(f2_b - f2_g); end

%% Global Criterion (Lq) Lq1_res = load('Lq1_results.mat'); X_Lq1 = Lq1_res.X_opt; f1_Lq1 = Lq1_res.f1; f2_Lq1 = Lq1_res.f2;

% re-normalize according to full set of optima for i = 1:max(size(f1_Lq1))     f1_s_Lq1(i,:) = (f1_Lq1(i) - f1_g)/(f1_b - f1_g);     f2_s_Lq1(i,:) = (f2_Lq1(i) - f2_g)/(f2_b - f2_g); end

Lq2_res = load('Lq2_results.mat'); X_Lq2 = Lq2_res.X_opt; f1_Lq2 = Lq2_res.f1; f2_Lq2 = Lq2_res.f2;

% re-normalize according to full set of optima for i = 1:max(size(f1_Lq2))     f1_s_Lq2(i,:) = (f1_Lq2(i) - f1_g)/(f1_b - f1_g);     f2_s_Lq2(i,:) = (f2_Lq2(i) - f2_g)/(f2_b - f2_g); end

LqInf_res = load('LqInf_results.mat'); X_LqInf = LqInf_res.X_opt; f1_LqInf = LqInf_res.f1; f2_LqInf = LqInf_res.f2;

% re-normalize according to full set of optima for i = 1:max(size(f1_LqInf))     f1_s_LqInf(i,:) = (f1_LqInf(i) - f1_g)/(f1_b - f1_g);     f2_s_LqInf(i,:) = (f2_LqInf(i) - f2_g)/(f2_b - f2_g); end

% combine all results obtained by the Global Criterion method X_Lq = [X_Lq1; X_Lq2; X_LqInf]; f1_Lq = [f1_Lq1; f1_Lq2; f1_LqInf]; f2_Lq = [f2_Lq1; f2_Lq2; f2_LqInf]; f1_s_Lq = [f1_s_Lq1; f1_s_Lq2; f1_s_LqInf]; f2_s_Lq = [f2_s_Lq1; f2_s_Lq2; f2_s_LqInf];

%% Epsilon Constrained (EC) % optimizing for drag while constraining volume EC_res = load('EC_results.mat'); X_EC = EC_res.X; f1_EC = EC_res.f1; f2_EC = EC_res.f2;

% re-normalize according to full set of optima for i = 1:max(size(f1_EC))     f1_s_EC(i,:) = (f1_EC(i) - f1_g)/(f1_b - f1_g);     f2_s_EC(i,:) = (f2_EC(i) - f2_g)/(f2_b - f2_g); end

% optimizing for volume, while constraining drag EC2_res = load('EC2_results.mat'); X_EC2 = EC2_res.X; f1_EC2 = EC2_res.f1; f2_EC2 = EC2_res.f2;

% re-normalize according to full set of optima for i = 1:max(size(f1_EC2))     f1_s_EC2(i,:) = (f1_EC2(i) - f1_g)/(f1_b - f1_g);     f2_s_EC2(i,:) = (f2_EC2(i) - f2_g)/(f2_b - f2_g); end

% combine both sets of optima obtained by the epsilon constrained method X_EC = [X_EC; X_EC2];

🎉3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

[1]王宏健,熊伟,WANG,等.基于蚁群优化的AUV全局路径规划研究(英文)[J].Journal of Marine Science and Application, 2009, 8(001):58-64.DOI:CNKI:SUN:HEBD.0.2009-01-013.

[2] Wang H J , Xiong W .基于蚁群优化的AUV全局路径规划研究[J].Journal of Marine ence and Application, 2009, 8(1):58-64.DOI:10.1007/s11804-009-8002-7.

[3]吴亚军,雷江涛,王珲.基于遗传算法的AUV壳体环肋模糊可靠性优化设计[J].鱼雷技术, 2006, 14(3):4.DOI:10.3969/j.issn.1673-1948.2006.03.005.

[4]刘彩云.面向多目标遗传优化的AUV概念设计[D].哈尔滨工程大学[2024-04-09].DOI:CNKI:CDMD:2.1014.132505.

🌈4 Matlab代码实现


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3