动物集群运动行为模型-8(4)

2019-03-11 08:29

附录1

function boid1(n,eta) %generates boids in a field

n=input('input n ');eta=input('input eta'); range =0.2; speed =0.03; TIME = 300; density =10; RUNS = 1;

fieldsize = sqrt(n/density); pos = fieldsize*rand(n,2); heading = 2*pi*rand(n,1); relposX = zeros(n); relposY = zeros(n); neighbours = zeros(n); RelHead = zeros(n,1); B = zeros(n,1);

newHeading = zeros(n,1); newPos = zeros(n,2); meanHeading = zeros(TIME,1); deviationMean = zeros(n,TIME); for run=1:RUNS for time=1:TIME for i=1:n for j=1:n

relposX(i,j) = abs(pos(i,1) - pos(j,1)); relposY(i,j) = abs(pos(i,2) - pos(j,2));

if(sqrt(relposX(i,j)^2 + relposY(i,j)^2) <= range) neighbours(i,j)=1; end end end for i=1:n for j=1:n

if(neighbours(i,j)==1)

relheading(i,j) = heading(j,1)-heading(i,1); end end end

RelHead = sum(relheading,2); for i=1:n

whileRelHead(i,1) < -pi

RelHead(i,1) = RelHead(i,1) + pi;

16

end

whileRelHead(i,1) > pi

RelHead(i,1) = RelHead(i,1) - pi; end end

noise = (rand(n,1)*eta) -eta/2;

newHeading(:,1) = heading(:,1) + RelHead(:,1)./sum(neighbours,2) + noise(:,1);

newPos(:,1) = pos(:,1) + cos(newHeading(:,1))*speed; newPos(:,2) = pos(:,2) + sin(newHeading(:,1))*speed; for k=1:n

whilenewPos(k,1) < 0

newPos(k,1) = newPos(k,1) + fieldsize; end

whilenewPos(k,1) >= fieldsize

newPos(k,1) = newPos(k,1) - fieldsize; end

whilenewPos(k,2) < 0

newPos(k,2) = newPos(k,2) + fieldsize; end

whilenewPos(k,2) >= fieldsize

newPos(k,2) = newPos(k,2) - fieldsize; end end

heading = newHeading; pos = newPos;

meanHeading(time,1) = mean(heading,1);

deviationMean(time,1) = mean(abs(meanHeading(time,1)-heading(:,1))); scatter(pos(:,1),pos(:,2), 'xr');

axis([0 fieldsize 0 fieldsize]); xlabel(time ); M(time) = getframe; end

runDev(:,run) = deviationMean(:,1); end

%plot(runDev)

movie2avi(M,'boidtest.avi', 'quality',100);

附录2

function boid1(n,eta) %generates boids in a field n=input('input n'); eta=input('input eta'); range =0.2;

17

speed =0.05; TIME = 300; density =10; RUNS = 1;

fieldsize = sqrt(n/density); pos = fieldsize*rand(n,3); heading = 2*pi*rand(n,1); relposX = zeros(n); relposY = zeros(n); relposZ = zeros(n); neighbours = zeros(n); RelHead = zeros(n,1); B = zeros(n,1);

newHeading = zeros(n,1); newPos = zeros(n,3); meanHeading = zeros(TIME,1); deviationMean = zeros(n,TIME); for run=1:RUNS for time=1:TIME for i=1:n for j=1:n

relposX(i,j) = abs(pos(i,1) - pos(j,1)); relposY(i,j) = abs(pos(i,2) - pos(j,2)); relposZ(i,j) = abs(pos(i,3) - pos(j,3));

if(sqrt(relposX(i,j)^2 + relposY(i,j)^2+relposZ(i,j)^2) <= range) neighbours(i,j)=1; end end end for i=1:n for j=1:n

if(neighbours(i,j)==1)

relheading(i,j) = heading(j,1)-heading(i,1); end end end

RelHead = sum(relheading,2); for i=1:n

whileRelHead(i,1) < -pi

RelHead(i,1) = RelHead(i,1) + pi; end

whileRelHead(i,1) > pi

RelHead(i,1) = RelHead(i,1) - pi; end

18

end

noise = (rand(n,1)*eta) -eta/2;

newHeading(:,1) = heading(:,1) + RelHead(:,1)./sum(neighbours,2) + noise(:,1);

newPos(:,1) = pos(:,1) + cos(newHeading(:,1))*speed; newPos(:,2) = pos(:,2) + sin(newHeading(:,1))*speed; newPos(:,3) = pos(:,3) + tan(newHeading(:,1))*speed;

for k=1:n

whilenewPos(k,1) < 0

newPos(k,1) = newPos(k,1) + fieldsize; end

whilenewPos(k,1) >= fieldsize

newPos(k,1) = newPos(k,1) - fieldsize; end

whilenewPos(k,2) < 0

newPos(k,2) = newPos(k,2) + fieldsize; end

whilenewPos(k,2) >= fieldsize

newPos(k,2) = newPos(k,2) - fieldsize; end

whilenewPos(k,3) < 0

newPos(k,3) = newPos(k,3) + fieldsize; end

whilenewPos(k,3) >= fieldsize

newPos(k,3) = newPos(k,3) - fieldsize; end end

heading = newHeading; pos = newPos;

meanHeading(time,1) = mean(heading,1);

deviationMean(time,1) = mean(abs(meanHeading(time,1)-heading(:,1))); scatter3(pos(:,1),pos(:,2),pos(:,3) ,'*r'); axis([0 fieldsize 0 fieldsize 0 fieldsize]); xlabel(time );ylabel('Y');zlabel('Z'); M(time) = getframe; end

runDev(:,run) = deviationMean(:,1); end

%plot(runDev)

movie3avi(M,'boidtest.avi', 'quality',100);

附录3

19

function boid1(n,eta) %generates boids in a field

n=input('input n ');eta=input('input eta'); range =0.2; speed =0.03; TIME = 300; density =10; RUNS = 1; m=3;

fieldsize = sqrt(n/density); pos2=fieldsize*rand(m,2); heading2=2*pi*rand(m,2); elposX2 = zeros(m); relposY2 = zeros(m); neighbours2 = zeros(m); RelHead2 = zeros(m,1); B = zeros(m,1);

newHeading2= zeros(m,1); newPos2 = zeros(m,2); meanHeading2= zeros(TIME,1); deviationMean2 = zeros(m,TIME); for run=1:RUNS

for time=1:TIME for i=1:m for j=1:m

relposX2(i,j) = abs(pos2(i,1) - pos2(j,1)); relposY2(i,j) = abs(pos2(i,2) - pos2(j,2));

if(sqrt(relposX2(i,j)^2 + relposY2(i,j)^2) <= range) neighbours2(i,j)=1; end end end for i=1:m for j=1:m

if(neighbours2(i,j)==1)

relheading2(i,j) = heading2(j,1)-heading2(i,1); end end end

RelHead2 = sum(relheading2,2); for i=1:m

while RelHead2(i,1) < -pi

20


动物集群运动行为模型-8(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:分类教育分层教学人才培养模式的探索研究

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: