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

news2024/11/24 2:11:19

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:80
 for i=1:n
 for j=1:n
 d(i,j)=sqrt((x(i)-x(j))^2+(y(i)-y(j))^2);
 end
 end
 for i=1:n
 d(i,i)=inf;
 end
 for i=1:n
 a=0;b=1;c=0;e=0;h=0;l=0;
 for j=1:n
 if d(i,j)<5
 a=a+1;
 c=c+x(j);e=e+y(j);
 m=atan(y(j)/x(j));
 l=l+m;
 end
 if d(i,j)<1
 b=b+1;
 g=atan((y(j)-y(i))/(x(j)-x(i)));
 h=h+g;
 end
 end
 D2=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;
 end
 for i=1:n
 x(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)>30
 x(k+1,i)=x(k+1,i)-30;
 elseif x(k+1,i)<0
 x(k+1,i)=x(k+1,i)+30;
 end
 if y(k+1,i)>30
 y(k+1,i)=y(k+1,i)-30;
 elseif y(k+1,i)<0
 y(k+1,i)=y(k+1,i)+30;
 end
 end
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:200
 dractions(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)>30
 xs(k+1,1)=xs(k+1,1)-30;
 elseif xs(k+1,1)<0
 xs(k+1,1)=xs(k+1,1)+30;
 end
 if ys(k+1,1)>30
 ys(k+1,1)=ys(k+1,1)-30;
 elseif ys(k+1,1)<0
 ys(k+1,1)=ys(k+1,1)+30;
 end
for i=1:n
 ds(i)=sqrt((x(k,i)-xs(k,1))^2+(y(k,i)-ys(k,1))^2);
 for j=1:n
 d(i,j)=sqrt((x(k,i)-x(k,j))^2+(y(k,i)-y(k,j))^2);
 end
 end
 for i=1:n
 d(i,i)=inf;
 end
 for i=1:n
 A=0;B=0.1;
 for j=1:n
 if d(i,j)<0.3
 A=A-draction(k,j)/d(i,j);
 B=B-1/d(i,j);
 if A~=0
 draction(k+1,i)=(1-t)*draction(k,i)-t*j/B;
 else draction(k+1,i)=draction(k,i);
 end
 elseif d(i,j)<5&&d(i,j)>=0.2
 A=A-draction(k,j)/d(i,j);
 B=B-1/d(i,j);
 if A~=0
 draction(k+1,i)=(1-t)*draction(k,i)+t*j/B;
 else draction(k+1,i)=draction(k,i);
 end
 end
 end
 if ds(i)<5
 a=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)));
 end
 if x(k,i)<xs(k,1)
 draction(k+1,i)=atan((y(k,i)-ys(k,1))./(x(k,i)-
xs(k,1)))+pi;
 end
 end
 if ds(i)>=5&&ds(i)<10
 draction(k+1,i)=pi/2;
 end
 if ds(i)>=10&&ds(i)<20
 if x(k,i)>xs(k,1)
draction(k+1,i)=-atan((y(k,i)-ys(k,1))./(x(k,i)-
xs(k,1)));
 end
 if x(k,i)<xs(k,1)
 draction(k+1,i)=-atan((y(k,i)-ys(k,1))./(x(k,i)-
xs(k,1)))+pi;
 end
 end
 v(k+1,i)=0.2;
 end
 %×ø±ê¸üÐÂ
 for i=1:n
 if ds(i)<10
 x(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)>=10
 x(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;
 end
 if x(k+1,i)>30
 x(k+1,i)=x(k+1,i)-30;
 elseif x(k+1,i)<0
 x(k+1,i)=x(k+1,i)+30;
 end
 if y(k+1,i)>30
 y(k+1,i)=y(k+1,i)-30;
 elseif y(k+1,i)<0
 y(k+1,i)=y(k+1,i)+30;
 end
 end
end
for i=1:k
 pause(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名片即可

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1394197.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

策略模式在工作中的运用

前言 在不同的场景下&#xff0c;执行不同的业务逻辑&#xff0c;在日常工作中是很寻常的事情。比如&#xff0c;订阅系统。在收到阿里云的回调事件、与收到AWS的回调事件&#xff0c;无论是收到的参数&#xff0c;还是执行的逻辑都可能是不同的。为了避免&#xff0c;每次新增…

老师布置作业的技巧有哪些

布置作业可不只是简单地给学生分配任务&#xff0c;而是需要运用一些技巧&#xff0c;以达到更好的教学效果。那么&#xff0c;老师应该如何布置作业呢&#xff1f; 一、作业要有针对性 布置作业时&#xff0c;老师应该根据学生的实际情况和课程要求&#xff0c;有针对性地设…

数字创意市场:Web3时代创作者的新机遇

随着Web3时代的崭露头角&#xff0c;数字创意市场正迎来全新的变革和机遇。在这个数字化的时代&#xff0c;创作者们将面对更加开放、去中心化的创作和交易环境。本文将深入探讨Web3时代数字创意市场为创作者带来的新机遇&#xff0c;以及这个时代为创意产业带来的变革。 创作者…

无心剑七绝《忆彭德怀》

七绝忆彭德怀 彭公铁骨傲苍松 德布黎民逆赤龙 怀义光华传百代 真金火炼自从容 2024年1月16日 平水韵二冬平韵 这首七绝以“忆彭德怀”为题&#xff0c;通过四句二十八字的凝练表达&#xff0c;深情缅怀了彭德怀元帅的高尚品质和坚韧精神。作者无心剑运用古典诗词的形式&#xf…

区域入侵/区域人数统计AI边缘计算智能分析网关V4如何修改IP地址?

智能分析网关V4是TSINGSEE青犀推出的一款AI边缘计算智能硬件&#xff0c;硬件采用BM1684芯片&#xff0c;集成高性能8核ARM A53&#xff0c;主频高达2.3GHz&#xff0c;INT8峰值算力高达17.6Tops&#xff0c;FB32高精度算力达到2.2T&#xff0c;硬件内置了近40种AI算法模型&…

IaC基础设施即代码:Terraform使用本地编译(In-house)的Providers

目录 一、实验 1.环境 2.初始化一个项目 3.Terraform使用本地编译&#xff08;In-house&#xff09;的Providers 二、问题 1.Terraform Provider有哪些全网标识符 2.本地安装Terraform Provider有哪些方法 一、实验 1.环境 &#xff08;1&#xff09;主机 表1-1 主机…

Spring | Spring中的Bean--上

目录: Spring中的Bean:1.Bean的配置2.Bean的实例化2.1 构造器实例化 3.Bean的作用域3.1 作用域的种类3.2 singleton作用域3.3 prototype 作用域 Spring中的Bean: 1.Bean的配置 Spring可以被看作是个一个大型工厂&#xff0c; 这个工厂的作用就是生产和管理Sping容器中的Bean。…

QtCreator12无法识别Qt5.15.2的安卓SDK与NDK配置解决

解决方法: 设置JDK为JDK11 使用Android Studio下载 Android SDK Command-line Tools 10.0 打开Android SDK Location : 双击打开cmdline-tools 复制10.0中所有东西到latest中 点击Manage Kits并选择Devices 然后点击Android会弹出下图窗口,并自动更 安装完成 成功识别

Jupyter Notebook五分钟基础速通

1 作用 常用于数据分析 2 安装 2.1 Anaconda 通过直接安装Anaconda&#xff0c;会自动安装Jupyter Notebook 2.2 命令行安装 ① 3.x版本 pip3 install --upgrade pip pip3 install jupyter ② 2.x版本 pip install --upgrade pip pip install jupyter 3 启动 cmd窗口下…

Spring+SpringMVC+Mybatis进行项目的整合

Spring SpringMVCM Mybatis 整合 一、 通过idea创建maven工程 二、 引入依赖项以及导入mybatis逆向工程的插件 将如下的文件替换所在工程的pom文件 <?xml version"1.0" encoding"UTF-8"?><project xmlns"http://maven.apache.org/POM/4…

Java_二叉树详解

前言 程序员优劣之间最明显的就是数据结构和算法的掌握程度,二叉树作为数据结构中不可缺少的一员,可见其重要程度.我们一起来简单地学习二叉树吧~ 树型结构 在我们学习二叉树前先了解一下树型结构(二叉树是树型结构中的一种) 树是一种非线性的数据结构,它是有n (n>0) 个…

css-动画效果学习示例

阴影 x-轴 y-轴 模糊度 颜色 (正负值可以表示角度问题) 可以加多个阴影 内置阴影 transition 可以添加动画延迟效果 向z轴缩进&#xff0c;开启透视respective 触发旋转效果 学习来源 &#xff1a;动画属性_哔哩哔哩_bilibili

JavaScript 学习笔记(WEB APIs Day1)

「写在前面」 本文为 b 站黑马程序员 pink 老师 JavaScript 教程的学习笔记。本着自己学习、分享他人的态度&#xff0c;分享学习笔记&#xff0c;希望能对大家有所帮助。推荐先按顺序阅读往期内容&#xff1a; 1. JavaScript 学习笔记&#xff08;Day1&#xff09; 2. JavaSc…

【Proteus仿真】【STM32单片机】甲醛浓度检测报警器

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真STM32单片机控制器&#xff0c;使用蜂鸣器LED模块、LCD1602显示模块、按键、MS1100甲醛传感器模块等。 主要功能&#xff1a; 系统运行后&#xff0c;LCD1602显示甲醛气体浓度检测…

物联网孢子捕捉分析仪在农田起到什么作用

TH-BZ03随着科技的飞速发展&#xff0c;物联网技术在农业领域的应用越来越广泛。其中&#xff0c;物联网孢子捕捉分析仪作为一种先进的设备&#xff0c;在农田中发挥着不可或缺的作用。本文将详细介绍物联网孢子捕捉分析仪在农田中的作用。 一、实时监测与预警 物联网孢子捕捉分…

【Docker】使用Docker安装Nginx及部署前后端分离项目应用

一、Nginx介绍 Nginx是一个高性能的HTTP和反向代理web服务器&#xff0c;同时也提供了IMAP/POP3/SMTP服务。它是由伊戈尔赛索耶夫为俄罗斯访问量第二的Rambler.ru站点开发的&#xff0c;公开版本1.19.6发布于2020年12月15日。其将源代码以类BSD许可证的形式发布&#xff0c;因它…

项目经理进阶之路:如何应对不同阶段的挑战?

最近看到一个帖子&#xff0c;有网友提问&#xff0c;“项目经理的职业发展会经历哪几个阶段&#xff1f;不同阶段需要关注什么&#xff1f;又分别会遇到哪些挑战&#xff1f;“这个帖子引发了广大项目经理们的热议&#xff0c;大家纷纷吐槽&#xff0c;自己遇到了职业瓶颈、询…

Qt SDL2播放Wav音频

这里介绍两种方法来实现Qt播放Wav音频数据。 方法一&#xff1a;使用QAudioOutput pro文件中加入multimedia模块。 #include <QApplication> #include <QFile> #include <QAudioFormat> #include <QAudioOutput>int main(int argc, char *argv[]) {…

RK3566 linux修改CMA size

1、进入内核配置界面 执行命令&#xff1a; cd kernel make ARCHarm64 menuconfig 2、搜索CONFIG_CMA_SIZE_MBYTES 在配置界面输入/搜索CONFIG_CMA_SIZE_MBYTES&#xff0c;结果如下&#xff1a; 根据提示进入以下界面&#xff1a; 修改Size in Mega Bytes的值。

【时间复杂度】时间复杂度优化法则简讲

一、引言 时间复杂度是衡量算法运行效率的一项重要指标&#xff0c;它描述了随着输入规模的增加&#xff0c;算法的执行时间如何增长。在算法设计与分析中&#xff0c;我们经常面临着优化时间复杂度的任务&#xff0c;以便提高程序的性能。本博客将深入探讨时间复杂度的优化法…