【飞行器】基于matlab蒙特卡洛和控制算法四旋翼无人机路径规划【含Matlab源码 1988期】

举报
海神之光 发表于 2022/07/19 22:40:19 2022/07/19
【摘要】 一、蒙特卡洛算法简介 1 蒙特卡洛算法定义 蒙特卡洛(Monte Carlo)方法,在渲染中,我们经常听到术语“蒙特卡洛”(通常缩写为MC)。但是这是什么意思?实际上,它所指的是一个非常简单的想法,蒙特...

一、蒙特卡洛算法简介

1 蒙特卡洛算法定义
蒙特卡洛(Monte Carlo)方法,在渲染中,我们经常听到术语“蒙特卡洛”(通常缩写为MC)。但是这是什么意思?实际上,它所指的是一个非常简单的想法,蒙特卡洛方法指的是一系列统计方法,这些方法本质上用于查找事物的解决方案,例如计算函数的期望值,或者对由于没有封闭形式而无法进行分析积分的函数进行积分。我们可以用该原理来解决不同的问题,并且针对这些问题中都可以关联不同的技术或算法。所有这些算法的共同点是它们使用随机(或随机)采样。

2 蒙特卡洛模拟法的原理
蒙特卡洛法(Monte Carlo)是统计试验计算方法,高斯正太分布的期望值µ决定函数分布位置,标准差σ决定函数分布幅度,其概率密度函数公式如下:
在这里插入图片描述
根据中心极限定理,当统计样本足够充足时,各独立同分布随机变量之和的分布趋近于高斯正态分布,且尺寸分布符合伯努利大数定律。因此,蒙特卡洛模拟法计算中所求数学期望即可通过函数f(x)的积分获取。

二、部分源代码

function [Data,Sim,Environment,Fail] = RunSim

% close all
% clearvars -except h GlobalTime Count Run Runs SaveFile
% clc

fprintf('-----------------------------------------------------\n')
fprintf('Simulation of an autonomous quadrotor vehicle\n')
fprintf('Murray L Ireland\n')
fprintf('September 2015\n')
fprintf('-----------------------------------------------------\n\n')

SimTime = tic;

% AGENTS ------------------------------------------------------------------

% Environment
Environment = cEnvironment;

% Quadrotors
Pos = [-1.8795 -2.5936 -0.2000]'; % Initial position (m)
Att = [0 0 0.9305]'; % Initial attitude (rad)
NumQuads = 1;
for i = 1:NumQuads
    Agents.Quad(i) = cQuadrotor(['Quad',num2str(i)],Environment,...
        'Pose',[Pos; Att]);
end

% Targets
NumTargets = 2;
TPos = [-1.6312 -1.3453 -0.05
         1.5878 -2.1132 -0.05
        -1.1280 -1.6814 -0.05]';
TAtt = [0 0 -1.6742
        0 0 -0.8256
        0 0  0.6004]';
Shapes = {'Cube','Ball','Pyramid'};
for i = 1:NumTargets
    Agents.Target(i) = cTarget(Shapes{i},Environment,'Pose');%,...
%         'Pose',[TPos(:,i); TAtt(:,i)]);
end

% SIMULATION ENGINE -------------------------------------------------------

% Simulation properties
t = 0;          % Initialise time (s)
tfin = 400;      % End time (s)
dt = 0.01;      % Solver increment (s)
tsamp = dt;    % Sample increment (s)
tsamp = 0.1;

% Initialise blackbox
Data = cBlackBox;

% Initialise
Sim = cSimEngine(Data,Environment,Agents,t,tfin,dt,tsamp);

% Simulation loop
fprintf('Running simulation...\n\n')
Data = Sim.SimLoop;
fprintf('\nSimulation complete\n')
fprintf('Time taken: %.2f s\n\n',toc(SimTime))

Fail = 0;
if abs(Data.Time(end) - tfin) < 2
    Fail = 1;
end

% Visualisations
Data.PlotData;

end



  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74

三、运行结果

在这里插入图片描述

四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1] 包子阳,余继周,杨杉.智能优化算法及其MATLAB实例(第2版)[M].电子工业出版社,2016.
[2]张岩,吴水根.MATLAB优化算法源代码[M].清华大学出版社,2017.
[3]王锋.基于蒙特卡洛模拟法的动车组裙板装配优化研究[J].中国设备工程. 2020,(06)

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

文章来源: qq912100926.blog.csdn.net,作者:海神之光,版权归原作者所有,如需转载,请联系作者。

原文链接:qq912100926.blog.csdn.net/article/details/125859258

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。