全国大学生数学建模大赛——黄花鱼的最优捕捞策略

news2024/9/23 23:26:50

渔业管理部门规定,每年只允许在产卵孵化期前的8个 月进行捕捞作业。如果每年投入的捕捞能力(如渔船数、下网 次数等)固定不变,这时单位时间捕捞量将与各年龄组鱼群条 数成正比,比例系数不妨设为捕捞强度系数。通常使用 13mm  网眼的拉网,这种网只能捕捞3龄鱼和4龄鱼,其 两个捕捞系数之比为0.42:1,渔业上称这种方式为固定努力 量捕捞。

考虑对黄花鱼的最优捕捞策略:假设这种鱼分4个年龄 组,称为1龄鱼,2龄鱼,3龄鱼,4龄鱼。各年龄组每条

鱼的平均质量分别为5.07、11.55、17.86、22.99(g),各年 龄组的自然死亡率为0.8(1/年),这种鱼为季节性集中产卵繁 殖,平均每条4龄鱼的产卵量为1.109×10⁵(个),3龄鱼的 产卵量为这个数的一半,2龄鱼和1龄鱼不产卵,产卵和孵 化期为每年的最后4个月,卵孵化并成活为1龄鱼,成活率(1 龄鱼条数与产卵量n 之比)为:

其 中 ,n 为产卵总量。

(1)建立数学模型分析在采用固定努力量的捕捞方式的 前提下,如何实现可持续捕捞(即每年开始捕捞时渔场中各年 龄组鱼群条数不变),得到最高的年收获量(捕捞总质量)。

(2)略。

[提示:读题并做出如下假设]

[1]鱼在一年内的任何时间都会发生自然死亡(连续)

[2]捕捞是一个连续的过程,不是在某一时刻突然发生

[3]1、2龄鱼体形太小,不能被捕

[4]3、4龄鱼在一年中的后4个月的第一天集中产卵

[5]i龄鱼到来年分别长一岁成为i+1龄鱼,i=1,2,3,  其中上一年存活 下来的4龄鱼仍是4龄鱼

[在问题分析之前,设定T为年份,x(t)为t 时刻i 龄鱼的条数,r 为自然死 亡率,n 为年产卵数量,f为年捕捞量,k 为捕捞强度系数]

论文展示

黄花鱼的最优捕捞策略

摘  要

本文旨在探讨在固定努力量捕捞方式下,如何实现黄花鱼的可持续捕捞,并达到最高的年收获量(捕捞总质量)。通过建立数学模型,我们分析了各年龄组鱼群数量的动态变化,以及捕捞活动对鱼群数量的影响。在满足可持续捕捞条件的前提下,我们优化了捕捞强度系数,以最大化年收获量。

  • 问题分析
    1. 问题背景

在探讨黄花鱼的最优捕捞策略时,我们的主要目标是实现可持续捕捞,即在保证鱼群数量稳定的前提下,达到最高的年收获量(捕捞总质量)。为了实现这一目标,我们需要对鱼群的动态变化进行数学建模,并优化捕捞强度系数。

    1. 问题提出

问题一可持续捕捞的定义,可持续捕捞意味着每年的捕捞活动不会导致鱼群数量的显著减少,即捕捞后的鱼群数量能够恢复到捕捞前的水平。在数学上,这表现为各年龄组鱼群条数在连续年份之间保持不变。

问题二鱼群动态变化的建模,鱼群的动态变化包括自然死亡、年龄增长、繁殖和捕捞四个主要方面。我们需要根据这些方面建立数学模型:

问题三自然死亡,每年各年龄组的鱼都会有一定比例的自然死亡,这可以通过自然死亡率 r 来描述。年龄增长:每年,i 龄鱼会成长为 i+1 龄鱼(除了4龄鱼,它们会保持为4龄鱼。繁殖:3龄鱼和4龄鱼在每年的后4个月产卵,产卵量取决于它们的数量,并且新孵化的鱼成为1龄鱼。捕捞:每年前8个月进行捕捞,只捕捞3龄鱼和4龄鱼,捕捞量与各年龄组鱼群条数成正比,比例系数为捕捞强度系数 k。

问题四:捕捞强度系数的优化,捕捞强度系数 k 是我们需要优化的关键参数。通过调整 k,我们可以控制捕捞量,从而在保证可持续捕捞的前提下,最大化年收获量。

  • 模型假设与符号说明

2.1模型基本假设

(1)鱼在一年内的任何时间都会发生自然死亡(连续)

(2)捕捞是一个连续的过程,不是在某一时刻突然发生

(3)1、2龄鱼体形太小,不能被捕

(4)3、4龄鱼在一年中的后4个月的第一天集中产卵

(5)i龄鱼到来年分别长一岁成为i+1龄鱼,i=1,2,3,  其中上一年存活下来的4龄鱼仍是4龄鱼

2.2符号说明

1 符号说明

符号

含义

备注

T

年份

xi(t)

T时刻i龄鱼的条数

i=1,2,3,4

r

自然死亡率

给定为0.8/年

n

年产卵数量

f

年捕捞量

k

捕捞强度系数

k3和 k4

分别为3龄鱼和4龄鱼的捕捞系数

k3:k4=0.42:1

  • 问题一模型建立与求解

3.1求解思路

由于这是一个连续时间动态系统,我们可以使用数值方法来模拟系统的行为。

设定初始条件xi(t)(假设它们已知或基于历史数据)。使用数值积分(如Euler方法、Runge-Kutta方法等)求解动态方程,计算每年的捕捞量f。

调整k或α,β以最大化f同时保持xi(t)不变

3.2模型建立

繁殖与孵化:

1龄鱼的数量由上一年的产卵量和成活率决定:

自然死亡与年龄增长:

对于2龄、3龄和4龄鱼:

年捕捞量:

为了实现可持续捕捞,需要满足以下条件:

3.3得出结果

通过数值方法求解上述方程组,得到不同 k 下的最优捕捞量,并分析结果以确定最优捕捞强度系数:

图一:捕捞强度系数对总捕捞量的影响

 

 

 

 

定义初始鱼群数量:1龄鱼数量10000条、2龄鱼数量8000条、3龄鱼数量 6000条、4龄鱼数量4000条。

代入模型求解:

最佳捕捞强度系数

最大年捕捞量

1.65

1029137.2520771623千克

  • 模型评价与推广

在模型应用中,可以对不同地区和不同鱼种进行类似的建模,以实现可持续捕捞。未来可以结合实际数据进一步优化模型参数,提高预测精度。

代码展示

import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import minimize

# 定义参数
r = 0.8  # 自然死亡率
m1, m2, m3, m4 = 51.07, 11.55, 17.86, 22.99  # 各年龄组鱼的平均质量(克)
f = 1000  # 捕捞总量(可调整)
k3, k4 = 0.42, 1.0  # 捕捞强度系数比例
egg_4 = 1.109e5  # 4龄鱼的产卵量
egg_3 = 0.5 * egg_4  # 3龄鱼的产卵量

# 定义初始鱼群数量
x1 = 10000  # 1龄鱼数量
x2 = 8000   # 2龄鱼数量
x3 = 6000   # 3龄鱼数量
x4 = 4000   # 4龄鱼数量

def survival_rate(eggs):
    """
    计算鱼卵的孵化率
    """
    return 1.22e11 / (1.22e11 + eggs)

def objective(k):
    """
    目标函数,计算总捕捞量
    """
    global x1, x2, x3, x4
    k3 = 0.42 * k  # 更新3龄鱼的捕捞强度系数
    k4 = k         # 更新4龄鱼的捕捞强度系数
    total_catch = 0
    
    for year in range(10):  # 模拟10年
        # 计算捕捞量
        catch3 = k3 * x3
        catch4 = k4 * x4
        total_catch += catch3 * m3 + catch4 * m4
        
        # 更新鱼群数量
        x3_next = x2 * survival_rate(egg_3 + egg_4) - catch3
        x4_next = x3 * survival_rate(egg_3 + egg_4) - catch4
        x2_next = x1 * survival_rate(egg_3 + egg_4)
        x1_next = x1 * np.exp(-r)
        
        x1, x2, x3, x4 = x1_next, x2_next, x3_next, x4_next
    
    return -total_catch  # 返回负的总捕捞量,因为优化器是最小化函数

# 生成不同捕捞强度系数下的捕捞量
k_values = np.linspace(0.1, 2.0, 20)  # 捕捞强度系数范围
catch_values = []

for k in k_values:
    x1, x2, x3, x4 = 10000, 8000, 6000, 4000  # 重置鱼群数量
    total_catch = -objective(k)  # 计算总捕捞量
    catch_values.append(total_catch)

# 绘制折线图
plt.figure(figsize=(10, 6))
plt.plot(k_values, catch_values, marker='o', linestyle='-', color='b')
plt.title('捕捞强度系数对总捕捞量的影响')
plt.xlabel('捕捞强度系数 (k)')
plt.ylabel('总捕捞量')
plt.grid(True)
plt.show()

# 优化捕捞强度系数
result = minimize(objective, x0=1, bounds=[(0, None)])
optimal_k = result.x[0]

print(f"最佳捕捞强度系数: {optimal_k:.2f}")

# 计算最大年捕捞量
x1, x2, x3, x4 = 10000, 8000, 6000, 4000  # 重置鱼群数量
max_catch = -objective(optimal_k)
print(f"最大年捕捞量: {max_catch}")

egg_3 = 0.5 * egg_4  # 3龄鱼的产卵量

# 定义初始鱼群数量
x1 = 10000  # 1龄鱼数量
x2 = 8000   # 2龄鱼数量
x3 = 6000   # 3龄鱼数量
x4 = 4000   # 4龄鱼数量

def survival_rate(eggs):
    """
    计算鱼卵的孵化率
    """
    return 1.22e11 / (1.22e11 + eggs)

def objective(k):
    """
    目标函数,计算总捕捞量
    """
    global x1, x2, x3, x4
    k3 = 0.42 * k  # 更新3龄鱼的捕捞强度系数
    k4 = k         # 更新4龄鱼的捕捞强度系数
    total_catch = 0
    
    for year in range(10):  # 模拟10年
        # 计算捕捞量
        catch3 = k3 * x3
        catch4 = k4 * x4
        total_catch += catch3 * m3 + catch4 * m4
        
        # 更新鱼群数量
        x3_next = x2 * survival_rate(egg_3 + egg_4) - catch3
        x4_next = x3 * survival_rate(egg_3 + egg_4) - catch4
        x2_next = x1 * survival_rate(egg_3 + egg_4)
        x1_next = x1 * np.exp(-r)
        
        x1, x2, x3, x4 = x1_next, x2_next, x3_next, x4_next
    
    return -total_catch  # 返回负的总捕捞量,因为优化器是最小化函数

# 初始化数据
years = np.arange(1, 11)
optimal_ks = []
max_catches = []
total_catches = []

for year in years:
    # 计算最佳捕捞强度系数
    result = minimize(objective, x0=1, bounds=[(0, None)])
    optimal_k = result.x[0]
    optimal_ks.append(optimal_k)
    
    # 计算最大年捕捞量
    x1, x2, x3, x4 = 10000, 8000, 6000, 4000  # 重置鱼群数量
    max_catch = -objective(optimal_k)
    max_catches.append(max_catch)
    
    # 计算总捕捞量
    x1, x2, x3, x4 = 10000, 8000, 6000, 4000  # 重置鱼群数量
    total_catch = -objective(optimal_k)
    total_catches.append(total_catch)

# 绘制折线图
plt.figure(figsize=(14, 6))

plt.subplot(1, 3, 1)
plt.plot(years, optimal_ks, marker='o', linestyle='-', color='b')
plt.title('未来10年的最佳捕捞强度系数')
plt.xlabel('年份')
plt.ylabel('最佳捕捞强度系数')
plt.grid(True)

plt.subplot(1, 3, 2)
plt.plot(years, max_catches, marker='o', linestyle='-', color='r')
plt.title('未来10年的最大年捕捞量')
plt.xlabel('年份')
plt.ylabel('最大年捕捞量')
plt.grid(True)

plt.tight_layout()
plt.show()

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

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

相关文章

中国高校发表科技论文及著作数量数据集(2009-2022年)

中国各地区的高校科技产出数据,包括27个指标,科技论文发表、著作出版、专利申请、专利转让、国家标准项等。这些指标综合反映了各地区高校在科学研究和技术开发方面的活跃程度及创新能力 一、数据介绍 数据名称:中国地区高校发表科技论文、…

Android App启动流程

1.通过 Launcher 启动应用时,点击应用图标后,Launcher 调用 startActivity 启动应用。 2.Launcher Activity 最终调用 Instrumentation 的 execStartActivity 来启动应用。 3.Instrumentation 调用 ActivityManagerProxy (ActivityManagerService 在应…

计算机类-本科毕业设计快速通关攻略-(选题-创新点-论文框架-论文绘图)

一、推荐选题 大多数人都没有什么基础,不推荐做系统类的,建议走深度学习方向,简单易上手,下面将给出几个我认为不错的方向。 1、目标检测类 目标检测是每年深度学习毕业设计的主流,如Faster R-CNN、YOLO、SSD等算法…

程序员心理健康测试问卷

当然,以下是一份针对程序员设计的心理健康测试问卷。这份问卷旨在帮助程序员评估自己的心理健康状态,并识别可能存在的心理问题。请注意,此问卷仅供参考,不能替代专业心理咨询或诊断。 程序员心理健康测试问卷 基本信息 姓名&am…

为什么不让程序员直接对接客户,而是通过产品经理?

从客户的角度来说,客户需要的是对自身业务的解决方案以及实现,即能够实现解决方案的软件或系统。从程序员的角度来讲,甲方说啥,我按着做就行了,即实现甲方说的软件或系统。但是甲方不懂技术,程序员不懂业务…

备忘录删除了怎么恢复?备忘录失而复得,掌握这3招!

备忘录是我们手机中的秘密花园,守护着每一个重要的思绪、待办事项与未来规划。它们不仅是日常工作的得力助手,更是心灵慰藉的小角落。但有时候,一个不经意的滑动或点击,这些珍贵的笔记和计划可能就会消失。备忘录删除了怎么恢复&a…

jpeg转pdf,分享5种图片转PDF的方法!

在日常工作和学习中,将JPEG图片转换为PDF文件是一项常见的需求。无论是为了保持文件的清晰度,还是为了方便分享和打印,JPEG转PDF都是一项非常实用的操作。本文将分享五种不同的JPEG转PDF的方法,帮助大家轻松完成这一任务。 方法一…

百度搜索的RLHF性能优化实践

作者 | 搜索架构部 导读 本文大语言模型在未经标注的大量文本上进行预训练后,可能产生包含偏见、泄露隐私甚至对人类构成威胁的内容。OpenAI 最先提出了基于人类反馈的强化学习算法(Reinforcement Learning fromHuman Feedback, RLHF),将人类偏好引入到…

五种多目标优化算法(MOAHA、NSGA2、NSGA3、SPEA2、MODA)性能对比,包含47个多目标测试函数,6种评价指标,MATLAB代码

一、五种多目标算法及六种评价指标简介 NSGA-III: NSGA-III是Deb在2013年提出的,用于解决高维多目标优化问题。它采用参考点基于的非支配排序方法,并引入了种群的自适应标准化和关联操作,以提高算法在高维问题上的性能和多样性 。…

线程 --- 同步与生产消费者模型

序言 在上一篇的内容中,我们学习了使用互斥锁来保护共享资源,避免多个线程竞争,造成数据不一致等问题。在这一篇文章中,我们将继续深入,学习多线程同步以及生产消费者模型。 1. 线程同步 1.1 什么是线程同步 线程互斥…

操作系统常见面试题总结

文章目录 1 操作系统基础1.1 什么是操作系统?1.2 操作系统主要有哪些功能?1.3 用户态和内核态1.3.1 什么是用户态和内核态?1.3.2 为什么要有用户态和内核态?只有一个内核态不行么?1.3.3 用户态和内核态是如何切换的&am…

HICOOL 2024全球创业大赛角出200个获奖项目

近日,经过超过200天的紧张竞争,HICOOL 2024全球创业大赛从124个国家和地区的7406个创新项目中脱颖而出,共选出了200个获奖项目。 其中,“新一代智能光学显微成像仪器与全流程解决方案”和“基于多尺度深度学习的功能型生物分子设…

Excel下拉框多选

记录一下学会一个新的知识! 两种方式 第一种方式:先在表格里写好需要的值,再在数据关联里面直接引入。 1.新建excel表格,输入下拉框需要的值。 2.点击——数据>有效性 3.选择——序列 4.数据来源——框住刚才写好的数据——…

IMU用于动物行为监测

近日,由比利时和法国组成的科研团队开展了一项创行性的研究,通过在牛颈部安装IMU(惯性测量单元),实现了对牛吃草行为的实时监测。该技术通过捕捉牛咀嚼时的微小动作,并结合机器学习算法,智能区分…

07--kubernetes.deploy与service

前言:这一章主要是deploy与service的配置及其原理,以及一些细节上的补充,同时还会附上镜像拉取策略和容器健康检查的一些操作实例,内容比较多,建议根据目录查看。 1、镜像拉取策略 IfNotPresent:在镜像已经存在的情况…

新迪天工®看图,专业的三维CAD看图工具

替代专业CAD软件,方便查看各种三维和二维CAD图纸 新迪天工看图是一款功能强大的三维模型和二维图纸查看工具,能帮助制造企业以较低的成本、较高的数据安全性实现产品设计数据的跨业务浏览和交互。 应用场景 1、设计图纸评审 可直接对三维模型和二维…

【MATLAB源码-第255期】基于matlab的长鼻浣熊优化算法(COA)无人机三维路径规划,输出做短路径图和适应度曲线.

操作环境: MATLAB 2022a 1、算法描述 长鼻浣熊优化算法(Coati Optimization Algorithm,COA)是一种新兴的群体智能优化算法,其灵感来源于长鼻浣熊在自然界中的觅食行为。长鼻浣熊是一种生活在美洲热带和亚热带森林中…

Redis中的数据类型及应用场景(面试版)

五种常用数据类型介绍 Redis中存储的都是key-value对结构的数据,其中key都是字符串类型,value有5种常用的数据类型: 字符串 string 哈希 hash 列表 list 集合 set 有序集合 sorted set / zset 各种数据类型特点 解释说明: …

DP10RF001支持200MHz~960MHz(G)FSK/OOK调制无线抄表工业传感无线遥控

简介 DP10RF001是一款工作于 200MHz~960MHz 范围内的低功耗、高性能、单片集成的(G)FSK/OOK无线收发芯片。内部集成完整的射频接收机、射频发射机、频率综合器、调制解调器,只需配备简单、低成本的外围器件就可以获得良好的收发性能。 芯片支持灵活可设的数据包格式…

6U VPX总线架构:搭载飞腾D2000/FT2000 + FPGA-K7(赛灵思)

"CPU FPGA" 结构是指一种结合了中央处理器(CPU)和现场可编程门阵列(FPGA)的系统架构。这种架构利用了CPU的通用计算能力和FPGA的并行处理能力,可以提供高效能、低延迟和高灵活性的计算平台。 K7是 Xilinx 7…