2025年第三屆“華數杯”國際賽A題解題思路與代碼(Python版)

游泳競技策略優化模型代碼詳解

第一題:速度優化模型

在這一部分,我們將詳細解析如何通過數學建模來優化游泳運動員在不同距離比賽中的速度分配策略。

1. 模型概述

我們的模型主要包含三個核心文件:

  • speed_optimization.py: 速度優化的核心算法
  • visualization.py: 結果可視化
  • main.py: 主程序入口

2. 核心算法實現

2.1 速度優化模型 (speed_optimization.py)
import numpy as np
from scipy.optimize import minimizeclass SwimmingSpeedModel:def __init__(self, distance, initial_energy=100):"""初始化游泳速度優化模型Args:distance: 比賽距離(米)initial_energy: 初始能量值(默認100)"""self.distance = distanceself.initial_energy = initial_energyself.segments = 10  # 將比賽分成10段分析# 根據不同距離設置合理的最大速度(米/秒)self.max_speed = 2.2 if distance <= 50 else (2.0 if distance <= 100 else 1.8)def energy_consumption(self, speed):"""計算能量消耗模型基于速度的三次方計算能量消耗,并添加合理的比例系數"""k = 0.1  # 能量消耗系數return k * np.power(speed, 3)  def performance_function(self, speeds):"""計算性能函數(總成績)考慮時間和能量消耗的平衡"""segment_distance = self.distance / self.segmentstotal_time = np.sum(segment_distance / speeds)# 計算累計能量消耗energy_used = np.sum([self.energy_consumption(s) * (self.distance/self.segments) for s in speeds])# 如果超出能量限制或速度超過最大限制,添加懲罰項if energy_used > self.initial_energy or np.any(speeds > self.max_speed):return float('inf')  # 返回無窮大作為懲罰return total_timedef optimize_speed(self):"""優化速度分配返回每個段落的最優速度"""# 初始猜測:根據距離設置合理的初始速度initial_speed = self.max_speed * 0.9  # 初始速度設為最大速度的90%initial_guess = np.ones(self.segments) * initial_speed# 速度約束:設置合理的速度范圍min_speed = self.max_speed * 0.7  # 最小速度為最大速度的70%bounds = [(min_speed, self.max_speed) for _ in range(self.segments)]result = minimize(self.performance_function,initial_guess,method='SLSQP',bounds=bounds)return result.x 
2.2 可視化模塊 (visualization.py)
import numpy as np
import matplotlib.pyplot as plt
from speed_optimization import SwimmingSpeedModel# 設置中文字體
plt.rcParams['font.sans-serif'] = ['SimHei']  # 使用黑體
plt.rcParams['axes.unicode_minus'] = False  # 解決負號顯示問題def plot_optimal_speeds(distances=[50, 100, 200]):"""繪制不同距離的最優速度分配圖Args:distances: 要分析的距離列表"""plt.figure(figsize=(12, 6))colors = ['r', 'b', 'g']  # 為不同距離設置不同顏色for i, distance in enumerate(distances):model = SwimmingSpeedModel(distance)optimal_speeds = model.optimize_speed()segments = np.linspace(0, distance, len(optimal_speeds))plt.plot(segments, optimal_speeds, label=f'{distance}米', color=colors[i],marker='o')plt.xlabel('距離 (m)')plt.ylabel('速度 (m/s)')plt.title('不同距離項目的最優速度分配策略')plt.legend()plt.grid(True)plt.show()def plot_energy_distribution(distance=100):"""繪制能量消耗分布圖Args:distance: 比賽距離"""model = SwimmingSpeedModel(distance)optimal_speeds = model.optimize_speed()segments = np.linspace(0, distance, len(optimal_speeds))energy_consumption = [model.energy_consumption(s) for s in optimal_speeds]plt.figure(figsize=(12, 6))plt.plot(segments, energy_consumption, 'r-', marker='o')plt.xlabel('距離 (m)')plt.ylabel('能量消耗率')plt.title(f'{distance}米比賽的能量消耗分布')plt.grid(True)plt.show() 
2.3 主程序 (main.py)
from speed_optimization import SwimmingSpeedModel
from visualization import plot_optimal_speeds, plot_energy_distributiondef main():"""主程序:分析不同距離的最優速度分配和能量消耗"""# 分析不同距離的最優速度分配distances = [50, 100, 200]plot_optimal_speeds(distances)# 分析100米的詳細數據model = SwimmingSpeedModel(distance=100)optimal_speeds = model.optimize_speed()print("\n100米比賽最優速度分配方案(單位:米/秒):")for i, speed in enumerate(optimal_speeds):print(f"第{i+1}段:{speed:.2f}")# 顯示能量消耗分布plot_energy_distribution(100)if __name__ == "__main__":main() 

獲取完整代碼

如果您對第二題"競技策略分析"和第三題"接力賽追趕策略"的Python實現感興趣,請訪問:

  • 獲取鏈接(內容實時更新):2025年第三屆“華數杯”國際大學生數學建模競賽A題完整代碼【含Matlab/Python版本】

完整代碼包含:

  1. 詳細的代碼注釋
  2. 運行示例
  3. 參數調優建議
  4. 技術文檔

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/65675.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/65675.shtml
英文地址,請注明出處:http://en.pswp.cn/web/65675.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

micro-app【微前端系列教程】禁用樣式隔離

全局禁用樣式隔離 所有應用的樣式隔離都會停止 import microApp from micro-zoe/micro-appmicroApp.start({disableScopecss: true, // 默認值false })指定子應用取消禁用樣式隔離 <micro-app namexx urlxx disableScopecssfalse></micro-app>指定子應用禁用樣式…

深度學習筆記11-優化器對比實驗(Tensorflow)

&#x1f368; 本文為&#x1f517;365天深度學習訓練營中的學習記錄博客&#x1f356; 原作者&#xff1a;K同學啊 目錄 一、導入數據并檢查 二、配置數據集 三、數據可視化 四、構建模型 五、訓練模型 六、模型對比評估 七、總結 一、導入數據并檢查 import pathlib,…

FFmpeg Muxer HLS

使用FFmpeg命令來研究它對HLS協議的支持程度是最好的方法&#xff1a; ffmpeg -h muxerhls Muxer HLS Muxer hls [Apple HTTP Live Streaming]:Common extensions: m3u8.Default video codec: h264.Default audio codec: aac.Default subtitle codec: webvtt. 這里面告訴我…

Apache和PHP:構建動態網站的黃金組合

在當今的互聯網世界&#xff0c;網站已經成為了企業、個人和機構展示自己、與用戶互動的重要平臺。而在這些動態網站的背后&#xff0c;Apache和PHP無疑是最受開發者青睞的技術組合之一。這一組合提供了高效、靈活且可擴展的解決方案&#xff0c;幫助您快速搭建出強大的網站&am…

git相關操作筆記

git相關操作筆記 1. git init git init 是一個 Git 命令&#xff0c;用于初始化一個新的 Git 倉庫。執行該命令后&#xff0c;Git 會在當前目錄創建一個 .git 子目錄&#xff0c;這是 Git 用來存儲所有版本控制信息的地方。 使用方法如下&#xff1a; &#xff08;1&#xff…

Docker Desktop 構建java8基礎鏡像jdk安裝配置失效解決

Docker Desktop 構建java8基礎鏡像jdk安裝配置失效解決 文章目錄 1.問題2.解決方法3.總結 1.問題 之前的好幾篇文章中分享了在Linux(centOs上)和windows10上使用docker和docker Desktop環境構建java8的最小jre基礎鏡像&#xff0c;前幾天我使用Docker Desktop環境重新構建了一個…

VUE + pdfh5 實現pdf 預覽,主要用來uniappH5實現嵌套預覽PDF

1. 安裝依賴 npm install pdfh5 2. pdfh5 預覽(移動端&#xff0c;h5) npm install pdfh5 , &#xff08;會報錯&#xff0c;需要其他依賴&#xff0c;不能直接用提示的語句直接npm下載&#xff0c;依舊會報錯&#xff0c;npm報錯&#xff1a;These dependencies were not fou…

Node.js——fs(文件系統)模塊

個人簡介 &#x1f440;個人主頁&#xff1a; 前端雜貨鋪 &#x1f64b;?♂?學習方向&#xff1a; 主攻前端方向&#xff0c;正逐漸往全干發展 &#x1f4c3;個人狀態&#xff1a; 研發工程師&#xff0c;現效力于中國工業軟件事業 &#x1f680;人生格言&#xff1a; 積跬步…

Microsoft Azure Cosmos DB:全球分布式、多模型數據庫服務

目錄 前言1. Azure Cosmos DB 簡介1.1 什么是 Azure Cosmos DB&#xff1f;1.2 核心技術特點 2. 數據模型與 API 支持2.1 文檔存儲&#xff08;Document Store&#xff09;2.2 圖數據庫&#xff08;Graph DBMS&#xff09;2.3 鍵值存儲&#xff08;Key-Value Store&#xff09;…

springboot項目讀取resources目錄下文件

要用以下這種方式讀取 classPathResource new ClassPathResource("template/test.docx");不能用以下這種獲取絕對路徑的方式&#xff0c;idea調試正常&#xff0c;但是部署window和linux的目錄結構不一樣&#xff0c;部署后會找不到文件&#xff0c;另外window直接…

Ruby語言的軟件開發工具

Ruby語言的軟件開發工具概述 引言 Ruby是一種簡單且功能強大的編程語言&#xff0c;它以優雅的語法和靈活性而聞名。自1995年首次發布以來&#xff0c;Ruby已經被廣泛應用于各種開發領域&#xff0c;特別是Web開發。隨著Ruby語言的普及&#xff0c;相關的開發工具也日益豐富。…

C++例程:使用I/O模擬IIC接口(6)

完整的STM32F405代碼工程I2C驅動源代碼跟蹤 一&#xff09;myiic.c #include "myiic.h" #include "delay.h" #include "stm32f4xx_rcc.h" //初始化IIC void IIC_Init(void) { GPIO_InitTypeDef GPIO_InitStructure;RCC_AHB1PeriphCl…

CNN-BiLSTM-Attention模型詳解及應用分析

CNN-BiLSTM-Attention結構 CNN-BiLSTM-Attention結構是一種強大的深度學習架構,巧妙地結合了三種不同的技術優勢:卷積神經網絡(CNN)、雙向長短期記憶網絡(BiLSTM)和注意力機制(Attention)。這種創新性的組合使得模型能夠在處理復雜序列數據時表現出色,尤其適用于自然…

2025年華為OD上機考試真題(Java)——整數對最小和

題目&#xff1a; 給定兩個整數數組array1、array2&#xff0c;數組元素按升序排列。假設從array1、array2中分別取出一個元素可構成一對元素&#xff0c;現在需要取出k對元素&#xff0c;并對取出的所有元素求和&#xff0c;計算和的最小值。 注意&#xff1a;兩對元素如果對應…

【Java知識】Groovy 一個兼容java的編程語言

groovy語言介紹 概述一、基本特點二、主要特性三、應用領域四、與Java的比較 基本語法特性一、基本語法二、數據類型三、運算符四、字符串五、方法六、閉包七、類與對象八、異常處理九、其他特性 集成到springboot項目1. 創建Spring Boot項目2. 添加Groovy依賴3. 編寫Groovy類4…

Python網絡爬蟲:從入門到實戰

Python以其簡潔易用和強大的庫支持成為網絡爬蟲開發的首選語言。本文將系統介紹Python網絡爬蟲的開發方法&#xff0c;包括基礎知識、常用工具以及實戰案例&#xff0c;幫助讀者從入門到精通。 什么是網絡爬蟲&#xff1f; 網絡爬蟲&#xff08;Web Crawler&#xff09;是一種…

【vLLM 學習】安裝

vLLM 是一款專為大語言模型推理加速而設計的框架&#xff0c;實現了 KV 緩存內存幾乎零浪費&#xff0c;解決了內存管理瓶頸問題。 更多 vLLM 中文文檔及教程可訪問 →https://vllm.hyper.ai/ vLLM 是一個 Python 庫&#xff0c;包含預編譯的 C 和 CUDA (12.1) 二進制文件。 …

npm : 無法加載文件 D:\SoftFile\npm.ps1,因為在此系統上禁止運行腳本。

這個錯誤是由于 Windows PowerShell 的執行策略禁止執行腳本&#xff0c;導致無法運行 npm 命令。你可以通過以下步驟來解決這個問題&#xff1a; 以管理員身份運行 PowerShell&#xff1a; 點擊“開始”菜單&#xff0c;搜索“PowerShell”&#xff0c;然后右鍵點擊“Windows …

7 分布式定時任務調度框架

先簡單介紹下分布式定時任務調度框架的使用場景和功能和架構&#xff0c;然后再介紹世面上常見的產品 我們在大型的復雜的系統下&#xff0c;會有大量的跑批&#xff0c;定時任務的功能&#xff0c;如果在獨立的子項目中單獨去處理這些任務&#xff0c;隨著業務的復雜度的提高…

網絡安全 | 網絡安全法規:GDPR、CCPA與中國網絡安全法

網絡安全 | 網絡安全法規&#xff1a;GDPR、CCPA與中國網絡安全法 一、前言二、歐盟《通用數據保護條例》&#xff08;GDPR&#xff09;2.1 背景2.2 主要內容2.3 特點2.4 實施效果與影響 三、美國《加利福尼亞州消費者隱私法案》&#xff08;CCPA&#xff09;3.1 背景3.2 主要內…