資源簡介
動物集群行為運動軌跡仿真,逃離捕食者的運動路徑仿真

代碼片段和文件信息
%實現功能:模擬魚群的集群,避敵,覓食行為,進行動畫演示
clear;clc;
N=50;???????????????%魚的數量50
Rn=1500;????????????%領域半徑
VV=30;??????????????%初始速度3.0
%a=3;???????????????%加速度0.3
Vsi=18;?????????????%反彈速度0.8
%魚的活動范圍
XRange=[-1000010000];???
YRange=[-1000010000];
VRan=[-5*pi/65*pi/6];
%(1)隨機產生魚的位置PF(xy)為位置集?
for?i=1:N
????PZ(i1)=XRange(1)+(XRange(2)-XRange(1))*rand;?%X坐標
????PZ(i2)=YRange(1)+(YRange(2)-YRange(1))*rand;?%Y坐標
????PF(i1)=PZ(i1);
????PF(i2)=PZ(i2);
????VZ(i1)=2*pi*rand;????????????????????????????%alpha?X速度方向
????VZ(i2)=2*pi*rand;????????????????????????????%beta?Y速度方向???
????VF(i1)=VZ(i1);
????VF(i2)=VZ(i2);
end
lam=[0.1?0.3?0.3?0.3];
%(2)判斷一條魚和其他魚之間的距離
%如果Rmin,Rmax %(2)搜索視野范圍內的魚,并統計個數
while?1
for?i=1:N
????cn=0;
????alsum=0;
????besum=0;
????for?j=1:N
????????if(i~=j)&&sqrt((PZ(i1)-PZ(j1))^2+(PZ(i2)-PZ(j2))^2)<=Rn
???????????????cn=cn+1;
???????????????alsum=alsum+VZ(i1);
???????????????besum=besum+VZ(i2);???????????
????????end?
????end
????if?cn~=0
????alsum=alsum/cn;
????besum=besum/cn;
????VF(i1)=alsum;
????VF(i2)=besum;
????end
????PF(i1)=PZ(i1)+VF(i4)*cos(VF(i1));
????PF(i2)=PZ(i2)+VF(i4)*cos(VF(i2));
????%是否越界
????if?PF(i1)XRange(2)?
??????VF(i1)=VF(i1)+pi;
????end
????if?PF(i2)YRange(2)
????????VF(i2)=VF(i2)+pi;
????end
????
????PF(i1)=PZ(i1)+VF(i4)*cos(VF(i1));
????PF(i2)=PZ(i2)+VF(i4)*cos(VF(i2));
end
TU1=plot3(PZ(:1)PZ(:2)‘.‘);
%更新魚的狀態
for?i=1:N
%實現功能:模擬魚群的集群,避敵,覓食行為,進行動畫演示
clear;clc;
N=50;???????????????%魚的數量50
Rn=1500;????????????%領域半徑
VV=30;??????????????%初始速度3.0
%a=3;???????????????%加速度0.3
Vsi=18;?????????????%反彈速度0.8
%魚的活動范圍
XRange=[-1000010000];???
YRange=[-1000010000];
VRan=[-5*pi/65*pi/6];
%(1)隨機產生魚的位置PF(xy)為位置集?
for?i=1:N
????PZ(i1)=XRange(1)+(XRange(2)-XRange(1))*rand;?%X坐標
????PZ(i2)=YRange(1)+(YRange(2)-YRange(1))*rand;?%Y坐標
????PF(i1)=PZ(i1);
????PF(i2)=PZ(i2);
????VZ(i1)=2*pi*rand;????????????????????????????%alpha?X速度方向
????VZ(i2)=2*pi*rand;????????????????????????????%beta?Y速度方向
????VF(i1)=VZ(i1);
????VF(i2)=VZ(i2);
????VF(i3)=VZ(i3);
????VF(i4)=VZ(i4);
end
lam=[0.1?0.3?0.3?0.3];
%(2)判斷一條魚和其他魚之間的距離
%如果Rmin,Rmax %(2)搜索視野范圍內的魚,并統計個數
while?1
for?i=1:N
????cn=0;
????alsum=0;
????besum=0;
????for?j=1:N
????????if(i~=j)&&sqrt((PZ(i1)-PZ(j1))^2+(PZ(i2)-PZ(j2))^2)<=Rn
???????????????cn=cn+1;
???????????????alsum=alsum+VZ(i1);
???????????????besum=besum+VZ(i2);
????????end?
????end
????if?cn~=0
????alsum=alsum/cn;
????besum=besum/cn;
????VF(i1)=alsum;
????VF(i2)=besum;
????end
????PF(i1)=PZ(i1)+VF(i4)*cos(VF(i1));
????PF(i2)=PZ(i2)+VF(i4)*cos(VF(i2));
????%是否越界
????if?PF(i1)XRange(2)?
??????VF(i1)=VF(i1)+pi;
????end
????if?PF(i2)YRange(2)
????????VF(i2)=VF(i2)+pi;
????end
???
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????3801??2018-04-16?11:07??魚群集群和被捕食代碼\test16.m
?????文件???????4066??2018-04-16?02:19??魚群集群和被捕食代碼\test16_1.m
?????文件???????5709??2018-04-16?14:03??魚群集群和被捕食代碼\test18.m
?????文件???????5811??2018-04-16?11:52??魚群集群和被捕食代碼\test18_1.m
?????文件???????5813??2018-04-16?11:53??魚群集群和被捕食代碼\test18_2.m
?????文件???????6545??2018-04-16?11:54??魚群集群和被捕食代碼\test18_3.m
?????文件????????333??2018-04-16?16:09??魚群集群和被捕食代碼\test4_1.m
?????文件????????326??2018-04-16?15:56??魚群集群和被捕食代碼\test4_3.m
?????文件????????996??2018-04-16?15:54??魚群集群和被捕食代碼\test9_1.m
?????文件???????1254??2018-04-16?01:51??魚群集群和被捕食代碼\test9_2.m
?????目錄??????????0??2018-04-20?10:34??魚群集群和被捕食代碼
-----------?---------??----------?-----??----
????????????????34654????????????????????11
評論
共有 條評論