2023年认证杯SPSSPRO杯数学建模A题(第一阶段)碳板跑鞋全过程文档及程序

news2024/10/7 12:21:44

2023年认证杯SPSSPRO杯数学建模

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 形碳板长距离慢跑鞋.

模型假设:

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

完整论文缩略图

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

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

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

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)

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

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

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

相关文章

【jvm系列-13】jvm性能调优篇---参数设置以及日志分析

JVM系列整体栏目 内容链接地址【一】初识虚拟机与java虚拟机https://blog.csdn.net/zhenghuishengq/article/details/129544460【二】jvm的类加载子系统以及jclasslib的基本使用https://blog.csdn.net/zhenghuishengq/article/details/129610963【三】运行时私有区域之虚拟机栈…

【腾讯云FinOps Crane 集训营】让我看看还有谁没用过crane这个降本利器

近几年云原生概念的发展如雨后春笋,势如破竹,而devops和k8s(Kubernetes)两兄弟也搭上云原生的车先后火了起来 devops:如字面意思Development&Operations,它的理念是开发即运维,目的是消除开发者们与运维之间的隔阂…

OpenCV:从 CMake 产生 VS2019 项目和解决方案

CMake 是一个跨平台的自动化编译程序,它用于管理代码的构建过程。使用 CMake 可以简化跨平台项目的构建和移植,提供简单而强大的语法来描述构建过程,并生成多种不同的构建系统,如 GNU Make、Ninja 和 Visual Studio。因为 CMake 具…

shell编程(编写、执行,shell变量、传参、字符串、运算符使用)

来认识一下吧 Shell 是一个用 C 语言编写的程序,通过 Shell 用户可以访问操作系统内核服务。 Shell 既是一种命令语言,又是一种程序设计语言。 Shell script 是一种为 shell 编写的脚本程序。Shell 编程一般指 shell 脚本编程,不是指开发 she…

Python实现ACO蚁群优化算法优化卷积神经网络回归模型(CNN回归算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 蚁群优化算法(Ant Colony Optimization, ACO)是一种源于大自然生物世界的新的仿生进化算法&#xff0c…

快速部署一套K8s集群-参考阿良老师

1、前置知识点 1.1 生产环境可部署Kubernetes集群的两种方式 目前生产部署Kubernetes集群主要有两种方式: kubeadm Kubeadm是一个K8s部署工具,提供kubeadm init和kubeadm join,用于快速部署Kubernetes集群。 二进制包 从github下载发行…

节省维护成本,提高效率!接口自动化测试框架热加载技术解析

目录 一、简介 二、实现热加载技术的具体操作 1. 借助Java类加载器实现热加载 2. 应用热加载技术动态更新代码 三、封装热加载技术 四、总结 前言 现如今,接口自动化测试已经成为了软件开发过程中不可或缺的一部分,通过使用接口自动化框架可以在效…

cpp 类成员函数delete this 会发生什么?

如题 this 简介: 每个非静态的类成员函数默认参数都会压栈一个this,它指向的是调用改成员函数的对象, 也是就className的object this 被隐含声明为 className* const this; 1.意味着不能改变this的指向2.this是个右值,不能取地址 ,不能&this 那我…

vue实现用户动态权限登录

一、使用vueelementUI搭登录框架,主要就是1、2、3、4 配置: ①vue.config.js use strict const path require(path)function resolve(dir) {return path.join(__dirname, dir) }// All configuration item explanations can be find in https://cli.v…

想自学写个操作系统,有哪些推荐看的书籍?

前言 哈喽,我是子牙,一个很卷的硬核男人。喜欢研究底层,聚焦做那些大家想学没地方学的课程:手写操作系统、手写虚拟机、手写编程语言… 今天我们将站在一个自学者的角度来聊聊如何实现自己的操作系统。并为大家推荐几本能够帮助你…

Ubuntu20.04配置静态IP地址,开启远程连接

本文操作演示为windows系统使用虚拟机安装的ubuntu系统进行:操作系统为ubuntu20.04,VMware15.5.0 build-14665864,内容分为两部分,第一部分为配置ubuntu系统的静态ip地址,第二部分内容为修改配置开启远程连接功能 一、…

第16章_变量、流程控制与游标

第16章_变量、流程控制与游标 1. 变量 在MySQL数据库的存储过程和函数中,可以使用变量来存储查询或计算的中间结果数据,或者输出最终的结果数据。 在 MySQL 数据库中,变量分为系统变量以及用户自定义变量。 1.1 系统变量 1.1.1 系统变量分…

Ansys Lumerical | 对铁电波导调制器进行仿真应用

说明 在本例中,我们仿真了使用BaTiO2的铁电波导调制器,BaTiO2是一种折射率因外加电场而发生变化的材料。该器件的结构基于文献[1]。我们模拟并分析了给定工作频率下波导调制器的有效折射率与电压的关系。 背景 铁电波导由硅层和玻璃衬底上的BiTiO3&#…

《实战大数据》书评

前言 首先感谢 CSDN 社区图书馆 举办的“图书活动第四期”,让我获得了“《实战大数据——分布式大数据分析处理系统开发与应用》”这本书。收到此书之后,对里面的内容非常感兴趣,同时也充满的未知的期待。 当今时代,物联网、大数据…

第四章 数学知识

第四章 数学知识 初等数论二&#xff1a;https://www.acwing.com/blog/content/26394/ 质数 试除法判定质数 bool is_prime(int x) {if (x < 2) return false;for (int i 2; i < x / i; i )if (x % i 0)return false;return true; }试除法分解质因数 void divide…

第四十八天学习记录:工作相关:Qt resizeEvent 的诡异问题

今天&#xff0c;在做一个新项目时&#xff0c;发现一个诡异的问题。 在软件初次打开的时候&#xff0c;会调用一次resizeEvent(QResizeEvent *sizechangeevent)函数来对主界面控件大小以及位置进行一次调整。 但由于窗口在设计的时候用的一个大小&#xff0c;而在打开软件后…

基于全志D1-H的Tina Linux SPI主从通信验证实录

本文转载自&#xff1a;https://bbs.aw-ol.com/topic/3031 作者 whycan矿工-小叶 背景 主控: D1H板卡: 两块哪吒开发板(以下简称为主机, 从机)操作系统: Tina Linux 2.0 问题 验证D1H芯片SPI主从机通信. 硬件接线 主机SPI从机SPI19SPI1_MOSISPI1_MOSI1921SPI1_MISOSPI1_M…

Git切换用户;Git提交之后是别人的用户怎么办?

Git切换用户 前言解决方法1.删除计算机凭证2.Idea控制台切换 前言 前几天在入职之后&#xff0c;公司的电脑上仍然储存了之前用户的信息&#xff0c;比如git。 我在创建分支、提交代码的时候会遇到这样的问题&#xff1a; 登录的是我自己的账号&#xff0c;但是在git动态里缺…

借助TeeChart图表控件,创建本地静态、实时浏览器图表

Steema是全球领先的图表类控件公司&#xff0c;总部设在西班牙的巴塞罗那附近&#xff0c;Steema公司的VCL图表报表控件在全球拥有极高知名度。TeeChart可以在微软的Visual Studio、Office和.NET以及Java和PHP开发平台中使用&#xff0c;也可以作为本地Javascript-HTML5使用。 …

Python新手怎么兼职,用Python在家兼职赚钱的4个方法

随着人工智能技术的发展&#xff0c;各行各业都在发生着变化&#xff0c;每天AI&#xff08;人工智能&#xff09;新技术都在冲击着各行各业&#xff0c;比如WPS的智能设计、阿里的鲁班等等&#xff0c;总有一种干死干活不如早点掌握新技能的感觉&#xff0c;避免心中的小慌张。…