• 大小: 5KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-12
  • 语言: Matlab
  • 标签: vicsek  multi-agent  

资源简介

vicsek模型的matlab仿真,有动态作图的展示。研究速度一致性对多智能体协同的影响。

资源截图

代码片段和文件信息


%% vicsek模型仿真程序
% 参考论文:Novel type of phase transition in a system of self-driven particles[J]. Physical Review Letters 1995 
% 作者:宁子安
% 时间:2019.8.31

%% 注释说明
% 全局变量:
% Main_Params,全局变量,所有的选项和选填参数
% Agent_State,保存所有agent的状态量、历史状态量(用于时延的仿真)
% Agent_Noise,这个变量一开始定义之后,就不再变化了。所有的不确定性定义,包括内部和外部噪声,时延,最大加速度,最大速度等惯性因素,底层控制的调节时间
% Algorithm_Command,算法的输出命令
% Visual_State,画图的变量

% 函数功能说明:
% agent_creation,输入:Main_Params,输出:Agent_State,功能:根据Main_Params提供的要求,创建agents,并且初始化他们的状态
% agent_update,输入:Main_Params、Agent_State、Agent_Noise、Algorithm_Command,输出:Agent_State,功能:根据算法计算出的命令,根据指定的系统阶数,更新agent状态,并且添加噪声等不确定性
%
% algorithm,使用算法得出控制指令。输入:Main_Params、Agent_State。输出:Algorithm_Command
%
% visual_creation 创建环境,输出:Visual_State
% visual_clean,清空画图,输入:Visual_State,输出:Visual_State
% visual_plot_agent,画出所有的agent,输入:Visual_StateAgent_StateMain_Params,k_iters输出:Visual_State


clear all
close all
clc

addpath(‘./agent‘);
addpath(‘./algorithm‘);
addpath(‘./visual‘);

%% global parameter\switch
% 数组定义
Main_Params=[]; % global parameters
% Agent_State=[]; % 保存所有agent的状态量包含实际状态和测量的状态(内部噪声)
Agent_Noise=[]; % 所有的不确定性定义
Algorithm_Command=[]; % 算法输出的命令,包含是速度命令还是加速度命令,三个方向的命令。
% Visual_State=[]; % 画图的变量

% 初始化
Main_Params.total_steps = 200; % 总的循环次数
Main_Params.delta_t = 1; % step time
Main_Params.agent_number = 300; % 无人机数量
Main_Params.agent_creation_size = 5; % 创建无人机的限制区域大小。如果是圆形就是半径;如果是正方形,就是边长;
Main_Params.agent_radius = 1; % 邻域范围
Main_Params.visual_agent_color = [0 0 0]; % 画图时,箭头的填充颜色.[1 1 0]黄色

Main_Params.agent_velocity_scale = 0.03; % agent的固定速度大小
Main_Params.visual_last_N_steps = 0.12; % 最后显示的步数跟
Main_Params.visual_arrow_scale = 0.02;

Agent_Noise.outside_direction_Noise = 2; % 外部噪声,对速度方向的噪声;均匀分布(-a/2a/2)

%% 
Agent_State = agent_creation(Main_Params);
Visual_State = visual_creation(Main_Params);

for k_iters = 1 : Main_Params.total_steps
    Visual_State = visual_clean(Visual_State);
    Visual_State = visual_plot_agent(Visual_StateAgent_StateMain_Paramsk_iters);
    Algorithm_Command = algorithm(Main_ParamsAgent_State);
    Agent_State = agent_update(Main_Params Agent_State Agent_Noise Algorithm_Command);
    
    pause(0.01);
    
end










 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        416  2019-09-10 11:22  vicsek\agent\agent_creation.m

     文件        519  2019-09-09 19:19  vicsek\agent\agent_update.m

     文件        971  2019-09-09 20:00  vicsek\algorithm\algorithm.m

     文件       2724  2019-09-11 18:11  vicsek\main.m

     文件        112  2019-09-09 18:06  vicsek\visual\visual_clean.m

     文件        885  2019-09-10 11:23  vicsek\visual\visual_creation.m

     文件       3402  2019-09-10 11:16  vicsek\visual\visual_plot_agent.m

     目录          0  2019-09-09 18:59  vicsek\agent

     目录          0  2019-09-09 20:04  vicsek\algorithm

     目录          0  2019-09-10 11:24  vicsek\visual

     目录          0  2019-09-11 18:45  vicsek

----------- ---------  ---------- -----  ----

                 9029                    11


评论

共有 条评论