2022年国赛高教杯数学建模A题波浪能最大输出功率设计解题全过程文档及程序

本文主要是介绍2022年国赛高教杯数学建模A题波浪能最大输出功率设计解题全过程文档及程序,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

2022年国赛高教杯数学建模

A题 波浪能最大输出功率设计

原题再现

  随着经济和社会的发展,人类面临能源需求和环境污染的双重挑战,发展可再生能源产业已成为世界各国的共识。波浪能作为一种重要的海洋可再生能源,分布广泛,储量丰富,具有可观的应用前景。波浪能装置的能量转换效率是波浪能规模化利用的关键问题之一。
  图 1 为一种波浪能装置示意图,由浮子、振子、中轴以及能量输出系统(PTO,包括弹簧和阻尼器)构成,其中振子、中轴及 PTO 被密封在浮子内部;浮子由质量均匀分布的圆柱壳体和圆锥壳体组成;两壳体连接部分有一个隔层,作为安装中轴的支撑面;振子是穿在中轴上的圆柱体,通过 PTO 系统与中轴底座连接。在波浪的作用下,浮子运动并带动振子运动(参见附件 1 和附件 2),通过两者的相对运动驱动阻尼器做功,并将所做的功作为能量输出。考虑海水是无粘及无旋的,浮子在线性周期微幅波作用下会受到波浪激励力(矩)、附加惯性力(矩)、兴波阻尼力(矩)和静水恢复力(矩)。在分析下面问题时,忽略中轴、底座、隔层及 PTO 的质量和各种摩擦。
在这里插入图片描述
  请建立数学模型解决以下问题:
  问题 1 如图 1 所示,中轴底座固定于隔层的中心位置,弹簧和直线阻尼器一端固定在振子上,一端固定在中轴底座上,振子沿中轴做往复运动。直线阻尼器的阻尼力与浮子和振子的相对速度成正比,比例系数为直线阻尼器的阻尼系数。考虑浮子在波浪中只做垂荡运动(参见附件 1),建立浮子与振子的运动模型。初始时刻浮子和振子平衡于静水中,利用附件 3 和附件 4 提供的参数值(其中波浪频率取 1.4005 s−1,这里及以下出现的频率均指圆频率,角度均采用弧度制),分别对以下两种情况计算浮子和振子在波浪激励力 𝑓 cos 𝜔𝑡(𝑓 为波浪激励力振幅,𝜔 为波浪频率)作用下前 40 个波浪周期内时间间隔为 0.2 s 的垂荡位移和速度:(1) 直线阻尼器的阻尼系数为 10000 N·s/m;(2) 直线阻尼器的阻尼系数与浮子和振子的相对速度的绝对值的幂成正比,其中比例系数取 10000,幂指数取 0.5。将结果存放在 result1-1.xlsx 和result1-2.xlsx 中。在论文中给出 10 s、20 s、40 s、60 s、100 s 时,浮子与振子的垂荡位移和速度。

  问题 2 仍考虑浮子在波浪中只做垂荡运动,分别对以下两种情况建立确定直线阻尼器的最优阻尼系数的数学模型,使得 PTO 系统的平均输出功率最大:(1) 阻尼系数为常量,阻尼系数在区间 [0,100000] 内取值;(2) 阻尼系数与浮子和振子的相对速度的绝对值的幂成正比,比例系数在区间 [0,100000] 内取值,幂指数在区间 [0,1] 内取值。利用附件 3 和附件 4 提供的参数值(波浪频率取 2.2143 s−1)分别计算两种情况的最大输出功率及相应的最优阻尼系数。
  问题 3 如图 2 所示,中轴底座固定于隔层的中心位置,中轴架通过转轴铰接于中轴底座中心,中轴绕转轴转动,PTO 系统连接振子和转轴架,并处于中轴与转轴所在的平面。除了直线阻尼器,在转轴上还安装了旋转阻尼器和扭转弹簧,直线阻尼器和旋转阻尼器共同做功输出能量。在波浪的作用下,浮子进行摇荡运动,并通过转轴及扭转弹簧和旋转阻尼器带动中轴转动。振子随中轴转动,同时沿中轴进行滑动。扭转弹簧的扭矩与浮子和振子的相对角位移成正比,比例系数为扭转弹簧的刚度。旋转阻尼器的扭矩与浮子和振子的相对角速度成正比,比例系数为旋转阻尼器的旋转阻尼系数。考虑浮子只做垂荡和纵摇运动(参见附件 2),建立浮子与振子的运动模型。初始时刻浮子和振子平衡于静水中,利用附件 3 和附件 4 提供的参数值(波浪频率取 1.7152 s−1),假定直线阻尼器和旋转阻尼器的阻尼系数均为常量,分别为 10000 N·s/m和 1000 N·m·s,计算浮子与振子在波浪激励力和波浪激励力矩 𝑓 cos 𝜔𝑡,𝐿 cos 𝜔𝑡(𝑓 为波浪激励力振幅,𝐿 为波浪激励力矩振幅,𝜔 为波浪频率)作用下前 40 个波浪周期内时间间隔为 0.2 s 的垂荡位移与速度和纵摇角位移与角速度。将结果存放在 result3.xlsx 中。在论文中给出 10 s、20 s、40 s、60 s、100 s 时,浮子与振子的垂荡位移与速度和纵摇角位移与角速度。
在这里插入图片描述
在这里插入图片描述
  问题 4 考虑浮子在波浪中只做垂荡和纵摇的情形,针对直线阻尼器和旋转阻尼器的阻尼系数均为常量的情况,建立确定直线阻尼器和旋转阻尼器最优阻尼系数的数学模型,直线阻尼器和旋转阻尼器的阻尼系数均在区间 [0,100000] 内取值。利用附件 3 和附件 4 提供的参数值(波浪频率取 1.9806 s−1)计算最大输出功率及相应的最优阻尼系数。
  附件 1 垂荡的动画
  附件 2 垂荡和纵摇的动画
  附件 3 不同入射波浪频率下的附加质量、附加转动惯量、兴波阻尼系数、波浪激励力(矩)振幅
  附件 4 浮子和振子的物理参数和几何参数值

整体求解过程概述(摘要)

  本文在求波浪能最大输出功率设计中,通过受力分析,建立了浮子和振子的垂荡和纵摇运动模型,并通过四阶龙格库塔算法将建立的连练微分方程离散化处理,递推求出了相应时间内浮子和振子的垂荡纵摇运动情况。同时对功率的积分函数值以微小步长为底的梯形面积替代,通过遗传算法搜索参数,求出了最大输出功率和相应的最优阻尼系数,并对模型进行了检验和误差分析。
  针对问题一:首先,基于对坐标系灵活选取,通过牛顿第二定律,建立浮子和振子相互作用的垂荡运动模型。其次,根据模型及初始运动状态确定了垂荡运动的二元二阶力学微分方程。最后,利用改进的龙格库塔算法对处理后的方程进行选代求解,得到了浮子和振子在前40个周期内时间间隔为0.2s的垂荡位移和速度。结果详细见表2。
  针对问题二:在浮子和振子相互作用的垂荡运动模型基础上,推导出了直线阻尼平均输出功率积分函数,建立了以垂荡运动装置的平均输出功率最大为目标的单目标优化模型。同时为求解该积分值,本文利用微小值作为底的梯形面积近似代替该函数值,且选取100s后的稳定状态作为区间求出平均输出功率,所需数值可由垂荡运动模型确定。最后,利用遗传算法搜索参数,确定在(1)条件下,最大平均输出功率为229.6819w,最优直线阻尼系数为37639;在(2)条件下,最大平均输出功率为230.0163w,最优直线阻尼系数为81478,幂指数为0.3377。
  针对问题三:首先,基于刚体转动的平行移轴定理和垂直轴定理、组合体重心计算公式,得到浮子和振子的纵摇运动的转动惯量函数。其次,基于牛顿第二定律,建立浮子和振子的纵摇运动模型。再进一步,确定了垂荡和纵据之间的联系,得到该模型方程为四元二阶微分方程。最后,利用龙格塔库草法选代求解该微分方程前40个波浪周期内时间间隔为0.2s的垂荡位移与速度、纵摇角位移与角速度。结果见表3。
  针对问题四:在浮子和振子的纵摇模型的基础上,同样推导出了旋转阻尼平均输出功率积分函数,在同时考虑垂荡和纵摇基础上,建立了以同时考虑摇荡和纵摇运动的平均输出功率最大为目标的单目标优化模型。为求解该积分函数,对连续功率函数进行与问题二相同的离散化处理,且选取100s后的稳定状态作为区间求出平均输出功率,所需数值可由垂荡、纵摇运动模型得出。最后,采用遗传搜索算法求解,确定最大平均输出功率为316.5807w,最优直线阻尼系数为58944,最优旋转阻尼系数为98227。

模型假设:

  1.由于作用于浮子的波浪为线性周期微幅波,忽略波面的升高
  2.流场内海水是理想流体,无粘、无旋、不可压缩。
  3.忽略纵摇运动对垂荡运动的影响
  4.忽略中轴、底座、隔层及 PTO 的质量和各种摩擦。

问题分析:

  问题一分析:
  问题一需要根据波浪激励力建立浮子与振子运动模型。本题难点在于准确反映浮子和振子振动的物理过程。对此,灵活选取坐标系,基于牛顿第二定律,建立浮子和振子垂荡运动二阶二元微分方程。继而对微分方程采用改进的四阶龙格塔库算法求解,实现了高精度的要求。
  问题二分析:
  在问题一的基础上,需要利用附件三和附件四的参数值,求出指定情况下能使系统平均输出功率最大的最优阻尼系数。本题选定通过合理的时间区间,推导平均功率函数,继而建立直线阻尼器阻尼系数的优化模型,利用龙格塔库法粗略寻优后采用遗传算法,分别求出阻尼系数为常量、阻尼系数随相对速度变化时两种情况下的最大平均输出功率以及对应的最优阻尼系数。
  问题三分析:
  本题需进一步考虑纵摇运动。对此基于牛顿第二定律,建立纵摇运动模型,并利用组合体的重心计算公式、刚体转动的垂直轴定理和平行移轴定理,实现振荡浮子式波浪能发电装置的转动惯量的计算。最后用改进的四阶龙格塔库算法实现问题三的求解,
  问题四分析
  在问题三的基础上,针对直线阻尼器和旋转阻尼器的系数均为常量的情况,需要确定指定取值范围内,使平均输出功率最大的最优阻尼系数。对此,建立阻尼系数的优化模型,选取系统稳定响应后的一段时间计算垂荡运动、纵摇运动的平均输出功率,利用龙格塔库法粗略寻优后,采用遗传算法快速求解得到最大输出功率和相应的最优阻尼系数。

模型的建立与求解整体论文缩略图

在这里插入图片描述

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

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

function [T,X,dX] = ODE_ImprovedEuler( Hfun,t,h,x0 )
% [T,X,dX] = ODE_ImprovedEuler( Hfun,t,h,x0 ) 改进欧拉法求解常微分方程
% Hfun为描述一阶微分方程导数的函数句柄,格式为 dX = Hfun( t,X )
% t为时间节点,可为标量,时间范围为 T = 0:h:t
%             长2向量 ,时间范围为 T = t(1):h:t(2)
%             向量 ,时间范围为 T = t
% h为时间步长,在t的前两种情况下,必须给出h具体值
% 直接给出时间节点t时,h可用[]或任意值占位
% x0为状态量初始值
% 算法:
%      Xp = X(k-1) + h*dX(k-1)
%      dXp = Hfun( T(k),Xp )
%      X(k) = X(k-1) + (h/2)*[dX(k-1)+dXp]
% By ZFS@wust  2021
% 获取更多Matlab/Simulink原创资料和程序,清关注微信公众号:Matlab Fansif nargin < 4error('初始值必须给出');
end  % 确定时间节点
n = length(t);
if n == 1T = 0:h:t;
elseif n == 2T = t(1):h:t(2);
elseT = t;
end
T = T(:);    % 时间变为列向量% 计算
N = length(T);
x0 = x0(:);  x0 = x0';     % 初值变为行向量  
m = length(x0);            % 状态量维数
X = zeros(N,m);            % 初始化状态量
dX = zeros(N,m);           % 状态导数
X(1,:) = x0;
for k = 2:NdX(k-1,:) = Hfun( T(k-1),X(k-1,:) );   h = T(k) - T(k-1);Xp = X(k-1,:) + h*dX(k-1,:);dXp = Hfun( T(k),Xp );X(k,:) = X(k-1,:) + (h/2)*(dX(k-1,:)+dXp');
end
dX(N,:) = Hfun( T(N),X(N,:) );if nargout == 0plot(T,X)
end
function [T,X,dX] = ODE_RK4( Hfun,t,h,x0 )
% [T,X] = ODE_RK4( Hfun,t,h,x0 ) 4阶龙格-库塔法求解常微分方程
% Hfun为描述状态导数的函数句柄,格式为 dX = Hfun( t,X )
% 必须保证返回dX的格式为行向量
% t为时间节点,可为标量,时间范围为 T = 0:h:t
%             长2向量 ,时间范围为 T = t(1):h:t(2)
%             向量 ,时间范围为 T = t
% h为时间步长,在t的前两种情况下,必须给出h具体值
% 直接给出时间节点t时,h可用[]或任意值占位
% x0为状态量初始值  
% 算法:
%      K1  = Hfun( t(k-1),X(k-1) ) =  dX(k-1)
%      K2 =  Hfun( t(k-1)+h/2,X(k-1)+h*K1/2 )
%      K3 =  Hfun( t(k-1)+h/2,X(k-1)+h*K2/2 )
%      K4 =  Hfun( t(k-1)+h  ,X(k-1)+h*K3 )
%    X(k) =  X(k-1) + (h/6) * (K1 + 2*K2 + 2*K3 +K4)if nargin < 4error('初始值必须给出');
end  
if isstr(Hfun)eval(['Hfun = @',Hfun,';']);
end% 确定时间节点
n = length(t);
if n == 1T = 0:h:t;
elseif n == 2T = t(1):h:t(2);
elseT = t;
end
T = T(:);    % 时间变为列向量% 计算
N = length(T);
x0 = x0(:);  
x0 = x0';                  % 初值变为行向量  
m = length(x0);            % 状态量维数
X = zeros(N,m);            % 初始化状态量
dX = zeros(N,m);           % 状态导数
X(1,:) = x0;
for k = 2:Nh = T(k) - T(k-1);K1 = Hfun( T(k-1)     , X(k-1,:)' );    K2 = Hfun( T(k-1)+h/2 , X(k-1,:)'+h*K1/2 ); K3 = Hfun( T(k-1)+h/2 , X(k-1,:)'+h*K2/2 ); K4 = Hfun( T(k-1)+h   , X(k-1,:)'+h*K3 ); X(k,:) = X(k-1,:)' + (h/6) * ( K1 + 2*K2 + 2*K3 + K4 );      dX(k-1,:) = (1/6) * ( K1 + 2*K2 + 2*K3 + K4 );
end
dX(N,:) = Hfun( T(N),X(N,:) );if nargout == 0plot(T,X)
end
全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可

这篇关于2022年国赛高教杯数学建模A题波浪能最大输出功率设计解题全过程文档及程序的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/267509

相关文章

win10安装及配置Gradle全过程

《win10安装及配置Gradle全过程》本文详细介绍了Gradle的下载、安装、环境变量配置以及如何修改本地仓库位置,通过这些步骤,用户可以成功安装并配置Gradle,以便进行项目构建... 目录一、Gradle下载1.1、Gradle下载地址1.2、Gradle下载步骤二、Gradle安装步骤2.1、安

idea+spring boot创建项目的搭建全过程

《idea+springboot创建项目的搭建全过程》SpringBoot是Spring社区发布的一个开源项目,旨在帮助开发者快速并且更简单的构建项目,:本文主要介绍idea+springb... 目录一.idea四种搭建方式1.Javaidea命名规范2JavaWebTomcat的安装一.明确tomcat

使用EasyPoi快速导出Word文档功能的实现步骤

《使用EasyPoi快速导出Word文档功能的实现步骤》EasyPoi是一个基于ApachePOI的开源Java工具库,旨在简化Excel和Word文档的操作,本文将详细介绍如何使用EasyPoi快速... 目录一、准备工作1、引入依赖二、准备好一个word模版文件三、编写导出方法的工具类四、在Export

java程序远程debug原理与配置全过程

《java程序远程debug原理与配置全过程》文章介绍了Java远程调试的JPDA体系,包含JVMTI监控JVM、JDWP传输调试命令、JDI提供调试接口,通过-Xdebug、-Xrunjdwp参数配... 目录背景组成模块间联系IBM对三个模块的详细介绍编程使用总结背景日常工作中,每个程序员都会遇到bu

利用Python操作Word文档页码的实际应用

《利用Python操作Word文档页码的实际应用》在撰写长篇文档时,经常需要将文档分成多个节,每个节都需要单独的页码,下面:本文主要介绍利用Python操作Word文档页码的相关资料,文中通过代码... 目录需求:文档详情:要求:该程序的功能是:总结需求:一次性处理24个文档的页码。文档详情:1、每个

Python内存管理机制之垃圾回收与引用计数操作全过程

《Python内存管理机制之垃圾回收与引用计数操作全过程》SQLAlchemy是Python中最流行的ORM(对象关系映射)框架之一,它提供了高效且灵活的数据库操作方式,本文将介绍如何使用SQLAlc... 目录安装核心概念连接数据库定义数据模型创建数据库表基本CRUD操作创建数据读取数据更新数据删除数据查

在Node.js中使用.env文件管理环境变量的全过程

《在Node.js中使用.env文件管理环境变量的全过程》Node.js应用程序通常依赖于环境变量来管理敏感信息或配置设置,.env文件已经成为一种流行的本地管理这些变量的方法,本文将探讨.env文件... 目录引言为什么使php用 .env 文件 ?如何在 Node.js 中使用 .env 文件最佳实践引

uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)

《uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)》在uni-app开发中,文件上传和图片处理是很常见的需求,但也经常会遇到各种问题,下面:本文主要介绍uni-app小程序项目中实... 目录方式一:使用<canvas>实现图片压缩(推荐,兼容性好)示例代码(小程序平台):方式二:使用uni

Python绘制TSP、VRP问题求解结果图全过程

《Python绘制TSP、VRP问题求解结果图全过程》本文介绍用Python绘制TSP和VRP问题的静态与动态结果图,静态图展示路径,动态图通过matplotlib.animation模块实现动画效果... 目录一、静态图二、动态图总结【代码】python绘制TSP、VRP问题求解结果图(包含静态图与动态图

C++读写word文档(.docx)DuckX库的使用详解

《C++读写word文档(.docx)DuckX库的使用详解》DuckX是C++库,用于创建/编辑.docx文件,支持读取文档、添加段落/片段、编辑表格,解决中文乱码需更改编码方案,进阶功能含文本替换... 目录一、基本用法1. 读取文档3. 添加段落4. 添加片段3. 编辑表格二、进阶用法1. 文本替换2