2018年认证杯SPSSPRO杯数学建模A题(第一阶段)海豚与沙丁鱼全过程文档及程序

本文主要是介绍2018年认证杯SPSSPRO杯数学建模A题(第一阶段)海豚与沙丁鱼全过程文档及程序,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

2018年认证杯SPSSPRO杯数学建模

探究海豚猎捕时沙丁鱼群的躲避运动模型

A题 海豚与沙丁鱼

原题再现:

  沙丁鱼以聚成大群的方式来对抗海豚的捕食。由于水下光线很暗,所以在距离较远时,海豚只能使用回声定位方法来判断鱼群的整体位置,难以分辨每个个体。鱼群的行动是有协调性的,在没有外部威胁或障碍物时,鱼群常常会聚成接近球形的形态。而当海豚接触甚至冲进鱼群,鱼群则会进行协同的躲避,所以不易在大鱼群中追踪一个目标。沙丁鱼的这种群体行为降低了其被海豚捕食的概率。
  第一阶段问题: 请你建立合理的数学模型来描述沙丁鱼群在遇到一条海豚捕食时的运动规律。

整体求解过程概述(摘要)

  沙丁鱼为细长的银色小型鱼,游泳迅速,没有外部威胁时鱼群常聚成接近球形的形态,而当捕食者进攻时会进行协同的躲避,从而降低其被捕食的概率。本文基于沙丁鱼群遭遇一条海豚捕食时的情景,研究沙丁鱼群对应的运动规律。考虑到海豚和沙丁鱼群的同向、相向运动,以及二者之间的距离,分析海豚进击模型。当距离较远时,海豚通过回声定位来判断鱼群的整体位置,此时沙丁鱼群并未意识到威胁的存在,以接近球形的形态稳定行进。考虑个体视野范围以及速率差异,改进 Boid 模型,建立无序聚集运动模型;并划分感知区域,降维构建有序环绕运动模型。
  当海豚进攻沙丁鱼群时,鱼群进行协同躲避。考虑二者的相向、同向运动,分析四种外部空间结构(中空包围状、沙漏状、密集球状、驱赶聚集状)的动态变化。构造个体沙丁鱼安全场,划分为紧急逃离区域和适度逃离区域,分析各区域内影响个体沙丁鱼运动速度矢量的多种因素,采用主层次分析法提取出不同空间结构下不同区域内的主因子,建立四种空间结构下鱼群的躲避模型。考虑沙丁鱼空间密度等因素,引入随机森林算法对海豚捕食模型进行训练,动态优化四种躲避模型下沙丁鱼被捕食的概率结果,分析沙丁鱼群最优逃逸方式及运动规律。
  采集大自然中海豚捕食沙丁鱼群的场景,提取图片中的数据信息进行模型的验证,结果表明:沙丁鱼群遭遇一条海豚捕食时会优选呈中空包围状和密集球状进行逃逸。

问题分析:

  出于生存、避险、觅食等原因,鱼类的行为方式往往表现为群体行为,沙丁鱼往往以聚成大群的方式来对抗海豚的捕食。鱼群的行动是有协调性的,在没有外部威胁或障碍物时,鱼群常常会聚成接近球形的形态。而当海豚接触甚至冲进鱼群,一方面当近处的鱼快速逃避时,会给猎手海豚一个严重的心理错觉,以为远处的鱼还没发觉,于是扑向另外的对象。然而,鱼本身的侧线反馈机制会使远处的鱼逃避得更快,从而导致海豚找不到具体的目标,一无所获。
  此外,鱼类集群运动机理的研究涉及团体动力学、集群行为学等领域,围绕该方向的研究主要分为两大流派:一类是利用理论推导和应用已有的结论,试图去理解鱼类集群行为的内在原因,另一类是从鱼类的实际集群运动和个体鱼的特征出发,通过搭建模型去探索鱼类实际集群运动中存在的规律。由上述分析可以将海豚的捕食过程分为发现目标后的匀速前进阶段、变加速阶段、猛击捕食阶段。基于海豚的捕食过程,可以沙丁鱼群的存在状态分为稳定状态和躲避状态。由于鱼群的形成是由个体逐渐汇集而成,所以可以将沙丁鱼的稳定状态分为无序聚集状态和有序环绕状态。沙丁鱼在逃避过程中,沙丁鱼群群体的形状、空间分布、结构等是处于不断变化的过程中,鱼群在遇到外部攻击时,鱼群的外部空间结构会出现动态变化,会呈现驱赶聚集状、中空包围状、沙漏状和密集球状。
  建立数学模型来描述沙丁鱼群在遇到一条海豚捕食时的运动规律的实质就在于深入分析沙丁鱼群稳定集群模型、海豚的进击捕食模型以及沙丁鱼群多种的逃避模型,进而实现动态分析、动态寻优的过程。本文基于分析已有资料,采用从个体到局部、从局部到整体的思想,以 Boid 模型为基础,通过部分改良提出沙丁鱼群的无序聚集运动模型;采用降维的方法将三维模型降为二维模型,提出沙丁鱼稳定环绕状态模型以分析沙丁鱼的有序环绕运动。结合海豚的进击捕食模型,基于主成分分析方法简化沙丁鱼的运动方程,建立模型模拟驱赶聚集状、中空包围状、沙漏状和密集球状四种逃避轨迹,分析沙丁鱼在四种逃避状态下的被捕食概率,探索有利于沙丁鱼群体进化的最优逃避方式。

模型假设:

  1. 假设本文中的个体沙丁鱼的一般游动是随机性的;
  2. 假设每个沙丁鱼个体能够感知其在群体中的位置;
  3. 该沙丁鱼群不受环境变化影响(地震、海啸等自然灾害);
  4. 假设沙丁鱼群中的个体是存在部分差异的,主要表现为尺寸上的大、小两种;
  5. 本文中模型所涉及的鱼群数量在短期内是不发生变化的(被海豚捕食情况除外),即不考虑个体沙丁鱼的突发死亡等非一般状况。

论文缩略图:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可

部分程序代码:(代码和文档not free)

clear;
clc;
n=400;
x(1,:)=10*rand(1,n);
y(1,:)=10*rand(1,n);
drc(1,:)=(rand(1,n)-0.5)*2*pi;
d=[];
for k=1:80for i=1:nfor j=1:nd(i,j)=sqrt((x(i)-x(j))^2+(y(i)-y(j))^2);endendfor i=1:nd(i,i)=inf;endfor i=1:na=0;b=1;c=0;e=0;h=0;l=0;for j=1:nif d(i,j)<5a=a+1;c=c+x(j);e=e+y(j);m=atan(y(j)/x(j));l=l+m;endif d(i,j)<1b=b+1;g=atan((y(j)-y(i))/(x(j)-x(i)));h=h+g;endendD2=atan(e/a-y(i))/(c/a-x(i));D3=1/a;D4=h/b;drc(k+1,i)=0.4*drc(k,i)+0.3*D2+0.2*D3+0.1*D4;v=0.5;endfor i=1:nx(k+1,i)=x(k,i)+v*cos(drc(k+1,i))*1;
y(k+1,i)=y(k,i)+v*sin(drc(k+1,i))*1;if x(k+1,i)>30x(k+1,i)=x(k+1,i)-30;elseif x(k+1,i)<0x(k+1,i)=x(k+1,i)+30;endif y(k+1,i)>30y(k+1,i)=y(k+1,i)-30;elseif y(k+1,i)<0y(k+1,i)=y(k+1,i)+30;endend
end
for i=1:k%pause(0,1)plot(x(i,:),y(i,:),'.')axis([0 30 0 30])getframe
end
clear;
clc;
t=1;n=500;
x=[];y=[];xs=[];
x(1,:)=30*rand(1,n);y(1,:)=30*rand(1,n);
draction(1,:)=(rand(1,n)-0.5)*2*pi;
d=[];a=0;
xs(1,:)=30*rand(1,1);ys(1,:)=30*rand(1,1);
dractions(1,1)=(rand(1,1)-0.5)*2*pi;
for k=1:200dractions(k+1,1)=dractions(k,1);vs(k+1,1)=0.4;xs(k+1,1)=xs(k,1)+vs(k+1,1)*cos(dractions(k+1,1))*1;ys(k+1,1)=ys(k,1)+vs(k+1,1)*sin(dractions(k+1,1))*1;if xs(k+1,1)>30xs(k+1,1)=xs(k+1,1)-30;elseif xs(k+1,1)<0xs(k+1,1)=xs(k+1,1)+30;endif ys(k+1,1)>30ys(k+1,1)=ys(k+1,1)-30;elseif ys(k+1,1)<0ys(k+1,1)=ys(k+1,1)+30;end
for i=1:nds(i)=sqrt((x(k,i)-xs(k,1))^2+(y(k,i)-ys(k,1))^2);for j=1:nd(i,j)=sqrt((x(k,i)-x(k,j))^2+(y(k,i)-y(k,j))^2);endendfor i=1:nd(i,i)=inf;endfor i=1:nA=0;B=0.1;for j=1:nif d(i,j)<0.3A=A-draction(k,j)/d(i,j);B=B-1/d(i,j);if A~=0draction(k+1,i)=(1-t)*draction(k,i)-t*j/B;else draction(k+1,i)=draction(k,i);endelseif d(i,j)<5&&d(i,j)>=0.2A=A-draction(k,j)/d(i,j);B=B-1/d(i,j);if A~=0draction(k+1,i)=(1-t)*draction(k,i)+t*j/B;else draction(k+1,i)=draction(k,i);endendendif ds(i)<5a=a+1;%prevx=x;%prevy=y;if x(k,i)>xs(k,1)draction(k+1,i)=atan((y(k,i)-ys(k,1))./(x(k,i)-
xs(k,1)));endif x(k,i)<xs(k,1)draction(k+1,i)=atan((y(k,i)-ys(k,1))./(x(k,i)-
xs(k,1)))+pi;endendif ds(i)>=5&&ds(i)<10draction(k+1,i)=pi/2;endif ds(i)>=10&&ds(i)<20if x(k,i)>xs(k,1)
draction(k+1,i)=-atan((y(k,i)-ys(k,1))./(x(k,i)-
xs(k,1)));endif x(k,i)<xs(k,1)draction(k+1,i)=-atan((y(k,i)-ys(k,1))./(x(k,i)-
xs(k,1)))+pi;endendv(k+1,i)=0.2;end%×ø±ê¸üÐÂfor i=1:nif ds(i)<10x(k+1,i)=x(k,i)+v(k+1,i)*cos(draction(k+1,i))*1.5;y(k+1,i)=y(k,i)+v(k+1,i)*sin(draction(k+1,i))*1.5;elseif ds(i)>=10x(k+1,i)=x(k,i)+v(k+1,i)*cos(draction(k+1,i))*1;y(k+1,i)=y(k,i)+v(k+1,i)*sin(draction(k+1,i))*1;endif x(k+1,i)>30x(k+1,i)=x(k+1,i)-30;elseif x(k+1,i)<0x(k+1,i)=x(k+1,i)+30;endif y(k+1,i)>30y(k+1,i)=y(k+1,i)-30;elseif y(k+1,i)<0y(k+1,i)=y(k+1,i)+30;endend
end
for i=1:kpause(0.2)plot(x(i,:),y(i,:),'.',xs(i,:),ys(i,:),'ro','markersize',12)title('沙丁鱼群躲避海豚捕食的二维图')xlabel('x');ylabel('y');%legend('沙丁鱼','海豚')axis([0 30 0 30])getframe;
end
clear all
clc
warning off
load data.mat %储存数据信息
a = randperm(30);
Train = data(a(1:25),:);
Test = data(a(26:end),:);
P_train = Train(:,3:end);
T_train = Train(:,2);
P_test = Test(:,3:end);
T_test = Test(:,2);
model = classRF_train(P_train,T_train);
全部论文及程序请见下方“ 只会建模 QQ名片” 点击QQ名片即可

这篇关于2018年认证杯SPSSPRO杯数学建模A题(第一阶段)海豚与沙丁鱼全过程文档及程序的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/619830

相关文章

springboot健康检查监控全过程

《springboot健康检查监控全过程》文章介绍了SpringBoot如何使用Actuator和Micrometer进行健康检查和监控,通过配置和自定义健康指示器,开发者可以实时监控应用组件的状态,... 目录1. 引言重要性2. 配置Spring Boot ActuatorSpring Boot Act

mac安装redis全过程

《mac安装redis全过程》文章内容主要介绍了如何从官网下载指定版本的Redis,以及如何在自定义目录下安装和启动Redis,还提到了如何修改Redis的密码和配置文件,以及使用RedisInsig... 目录MAC安装Redis安装启动redis 配置redis 常用命令总结mac安装redis官网下

SpringBoot3集成swagger文档的使用方法

《SpringBoot3集成swagger文档的使用方法》本文介绍了Swagger的诞生背景、主要功能以及如何在SpringBoot3中集成Swagger文档,Swagger可以帮助自动生成API文档... 目录一、前言1. API 文档自动生成2. 交互式 API 测试3. API 设计和开发协作二、使用

Jenkins中自动化部署Spring Boot项目的全过程

《Jenkins中自动化部署SpringBoot项目的全过程》:本文主要介绍如何使用Jenkins从Git仓库拉取SpringBoot项目并进行自动化部署,通过配置Jenkins任务,实现项目的... 目录准备工作启动 Jenkins配置 Jenkins创建及配置任务源码管理构建触发器构建构建后操作构建任务

Kibana的安装和配置全过程

《Kibana的安装和配置全过程》Kibana是一个开源的数据分析和可视化平台,它与Elasticsearch紧密集成,提供了一个直观的Web界面,使您可以快速地搜索、分析和可视化数据,在本文中,我们... 目录Kibana的安装和配置1.安装Java运行环境2.下载Kibana3.解压缩Kibana4.配

若依部署Nginx和Tomcat全过程

《若依部署Nginx和Tomcat全过程》文章总结了两种部署方法:Nginx部署和Tomcat部署,Nginx部署包括打包、将dist文件拉到指定目录、配置nginx.conf等步骤,Tomcat部署... 目录Nginx部署后端部署Tomcat部署出现问题:点击刷新404总结Nginx部署第一步:打包

基于C#实现将图片转换为PDF文档

《基于C#实现将图片转换为PDF文档》将图片(JPG、PNG)转换为PDF文件可以帮助我们更好地保存和分享图片,所以本文将介绍如何使用C#将JPG/PNG图片转换为PDF文档,需要的可以参考下... 目录介绍C# 将单张图片转换为PDF文档C# 将多张图片转换到一个PDF文档介绍将图片(JPG、PNG)转

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟&nbsp;开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚&nbsp;第一站:海量资源,应有尽有 走进“智听

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来