2023美国大学生数学建模竞赛(美赛)思路代码

news2024/9/22 13:33:49

2023美国大学生数学建模竞赛(美赛)思路&代码

  • 报名
  • 时间节点
  • 比赛说明
  • 问题A(数据分析题):收干旱影响的植物群落(MCM)
      • 第一问
      • 第二问
  • 问题B(仿真建模题):重塑马赛马拉(MCM)
  • 问题C(数据挖掘题):预测World结果(MCM)
  • 问题D(交叉网络建模题):确定联合国可持续发展目标的优先级(ICM)
  • 问题E(综合评价与仿真题):光污染(ICM)
  • 问题F(综合评价与统计建模题):绿色GDP(ICM)
  • 七.资料

报名

官方网址:http://www.comapmath.com/MCMICM/index.html

时间节点

1.官方报名截止时间:2023 年2 月17 日上午0点
2.比赛开始时间:2023 年2 月17 日上午6点
3.比赛结束时间:2023 年2 月21 日上午9点

比赛说明

  • 赛题原版(英文版)下载链接:
    链接:https://pan.baidu.com/s/1B9iyrSBtI4Nu1scMu_2y9Q?pwd=4ncw
    提取码:4ncw
  • 赛题翻译(中文版)下载链接:2022年数学建模美赛翻译(校苑数模中文版)
  • 赛题翻译(校苑数模中文版)下载链接:
    链接:https://pan.baidu.com/s/1oQ9lIx4WCdLtDfLGfpP6QA?pwd=ifmg
    提取码:ifmg

问题A(数据分析题):收干旱影响的植物群落(MCM)

  • 赛题目的:分析干旱程度与植物群落中物种数量的关系
  • 赛题解读&解题思路链接:
    (1)这道题的难点是寻找数据,如果能找到干旱程度的适应性代表的指标以及对应植物群落物种的数量,那这道题基本上是迎刃而解,只需要简单去搭建一个预测模型即可仿真
    (2)目标是对马萨马拉这个大型野生动物保护区进行推荐不同区域的管理策略

在这里插入图片描述

第一问

1.问题定义

  • 目标函数Y:植物群落的总占地面积+群落内各类植物的数量(需要归一化量纲,不同植物体积不同,总数量不同)
  • 影响因素:天气因素(是否干旱,此处量化为降水量R与太阳光功率S)、物种的种类数量 物种之间的相互作用(比如相关性,共生性)
    • 物种之间的相互作用:为同类植物,则相关性较强,不同类植物相关性较弱,相关性的量化可以参照植物种类大纲,定义相关性指标系数 ,相互作用因子 ,通过拟合得到
    • 定义此指标的目的就在于为了使模型更具有普遍性和适用性不同地区物种不同,A地可能大多是仙人掌之类但是B地是树木灌丛类。同一模型可以针对多种自然环境,增加模型的适用性。物种之间的正面影响因素,物种之间的负面影响因素。
    • 太阳光功率可以用(一天之内温度的总和*Aera)
      在这里插入图片描述
      一般来讲R与S成负相关 (自己加个小模型验证就可以)
  • 太阳光功率在一天内的变化:
    在这里插入图片描述

优化模型:计算一天的太阳光功率需要考虑太阳辐射的强度和时间的变化。太阳辐射的强度与太阳高度角、大气透过率、地球表面倾角等因素有关,因此需要进行一定的模拟和计算。

以下是一个示例代码,展示如何使用Python计算一天的太阳光功率:

import numpy as np

# 太阳直射辐射强度,单位:瓦/平方米
solar_constant = 1367

# 太阳高度角和方位角的范围,单位:弧度
altitude_range = np.arange(-np.pi/2, np.pi/2+0.01, 0.01)
azimuth_range = np.arange(-np.pi, np.pi+0.01, 0.01)

# 地球自转周期,单位:小时
day_length = 24

# 日内时刻,从早上6点到晚上6点,每隔10分钟记录一次
time_range = np.arange(6, 18.1, 0.01)

# 计算每个时刻的太阳光功率
solar_power = []
for t in time_range:
    # 计算太阳高度角和方位角
    hour_angle = (t-12)/12 * np.pi
    declination = 23.45 * np.sin(2*np.pi*(284+t)/365)
    altitude = np.arcsin(np.sin(declination)*np.sin(23.45*np.pi/180) + np.cos(declination)*np.cos(hour_angle)*np.cos(23.45*np.pi/180))
    azimuth = np.arccos((np.sin(declination)*np.cos(altitude)-np.sin(altitude)*np.cos(23.45*np.pi/180))/(np.cos(altitude)*np.sin(23.45*np.pi/180)))
    if hour_angle > 0:
        azimuth = -azimuth

    # 计算太阳直射辐射强度
    cos_theta = np.sin(altitude)*np.sin(30*np.pi/180) + np.cos(altitude)*np.cos(30*np.pi/180)*np.cos(azimuth-(-np.pi/2))
    tau = 0.7**((altitude*180/np.pi)/10)
    s = solar_constant * cos_theta * tau
    if np.isnan(s):
        continue
    solar_power.append(s)

# 将每个时刻的太阳光功率相加,得到一天的太阳光功率
daily_solar_power = np.sum(solar_power) * day_length * 60 * 60

print('一天的太阳光功率为:%.2f千瓦时' % (daily_solar_power/1000))

结果:

一天的太阳光功率为:18506091.09千瓦时

2.建立预测函数
根据查询的文献:建立预测函数(此函数自己定义,也可以根据预测模型,定义线性关系,高阶拟合,乃至指数拟合,本人建议用指数拟合)(聚类分析也可):
在这里插入图片描述
2.1 拟合函数方式

为了拟合给定的函数,我们需要导入相应的库,这里我们将使用 numpy 和 scipy 库来进行拟合和评估模型的准确度。具体步骤如下:
1.首先,我们需要定义给定的函数,这里是 y = ln(R + S) * Σ(i=1 to n)(a * exp(K[i]) * x[i])。
2.接下来,我们需要准备训练数据和测试数据,可以使用 numpy 库生成一些随机数据。
3.然后,我们需要定义误差函数,即预测值与实际值之间的差距,这里我们使用均方根误差(RMSE)作为误差函数。
4.然后,我们可以使用 scipy.optimize.curve_fit() 函数来拟合给定的函数,该函数可以返回最优拟合参数。
5.最后,我们可以使用训练数据和测试数据来评估模型的准确度,可以使用 RMSE 和 R 平方值来评估。

import numpy as np
from scipy.optimize import curve_fit
from sklearn.metrics import mean_squared_error, r2_score

# 定义给定的函数
def func(x, a, R, S, K1, K2, K3, K4):
    return np.log(R + S) * (a * np.exp(K1 * x[0]) + a * np.exp(K2 * x[1]) + a * np.exp(K3 * x[2]) + a * np.exp(K4 * x[3]))

# 准备数据
x_train = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16], [17, 18, 19, 20]])
y_train = np.array([3, 5, 7, 9, 11])
x_test = np.array([[21, 22, 23, 24], [25, 26, 27, 28], [29, 30, 31, 32], [33, 34, 35, 36], [37, 38, 39, 40]])
y_test = np.array([13, 15, 17, 19, 21])

# 定义误差函数(均方根误差)
def rmse(y_true, y_pred):
    return np.sqrt(mean_squared_error(y_true, y_pred))

# 初始猜测值
initial_guess = [1, 1, 1, 1, 1, 1, 1]

# 拟合函数
popt, pcov = curve_fit(func, x_train.T, y_train, p0=initial_guess)

# 输出拟合参数
print("拟合参数:", popt)

# 预测测试数据
y_pred = func(x_test.T, *popt)

# 输出测试数据的均方根误差和 R 平方值
print("测试

2.2 深度学习方法

  • 随机数生成数据的方式作为模拟,误差比较大,用的时候换成自己的数据就可以了

在这里插入图片描述

  • 换成excel数据

具体代码见链接:2023美赛A题:收干旱影响的植物群落(MCM)思路&Python代码
3.结果分析
1、预测结果的准确图,较优的拟合结果。
2、降水正常图和降水异常图对比
3、相互作用图,通过得到降水正常的年份和异常年份相互作用因子

第二问

  • 发现与结果出入较大,发现物种之间有正相关有负相关
  • 加入影响因子 (因为有的物种是正影响,有的是负面影响,指数函数均为正影响)去修正模型,得到拟合数据更加贴近真实数据,此处一步步推进,得到更复杂更优质的模型。
    在这里插入图片描述

问题B(仿真建模题):重塑马赛马拉(MCM)

太阳光功率可以用(一天之内温度的总和*Aera),即 ,一般来讲R与S成负相关 (自己加个小模型验证就可以)

  • 赛题目的:对马赛马拉这个大型野生动物保护区进行推荐不同区域的管理策略,可以通过了解各个区域的特点,建立有效的监测和评估机制,然后通过设置一些仿真条件,根据实际情况采取不同的管理策略
  • 赛题解读&解题思路链接:难点主要是如何构建动物园各区域仿真模型与设置有效的评估机制。

问题C(数据挖掘题):预测World结果(MCM)

  • 赛题目的:通过分析wordle的游戏机制,挖掘不同单词所对应的得分情况对其难度的影响
  • 赛题解读&解题思路链接:这道题的难度主要是如何提取不同单词难度的特征,相对来说反而是最好实现的。

问题D(交叉网络建模题):确定联合国可持续发展目标的优先级(ICM)

  • 赛题目的:对联合国制定的17个可持续发展目标进行关系网络的构建同时评估其可能存在的影响
  • 赛题解读&解题思路链接:交叉网络回归路径分析,如何寻找到能代表可持续发展目标的数值是这道题的难点。

问题E(综合评价与仿真题):光污染(ICM)

  • 赛题目的:针对光污染,进行度量评价以及模拟出四个位置进行干扰策略的影响分析
  • 赛题解读&解题思路链接:如何收集到数据对这四个地方进行仿真,一个最简单的方法是直接通过佳能相机去到这四个定义的地方获取其光源度量值。

问题F(综合评价与统计建模题):绿色GDP(ICM)

  • 赛题目的:针对使用Ggdp替代GDP的国家经济健康带来的好处分析
  • 赛题解读&解题思路链接:相对收集数据容易

    大家不管看了谁的翻译文件(大部分都是机器翻译),英文版的一定要自己再看一遍,逐字推敲。
    推荐大家一个很方便的PDF翻译软件(我们研究生经常用来看英文文献的):知云文献翻译(可以在微信里面搜索,下载软件安装包)或者登录官网:https://www.zhiyunwenxian.cn/
在这里插入图片描述

七.资料

1)往年优秀论文:美国大学生数学建模竞赛2004-2020年优秀论文汇总
2)各赛题的代码汇总:美赛各题常用算法程序与参考代码.rar
在这里插入图片描述

在这里插入图片描述
注:第一次参加数学建模比赛的,推荐看一下这篇文章:
如何在数学建模比赛中稳拿奖——个人100%获奖经历分享

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

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

相关文章

MySQL面试精选-架构

1、说说MySQL 分层有哪些 从前面MySQL的架构图,我们可以看出MySQL的架构自顶向下大致可以分为网络连接层、数据库服务层、存储引擎层和系统文件层四大部分。那最主要的两层为Server 层和存储引擎层。 2、Server 层包含哪些模块 Server主要包括连接器、查询缓存、分析器、优…

第48讲:SQL优化之ORDER BY排序查询的优化

文章目录1.ORDEY BY排序查询优化方面的概念2.ORDER BY排序的优化原则3.ORDER BY排序优化的案例3.1.准备排序优化的表以及索引3.2.同时对nl和lxfs字段使用升序排序3.3.同时对nl和lxfs字段使用降序排序3.4.排序时调整联合索引中字段的位置顺序3.5.排序时一个字段使用升序一个字段…

ChatGPT 的出现意味着什么?

老于笔记02.16选中一天的美好,删除不满的忧虑。前言ChatGPT 的出现是自然语言处理技术的一个重要里程碑。它是 OpenAI 推出的一个基于 Transformer 模型的大型语言模型,被训练于大量的文本数据,以使其能够生成人类般的文本响应。ChatGPT 的出…

2023.2.6-2.12 AI行业周刊(第136期):住院

周末把父亲送到医院,安顿下来,这周还是决定做膝关节的手术了。 一辈子长期的劳累,加上前两年搬家时的辛苦,最终导致膝关节受损严重。 这两年来,走路每一步都很疼,纠结了很久,去了上海&#xf…

VS实用调试技巧

一.什么是BUG🐛Bug一词的原意是虫子,而在电脑系统或程序中隐藏着的一些未被发现的缺陷或问题,人们也叫它"bug"。这是为什么呢?这就要追溯到一个程序员与飞蛾的故事了。Bug的创始人格蕾丝赫柏(Grace Murray H…

sql复习(视图、Top-N分析、其他数据库对象)

一、视图view 1.视图定义 视图是一种虚表。 视图建立在已有表的基础上, 视图赖以建立的这些表称为基表。 向视图提供数据内容的语句为 SELECT 语句, 可以将视图理解为存储起来的 SELECT 语句。 视图向用户提供基表数据的另一种表现形式。 2.使用视图的好处 控制数据访问 简…

【离线数仓-1-数仓前期建设准备工作】

离线数仓-1-数仓前期建设准备工作离线数仓-1-数仓前期建设准备工作1.数仓概念1. 数据仓库概念2. 数据分类3.数据仓库总视图4.数据仓库项目需求分析5.数仓搭建技术基础分析1.项目技术如何选型:2.框架版本如何选型;3.服务器使用物理机还是云主机&#xff1…

C++:模板初阶(泛型编程、函数模板、类模板)

文章目录1 泛型编程2 函数模板2.1 函数模板概念2.2 函数模板格式2.3 函数模板的原理2.4 函数模板的实例化2.5 模板参数的匹配原则3 类模板3.1 类模板的定义格式3.2 类模板的实例化1 泛型编程 所谓泛型,也就是通用型的意思。 在以往编写代码时,我们常常…

Greenplum的两阶段提交

注:本文章引自终于把分布式事务讲明白了! 在前面的文章中,我们了解了单机库中的事务一致性实现以及分布式事务中的两阶段提交协议。大多数分布式系统都是采用了两阶段提交塄来保证事务的原子性,Greenplum也是采用了两阶段提交&am…

ChatGPT直播课听不够?微软ATP教你系统化入门人工智能

爆火的ChatGPT直播课听不过瘾?系统化AI知识在哪学?国际TOP科技公司AI算法工程师团队来为你支招!▍微软AI算法专家助力系统化学习人工智能「微软ATP」Microsoft AI Talent Program是微软(亚洲)互联网工程院下属的提供专…

【测试】自动化测试02

努力经营当下,直至未来明朗! 文章目录前言 回顾 预告一、常见的元素操作1. 输入文本sendKeys()2. 点击click3. 提交submit(通过回车键提交)4. 清除clear5. 获取文本getText()6. 获取属性对应的值getAttribute()7. 查看title和ur…

(二十四)ATP应用测试平台——springboot集成fastdfs上传与下载功能

前言 本节内容我们主要介绍一下如何在springboot项目中集成fastdfs组件,实现文件的上传与下载。关于fastdfs服务中间键的安装过程,本节内容不做介绍。fastdfs是一个轻量级的分布式文件系统,也是我们文件存储中常常使用的组件之一&#xff0c…

酷开系统壁纸模式,将氛围感死死拿捏!

古希腊哲学家柏拉图曾经说过:“美感是起于视觉、听觉产生的快感,以人的感官所能达到的范围为极限。”而电视则恰恰就是视觉听觉的完美融合体,当一台开启的电视可以给我们带来视听享受的时候,一台待机状态下的电视又如何取悦于我们…

Kotlin新手教程三(类与继承)

一、类 1.类的声明 与Java中类似,Kotlin中的类声明使用关键字class: class Person {var height: Int185 //规范写法:冒号后需要紧跟一个空格 }当你定义的类没有类体时,可以省略花括号: class Person2.构造函数…

多云和混合云场景下的 API 管理:挑战与选择

作者张超,API7 Cloud 产品负责人,Apache APISIX PMC 成员。 原文链接 一、多云和混合云 如今微服务已经成为最流行的一种软件架构,人们通过自己对业务的理解,和科学方法(比如领域驱动设计的理论)的加持将…

算法刷题打卡第93天: 最大的以 1 为边界的正方形

最大的以 1 为边界的正方形 难度:中等 给你一个由若干 0 和 1 组成的二维网格 grid,请你找出边界全部由 1 组成的最大 正方形 子网格,并返回该子网格中的元素数量。如果不存在,则返回 0。 示例 1: 输入&#xff1a…

c++11 标准模板(STL)(std::multimap)(九)

定义于头文件 <map> template< class Key, class T, class Compare std::less<Key>, class Allocator std::allocator<std::pair<const Key, T> > > class multimap;(1)namespace pmr { template <class Key, class T…

【论文速递】ACL 2021-CasEE: 一种用于重叠事件抽取的级联解码联合学习框架

【论文速递】ACL 2021-CasEE: 一种用于重叠事件抽取的级联解码联合学习框架 【论文原文】&#xff1a;A Joint Learning Framework with Cascade Decoding for Overlapping Event Extraction 【作者信息】&#xff1a;Sheng, Jiawei and Guo, Shu and Yu, Bowen and Li, Qian…

Python登陆系统

前言 #源码见文末公众号哈# 登录系统 一个简单的登录系统包含了登录账户、注册账户、修改密码以及注销账户的操作。 1. 登录账户 登录系统主要需要判断账户是否存在&#xff0c;不存在就注册一个账户&#xff0c;如果第一次登录系统&#xff0c;我们需要先新建一个文件&…

解密Teradata与中国市场“分手”背后的原因!国产数据库能填补空白吗?

2月15日&#xff0c;西方的情人节刚刚过去一天&#xff0c;国内IT行业就爆出一个大瓜。 继Adobe、甲骨文、Tableau、Salesforce之后&#xff0c;又一个IT巨头要撤离中国市场。 Teradata天睿公司官宣与中国市场“分手”&#xff0c;结束在中国的直接运营。目前&#xff0c;多家…