-
大小: 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
评论
共有 条评论