2024认证杯数学建模A题思路模型代码

目录

2024认证杯数学建模A题思路模型代码:4.11开赛后第一时间更更新,获取见文末名片

2023年认证杯数学建模

2024年认证杯思路代码获取见此


2024认证杯数学建模A题思路模型代码:4.11开赛后第一时间更更新,获取见文末名片

2023年认证杯数学建模


A题 碳板跑鞋
原题再现:
  在专业运动鞋上使用的碳板,也可被称为碳纤维增强环氧树脂材料,事实上是将碳纤维织成布,再浸入环氧树脂固化后形成的板材。它以较轻的重量达到了相当好的弹性和刚度。在上世纪 90 年代就出现了鞋底嵌入碳板的篮球鞋。相比于软质鞋底,它可以提高对足底和足弓的支撑能力,使足部在发力时,足底更不容易变形,承托力更加均匀,进而提高抗扭性。这样可以提高运动能力,减少受伤的可能。最近几年,市场上又出现了一种鞋底嵌入碳板的跑鞋,生产商声称通过精心调整碳板的形状和弹性,配合高弹性的缓冲层,可以在跑步过程中恰当地发挥碳板的回弹能力,提高能量的利用率,最终有助于提高长跑成绩。著名长跑运动员基普乔格(Eliud Kipchoge)在 2017 年首次将碳板跑鞋应用于大型赛事中,并取得了相当惊人的成绩。他在近几年连破马拉松世界纪录,很多人认为,他所使用的最新技术的碳板跑鞋对此成绩也有一定的贡献。
  第一阶段问题:
  1. 我们可以看到多数普通马拉松跑鞋的鞋底从侧面看呈现向下凸起的弧形,鞋头和鞋跟都会略微上翘。请你和你的团队建立合理的数学模型,优化鞋底的侧剖面外形。请着重考虑跑鞋以及运动员的哪些特性会影响模型的结果。
  2. 在上一问的基础上,如果我们在鞋底嵌入一块全长、侧剖面形状和外底相同的碳板。请你和你的团队建立合理的数学模型,估计此种设计会对长跑步伐的能量消耗起到怎样的作用,对成绩可能产生怎样的影响?
  3. 如果我们打算全新设计一种在鞋底嵌入全长、侧剖面形状和外底相同的碳板的马拉松跑鞋,请为此目的来优化设计鞋底的侧剖面外形。并请与第一问的结果对比,判断二者是否存在区别并解释其成因。

整体求解过程概述(摘要)
  本文拟研究基于有限元与神经网络的碳板跑鞋优化设计的问题,结合实际情况与马拉松运动员的不同特性进行分析,建立相关数学模型.
  随着马拉松赛跑越来越流行,马拉松跑鞋也成了马拉松比赛的核心装备. 经过多年的发展,碳板跑鞋已经成为当下市场上主流路跑竞速鞋的模样. 碳板跑鞋配合高弹性的缓冲层,可以在跑步过程中恰当地发挥碳板的回弹能力,可有助于提高长跑成绩.
  对于问题一,设计了跑鞋的结构数学模型,研究了跑鞋结构设计对马拉松运动员的影响,考虑了跑鞋的中底材料与属性、纵向弯曲刚度、鞋后跟角度、鞋质量、跟稳定剂等对跑步相关性能和损伤的影响,设计出适合大多数马拉松运动员的跑鞋. 然后考虑从运动员的年龄、性别以及马拉松的距离方面考虑并从损伤和效率方面评估跑鞋,并得出相应的结论. 再运用 Logistic 回归模型,评估年龄、性别、马拉松距离、速度以及运动员损伤程度等对跑鞋的选择的影响程度.
  对于问题二,运用有限元模拟的方法,将普通跑鞋中加入碳板元素,并且探讨了不同跑鞋对马拉松运动员消耗能量以及比赛成绩的影响. 首先鉴于不同跑鞋的设计对马拉松运动员产生的影响,进行有限元模拟. 在第一问跑鞋设计的基础上,在鞋底嵌入一块全长、侧剖面形状和外底相同的碳板. 利用 ABAQUS 软件对外底、中底和两种碳纤维板进行了三维建模. 运用数学软件 SPSS 对不同的跑鞋与心率以及能量消耗量进行回归分析,并且通过了相关性检验. 从拟合的结果中可以看出,碳板跑鞋的设计目的是减少足部运动和冲击负荷的幅度或速率以降低受伤风险,减少能量消耗,进而可以提高运动成绩.
  对于问题三,基于对能量经济和运动经济的分析,对碳板跑鞋进行优化设计,首先采用 PCA 和偏最小二乘对研究数据进行预处理,然后将它与神经网络相结合,以实现模型的建立和训练,为碳板跑鞋的图像提供了最佳的参考组合. 最终我们设计了适用于不同人群不同适用场合的七款不同性能的碳板跑鞋:铲形推进式直碳板超厚底竞速跑鞋、X 形厚底碳板竞速跑鞋、碳纤维 WAVE 波浪板竞速跑鞋、全(半)掌抗扭碳板训练鞋、Y 型复合碳板跑鞋、全掌异构碳板训练鞋、H 形碳板长距离慢跑鞋.
  最后本文对模型的优缺点进行了评价,结合实际对模型的推广进行了分析.

问题分析:
  经过多年的发展,碳板跑鞋已经成为当下市场上主流路跑竞速鞋的模样. 碳板跑鞋配合高弹性的缓冲层,可以在跑步过程中恰当地发挥碳板的回弹能力,提高能量的利用率,最终有助于提高长跑成绩. 研究表明,跑鞋的设计对牵引力和运动经济的性能有重要的影响,马拉松跑鞋的缓冲性能对于运动员身体能量的消耗乃至成绩的影响至关重要.
  问题一分析:
  本题主要研究跑鞋结构设计对马拉松运动员的影响,因此先设计跑鞋的结构数学模型,其中主要考虑跑鞋的中底材料与属性、纵向弯曲刚度、鞋后跟角度、鞋质量、跟稳定剂等对跑步相关性能和损伤的影响,设计出适合大多数马拉松运动员的跑鞋. 然后考虑到跑鞋及运动员的特性会影响马拉松比赛的运动时间,在跑鞋规定的厚度,中底结构材料,鞋跟的角度范围内,从运动员的年龄、性别以及马拉松的距离方面考虑并从损伤和效率方面评估跑鞋,得出相应的结论. 再利用 Logistic 回归模型,评估年龄、性别、马拉松距离、速度以及运动员损伤程度等对跑鞋的选择的影响程度.
  问题二分析:
  本题基于有限元模拟的方法,将普通跑鞋中加入碳板元素,并且探讨了不同跑鞋对马拉松运动员消耗能量以及比赛成绩的影响. 首先鉴于不同跑鞋的设计对马拉松运动员产生的影响,进行有限元模拟. 在第一问跑鞋设计的基础上,在鞋底嵌入一块全长、侧剖面形状和外底相同的碳板. 利用 ABAQUS 软件对外底、中底和两种碳纤维板进行了三维建模. 由 SPSS 进行处理统计的数据. 本研究将跑步速度、跑鞋和受试者的因子重复测量方差分析,进而来评价这些因素对生物力学变量的主效应和交互作用. 运用数学软件 SPSS 对不同的跑鞋与心率以及能量消耗量进行回归分析,并且通过了相关性检验. 从拟合的结果中可以看出,碳板跑鞋的设计目的是减少足部运动和冲击负荷的幅度或速率以降低受伤风险,减少能量消耗,进而可以提高运动成绩.
  问题三分析:
  本题基于对能量经济和运动经济的分析,对碳板跑鞋进行优化设计,首先采用 PCA和偏最小二乘对研究数据进行预处理,然后将它与神经网络相结合,以实现模型的建立和训练,为碳板跑鞋的图像提供了最佳的参考组合. 最终我们设计了适用于不同人群不同适用场合的七款不同性能的碳板跑鞋:铲形推进式直碳板超厚底竞速跑鞋、X 形厚底碳板竞速跑鞋、碳纤维 WAVE 波浪板竞速跑鞋、全(半)掌抗扭碳板训练鞋、Y 型复合碳板跑鞋、全掌异构碳板训练鞋、H 形碳板长距离慢跑鞋.

模型假设:
  假设一:本模型涉及相应的统计分析时排除了非生物力学相关的研究.
  假设二:由于表格中数据量大,部分数据偏差不影响模型的真实性,故不考虑建模过程中的误差.
  假设三:假设不考虑计算机拟合和预测数据时产生的误差.
  假设四:假设选取的指标具有典型性,能够全面反映跑鞋以及运动员影响模型的结果.
  假设五:假设模型设计的碳板跑鞋具有很好的代表性

import numpy as np
def sigmoid(x):
# Sigmoid 激活函数: f(x) = 1 / (1 + e^(-x))
return 1 / (1 + np.exp(-x))
def deriv_sigmoid(x):
# sigmoid 的倒数: f'(x) = f(x) * (1 - f(x))
fx = sigmoid(x)
return fx * (1 - fx)
def mse_loss(y_true, y_pred):
# MSE 损失函数
return ((y_true - y_pred) ** 2).mean()
class OurNeuralNetwork:
def __init__(self):
# 权值矩阵
self.w1 = np.random.normal()
self.w2 = np.random.normal()
self.w3 = np.random.normal()
self.w4 = np.random.normal()
self.w5 = np.random.normal()
self.w6 = np.random.normal()
# 偏置
self.b1 = np.random.normal()
self.b2 = np.random.normal()
self.b3 = np.random.normal()
def feedforward(self, x):
# sum_h1 = self.w1 * x[0] + self.w2 * x[1] + self.b1
# h1 = sigmoid(sum_h1)
#
# sum_h2 = self.w3 * x[0] + self.w4 * x[1] + self.b2
# h2 = sigmoid(sum_h2)
#
# sum_o1 = self.w5 * h1 + self.w6 * h2 + self.b3
# o1 = sigmoid(sum_o1)
# y_pred = o1
# return y_pre
h1 = sigmoid(self.w1 * x[0] + self.w2 * x[1] + self.b1)
h2 = sigmoid(self.w3 * x[0] + self.w4 * x[1] + self.b2)
o1 = sigmoid(self.w5 * h1 + self.w6 * h2 + self.b3)
return o1
# x 是输入数据,这里输入只有两个属性. def train(self, data, all_y_trues):
learn_rate = 0.1
epochs = 1000 # 迭代次数
for epoch in range(epochs):
for x, y_true in zip(data, all_y_trues):
# feed forward
sum_h1 = self.w1 * x[0] + self.w2 * x[1] + self.b1
h1 = sigmoid(sum_h1)
sum_h2 = self.w3 * x[0] + self.w4 * x[1] + self.b2
h2 = sigmoid(sum_h2)
sum_o1 = self.w5 * h1 + self.w6 * h2 + self.b3
o1 = sigmoid(sum_o1)
y_pred = o1
# 计算偏导数. # 对目标函数求导
d_L_d_ypred = -2*(y_true - y_pred)
# # Neuron o1
# d_ypred_d_w5 = h1 * deriv_sigmoid(self.w5 * h1 + self.w6 * h2 +
self.b3)
# d_ypred_d_w6 = h2 * deriv_sigmoid(self.w5 * h1 + self.w6 * h2 +
self.b3)
# d_ypred_d_b3 = deriv_sigmoid(self.w5 * h1 + self.w6 * h2 + self.b3)
#
# d_ypred_d_h1 = self.w5 * deriv_sigmoid(self.w5 * h1 + self.w6 * h2 +
self.b3)
# d_ypred_d_h2 = self.w6 * deriv_sigmoid(self.w5 * h1 + self.w6 * h2 +
self.b3)
#
# # Neuron h1
# d_h1_d_w1 = x[0]*deriv_sigmoid(self.w1*x[0] + self.w2*x[1] +
self.b1)
# d_h1_d_w2 = x[1]*deriv_sigmoid(self.w1*x[0] + self.w2*x[1] +
self.b1)
# d_h1_d_b1 = deriv_sigmoid(self.w1*x[0] + self.w2*x[1] + self.b1)
#
# # Neuron h2
# d_h2_d_w3 = x[0]*deriv_sigmoid(self.w3*x[0] + self.w4*x[1] +
self.b2)
# d_h2_d_w4 = x[1]*deriv_sigmoid(self.w3*x[0] + self.w4*x[1] +
self.b2)
# d_h2_d_b2 = deriv_sigmoid(self.w3*x[0] + self.w4*x[1] + self.b2)
# Neuron o1
d_ypred_d_w5 = h1 * deriv_sigmoid(sum_o1)
d_ypred_d_w6 = h2 * deriv_sigmoid(sum_o1)
d_ypred_d_b3 = deriv_sigmoid(sum_o1)
d_ypred_d_h1 = self.w5 * deriv_sigmoid(sum_o1)
d_ypred_d_h2 = self.w6 * deriv_sigmoid(sum_o1)
# Neuron h1
d_h1_d_w1 = x[0] * deriv_sigmoid(sum_h1)
d_h1_d_w2 = x[1] * deriv_sigmoid(sum_h1)
d_h1_d_b1 = deriv_sigmoid(sum_h1)
# Neuron h2
d_h2_d_w3 = x[0] * deriv_sigmoid(sum_h2)
d_h2_d_w4 = x[1] * deriv_sigmoid(sum_h2)
d_h2_d_b2 = deriv_sigmoid(sum_h2)
# 更新权值和偏置
# Neuron h1
self.w1 -= learn_rate*d_L_d_ypred*d_ypred_d_h1*d_h1_d_w1
self.w2 -= learn_rate*d_L_d_ypred*d_ypred_d_h1*d_h1_d_w2
self.b1 -= learn_rate*d_L_d_ypred*d_ypred_d_h1*d_h1_d_b1
# Neuron h2
self.w3 -= learn_rate*d_L_d_ypred*d_ypred_d_h2*d_h2_d_w3
self.w4 -= learn_rate*d_L_d_ypred*d_ypred_d_h2*d_h2_d_w4
self.b2 -= learn_rate*d_L_d_ypred*d_ypred_d_h2*d_h2_d_b2
# Neuron o1
self.w5 -= learn_rate*d_L_d_ypred*d_ypred_d_w5
self.w6 -= learn_rate*d_L_d_ypred*d_ypred_d_w6
self.b3 -= learn_rate*d_L_d_ypred*d_ypred_d_b3
# 计算误差
if epoch % 10 == 0:
y_preds = np.apply_along_axis(self.feedforward, 1, data)
loss = mse_loss(all_y_trues, y_preds)
print("Epoch %d loss: %.3f" % (epoch, loss))
# 数据集定义
data = np.array([
[-2, -1], # Alice
[25, 6], # Bob
[17, 4], # Charlie
[-15, -6], # Diana
])
all_y_trues = np.array([
1, # Alice
0, # Bob
0, # Charlie
1, # Diana
])
# 模型训练
network = OurNeuralNetwork()
network.train(data, all_y_trues)

2024年认证杯思路代码获取见此

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

花样鼠标悬停特效

代码&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><style&…

python如何输入多行

Python中的Input()函数在输入时&#xff0c;遇到回车符&#xff0c;那么一次输入就结束了。这不能满足输入多行文本并且行数也不确定的情形&#xff0c;当然输入空行也是允许的。 方法1&#xff1a;利用异常处理机制实现 lines[] while True:try:lines.append(input())except:…

Node.js 的 5 个常见服务器漏洞

Node.js 是一个强大且广泛使用的 JavaScript 运行时环境&#xff0c;用于构建服务器端应用程序。然而&#xff0c;与任何其他软件一样&#xff0c;Node.js 也有自己的一些漏洞&#xff0c;如果处理不当&#xff0c;可能会导致安全问题。请注意&#xff0c;这些漏洞并不是 Node.…

数据驱动目标:如何通过OKR实现企业数字化转型

在数字化转型的浪潮中&#xff0c;企业管理者面临着前所未有的挑战和机遇。如何确保企业在变革中不仅能够生存&#xff0c;还能蓬勃发展&#xff1f;答案可能就在于有效的目标管理——特别是采用OKR&#xff08;Objectives and Key Results&#xff0c;目标与关键成果&#xff…

Hive概述与基本操作

一、Hive基本概念 1.什么是hive? &#xff08;1&#xff09;hive是数据仓库建模的工具之一 &#xff08;2&#xff09;可以向hive传入一条交互式的sql,在海量数据中查询分析得到结果的平台 2.Hive简介 Hive本质是将SQL转换为MapReduce的任务进行运算&#xff0c;底层由HDFS…

使用Vivado Design Suite进行物理优化(二)

物理优化是对设计的negative-slack路径进行时序驱动的优化。而phys_opt_design 命令是用于对设计进行物理优化。这个命令可以在布局后的后置模式&#xff08;post-place mode&#xff09;中运行&#xff0c;也就是在放置所有组件之后&#xff1b;还可以在完全布线后的后置模式&…

【oracle数据库安装篇一】Linux5.6基于LVM安装oracle10gR2单机

说明 本篇文章主要介绍了Linux5.6基于LVM安装oracle10gR2单机的配置过程&#xff0c;比较详细&#xff0c;基本上每一个配置部分的步骤都提供了完整的脚本&#xff0c;安装部分都提供了简单的说明和截图&#xff0c;帮助你100%安装成功oracle数据库。 安装过程有不明白的地方…

爬虫学习第一天

爬虫-1 爬虫学习第一天1、什么是爬虫2、爬虫的工作原理3、爬虫核心4、爬虫的合法性5、爬虫框架6、爬虫的挑战7、难点8、反爬手段8.1、Robots协议8.2、检查 User-Agent8.3、ip限制8.4、SESSION访问限制8.5、验证码8.6、数据动态加载8.7、数据加密-使用加密算法 9、用python学习爬…

Flody算法求解多源最短路问题

Flody算法求解多源最短路问题 蓝桥公园 #include <bits/stdc.h> using namespace std; #define int long long const int N409; int n,m,q,d[N][N]; signed main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);cin>>n>>m>>q;memset(d,0x3f,sizeof…

mac 配置前端开发环境brew,git,nvm,nrm

我的电脑是mac 3 pro 一、配置Homebrew 打开终端&#xff0c;执行指令 /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"查看版本 brew -v 安装nvm brew install nvm 再执行 brew reinstall nvm 我这边安装好了…

云服务器上Docker启动的MySQL会自动删除数据库的问题

一、问题说明 除了常见的情况&#xff0c;例如没有实现数据挂载&#xff0c;导致数据丢失外&#xff0c;还需要考虑数据库是否被攻击&#xff0c;下图 REVOVER_YOUR_DATA 就代表被勒索了&#xff0c;这种情况通常是数据库端口使用了默认端口&#xff08;3306&#xff09;且密码…

Coding and Paper Letter(八十九)

CPL之第八十九期。 1 Coding: 1.openai通用代理转换是一个用于将其他厂商服务转为openai 标准接口相应的工具. 通过该工具, 可以将其他厂商的服务转为openai 标准接口. 讯飞星火,通义千问,gemini,openai,copilot,double&#xff0c;kimi&#xff0c;智谱清言 使用spring2webf…

Qt——示波器/图表 QCustomPlot

一、介绍 QCustomPlot是一个用于绘图和数据可视化的Qt C小部件。它没有进一步的依赖关系&#xff0c;提供友好的文档帮助。这个绘图库专注于制作好看的&#xff0c;出版质量的2D绘图&#xff0c;图形和图表&#xff0c;以及为实时可视化应用程序提供高性能。QCustomPlot可以导出…

机器学习和深度学习 -- 李宏毅(笔记与个人理解1-6)

机器学习和深度学习教程 – 李宏毅&#xff08;笔记与个人理解&#xff09; day1 课程内容 什么是机器学习 找函数关键技术&#xff08;深度学习&#xff09; 函数 – 类神经网络来表示 &#xff1b;输入输出可以是 向量或者矩阵等如何找到函数&#xff1a; supervised Lear…

【QingHub】EMQX单节点一键部署

EMQX 简介 EMQX是全球最具扩展性的开源MQTT 代理&#xff0c;具有高性能&#xff0c;可在 1 个集群中连接 1 亿多个 IoT 设备&#xff0c;同时保持每秒 100 万条消息的吞吐量和亚毫秒级的延迟。 EMQX 支持MQTT、HTTP、QUIC、WebSocket等多种开放标准协议。它 100% 符合MQTT 5.…

【Linux】tcpdump P3 - 过滤和组织返回信息

文章目录 基于TCP标志的过滤器格式化 -X/-A额外的详细选项按协议(udp/tcp)过滤低详细输出 -q时间戳选项 本文继续展示帮助你过滤和组织tcpdump返回信息的功能。 基于TCP标志的过滤器 可以根据各种TCP标志来过滤TCP流量。这里是一个基于tcp-ack标志进行过滤的例子。 # tcpdump…

大厂MVP技术JAVA架构师培养

课程介绍 这是一个很强悍的架构师涨薪计划课程&#xff0c;课程由专家级MVP讲师进行教学&#xff0c;分为是一个章节进行分解式面试及讲解&#xff0c;不仅仅是面试&#xff0c;更像是一个专业的架构师研讨会课程。课程内容从数据结构与算法、Spring Framwork、JVM原理、 JUC并…

每日Bug汇总--Day03

Bug汇总—Day03 一、项目运行报错 二、项目运行Bug 1、问题描述&#xff1a;Vue前端项目运行后台管理平台订单管理页面下的三个子页面出现点击不同的路由还是会出现相同的页面&#xff0c;导致页面和数据不匹配 解决办法&#xff1a; 在监听器中添加状态来根据路由地址变化…

C++ | Leetcode C++题解之第20题有效的括号

题目&#xff1a; 题解&#xff1a; class Solution { public:bool isValid(string s) {int n s.size();if (n % 2 1) {return false;}unordered_map<char, char> pairs {{), (},{], [},{}, {}};stack<char> stk;for (char ch: s) {if (pairs.count(ch)) {if (…

【mT5多语言翻译】之六——推理:多语言翻译与第三方接口设计

请参考本系列目录&#xff1a;【mT5多语言翻译】之一——实战项目总览 [1] 模型翻译推理 在分别使用全量参数微调和PEFT微调训练完模型之后&#xff0c;我们来测试模型的翻译效果。推理代码如下&#xff1a; # 导入模型 if conf.is_peft:model AutoModelForSeq2SeqLM.from_pr…