2019年国赛高教杯数学建模B题同心协力策略研究解题全过程文档及程序

2019年国赛高教杯数学建模

B题 同心协力策略研究

原题再现

  “同心协力”(又称“同心鼓”)是一项团队协作能力拓展项目。该项目的道具是一面牛皮双面鼓,鼓身中间固定多根绳子,绳子在鼓身上的固定点沿圆周呈均匀分布,每根绳子长度相同。团队成员每人牵拉一根绳子,使鼓面保持水平。项目开始时,球从鼓面中心上方竖直落下,队员同心协力将球颠起,使其有节奏地在鼓面上跳动。颠球过程中,队员只能抓握绳子的末端,不能接触鼓或绳子的其他位置。
2019年国赛高教杯数学建模B题同心协力策略研究解题全过程文档及程序_第1张图片
  项目所用排球的质量为 270 g。鼓面直径为 40 cm,鼓身高度为 22 cm,鼓的质量为 3.6 kg。队员人数不少于 8 人,队员之间的最小距离不得小于 60 cm。项目开始时,球从鼓面中心上方 40 cm 处竖直落下,球被颠起的高度应离开鼓面40 cm 以上,如果低于 40cm,则项目停止。项目的目标是使得连续颠球的次数尽可能多。
  试建立数学模型解决以下问题:
  1. 在理想状态下,每个人都可以精确控制用力方向、时机和力度,试讨论这种情形下团队的最佳协作策略,并给出该策略下的颠球高度。
  2. 在现实情形中,队员发力时机和力度不可能做到精确控制,存在一定误差,于是鼓面可能出现倾斜。试建立模型描述队员的发力时机和力度与某一特定时刻的鼓面倾斜角度的关系。设队员人数为 8,绳长为 1.7m,鼓面初始时刻是水平静止的,初始位置较绳子水平时下降 11 cm,表 1 中给出了队员们的不同发力时机和力度,求 0.1 s 时鼓面的倾斜角度。

2019年国赛高教杯数学建模B题同心协力策略研究解题全过程文档及程序_第2张图片
  3. 在现实情形中,根据问题 2 的模型,你们在问题 1 中给出的策略是否需要调整?如果需要,如何调整?
  4. 当鼓面发生倾斜时,球跳动方向不再竖直,于是需要队员调整拉绳策略。假设人数为 10,绳长为 2m,球的反弹高度为 60cm,相对于竖直方向产生 1 度的倾斜角度,且倾斜方向在水平面的投影指向某两位队员之间,与这两位队员的夹角之比为 1:2。为了将球调整为竖直状态弹跳,请给出在可精确控制条件下所有队员的发力时机及力度,并分析在现实情形中这种调整策略的实施效果。

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

  “同心协力”是一项团队协作能力拓展项目,有较广泛的普及面。本文对同心鼓的颠球策略进行研究,分析同心鼓与排球的碰撞过程,综合考虑队员牵拉同心鼓的实际操作、边界和初始条件,在队员水平牵拉绳的假设下,建立球鼓碰撞模型和同心鼓运动模型,该模型可用于计算在特定情况下同心鼓的运动参数,并在鼓面发生倾斜时,给出相应调整策略。
  对于问题一:通过假设队员的手仅在水平方向上移动,将同心鼓的三维运动模型进行简化。考虑队员施加在绳子上的力大小恒定,建立基于牛顿第二定律的二阶常系数微分方程,确定初边值条件,得到描述同心鼓的高度及速度的方程。基于动量守恒定理与能量守恒定理,考虑到同心鼓及排球碰撞时发生的能量损失,建立起队员拉绳所消耗的功率的数学描述。由于不同参赛队员的用力偏好差异性极大,在给定队员所偏好的用力大小及频率下,可求得相对应的最优方案。在本文中,我们以参赛队员的耗能应尽可能地小为目标给出团队的最佳协作策略。
  对于问题二:基于欧拉旋转定理,鼓的运动可描述为沿 Z 轴方向的平动及绕 X轴、Y 轴转动。由于同心鼓的转角 α、β 都为小量,我们讨论并分析了小角度转动与转动顺序无关的条件,将模型三维转动求解转化为两个自由度上的独立求解问题。基于牛顿第二定律及转动定律,得到 0.1s 时,九种工况下鼓面的倾斜角度分别为:0.2124°0.3885°0.1649°0.2270°0.4123°0.1749°0.2175°0.1359°0.3401°从理论和结果进行分析,得到转动顺序对结果影响占次要因素,模型可分解为两个自由度的独立转动。
  对于问题三:由问题二建立的模型可知,在非理想状态下,发力大小与时机的不精准控制将导致同心鼓发生小角度倾斜,因此我们针对问题一所建立的模型存在一定的不完善性,需要进行相应的调整。我们分别从调整参赛队员的拉绳拉力大小、调整鼓面倾斜状态、调整队员的水平位置三个方面整体地对模型进行优化,分析并讨论了各个方面的调整对最终结果的影响,以给出在现实情形中适应性能更强的团队协作策略。
  对于问题四:本文针对给定排球偏斜竖直方向运动的特殊情况,分析调整鼓面倾角与倾向的解决方法,并以此建立多目标规划的最佳策略模型,基于模拟退火算法的相关思想,通过分析约束条件及目标函数,针对团队协作策略的有效性与协调性进行全局优化,并对优化结果进行分析处理,得到了在题设情况下队员的拉绳策略。并以此分析在现实情形中这种调整策略的实施效果。
  综上所述,本文综合分析了同心鼓在不同情况下的运动姿态,得到了有效地调整碰撞过程中所产生的偏差的方法,并且该方法给出了一种适应不同情况下团队的协作策略,具有较好的普适性。

模型假设:

  1. 在分析研究鼓体及排球运动过程中的受力时,忽略排球和鼓的运动以及牵引绳振动中所产生的空气阻力的影响。
  2. 假设牵引同心鼓运动的绳子是理想绳, 即绳子不可伸长,且绳子为轻质绳,绳所提供的拉力始终沿着绳。
  3. 假设队员每次拉绳的力恒定,且在其发力时机时瞬时将拉绳的力变化为新的受力大小,且力是瞬间施加在鼓上的。
  4. 假设参与拉绳的队员均匀对称地分布在以同心鼓鼓面中心为圆心的圆周上,鼓的中心始终在过圆心的竖直轴上运动,鼓的水平运动由队员整体的水平运动提供,不考虑鼓相对于队员的水平运动。
  5. 假设鼓与排球碰撞时,排球始终保持平动状态,且忽略排球与鼓面非对心碰撞时所产生的瞬时冲量矩。
  6. 忽略鼓与球碰撞之后,队员恢复初始拉力时鼓的复杂运动,且假设每次鼓与球碰撞后鼓都能够恢复到初始水平状态。
  7. 为保证比赛的稳定且有序的进行,假设队员在调整好颠球的状态之后,更倾向于有规律的周期性颠球,即其每两次发力之间的时间间隔与排球每次被颠起并落下的时间相同,并称该时间为一个运动周期。

问题分析:

  题目要求我们在精确控制用力方向、时机和力度的理想状态下,给出颠球的最优协作策略及在该策略下的颠球高度。

  本题目的重点是要将球撞击同心鼓并弹起这一过程进行物理模型的简化,该碰撞过程为接近弹性碰撞的非弹性碰撞模型,每次都会将体系中小部分能量通过碰撞的形式耗散,而队员拉鼓为整个体系补充消耗的能量。为了达到最佳的协作策略,队员需在使得连续颠球的次数尽可能多的前提下,减少能量的消耗,获得更佳的舒适度和游戏体验感。

  现实中人通过拉动绳子而使同心鼓做上升运动的过程十分复杂,根据主次分析法,笔者将人手的运动轨迹理想化为水平方向的运动,且每位队员手的高度位于同一水平面上。为了更好地利用能量,需假设在鼓速度最大时与排球发生碰撞,且碰撞后小球仅发生速度方向的改变,而速度大小不发生改变。此时,小球弹起的高度与队员所施加的力以及力持续的时间可以建立起物理关系,从而得到最佳的协作策略。

  在现实情形中,队员发力时机和力度都存在一定误差,鼓面可能会出现倾斜而使球的位置发生偏移,题目要求我们不同队员出现失误的情况下,求出鼓面的倾斜角度。

  假设同心鼓为刚体,本题目的重点是计算得到不同大小与不同时机的力作用下,同心鼓在空间中的姿态。刚体在空间中的大角度转动不具有交换性,但是空间小角度转动与次序无关,因此本题可将同心鼓的转动分解成多个方向的转动,再进行叠加求和。每位队员用力相等时,同心鼓上下运动而不会发生偏转;当队员在同心鼓上作用较大的力时,则所有的力对转动点的矩不再能够平衡,鼓面将发生转动;当队员作用力提早 0.1s 施加,则前 0.1s 内,队员对同心鼓的作用可视作提早施力的队员作用较大的力,而其他队员仍保持用以平衡同心鼓重力的恒力 F0,使同心鼓在零时刻后以一个初始偏转角进行运动。因此,在第一问所建立的模型基础上,可通过同心鼓的运动微分方程,得到不同工况下 0.1s 时同心鼓鼓面
的倾斜角度。

  根据问题一的分析及简化后的物理模型,由于实际过程中的诸多因素,参赛队员的用力大小及时机无法精准控制,会出现作用力数值及作用时机上的偏差。进而导致简化模型中的物理过程发生变化,即同心鼓在做上升运动的过程中可能会出现倾斜,进而导致排球被颠起后的轨迹发生变化,由原来的竖直上抛运动变为斜上抛运动。与此同时,作用力的大小不同还将对同心鼓的质心产生水平方向的加速度。综合上述两种不确定因素,要求参赛人员不但能够提供竖直方向的位移和速度,以补偿颠球过程中的能量损耗,而且需要使鼓面尽量保持水平,并适当旋转一定角度以调整倾斜排球的运动轨迹。参赛人员需要做出足够迅速的水平移动,使排球能够达到指定颠球高度的游戏规则。

  由前三问的分析与求解,对于每一次颠球过程,我们已经可以得到各队员不同的发力时机与力度对碰撞时鼓面倾斜角度的影响关系,即对于给定的初始条件()每个队员的初始拉力 F0,加力拉绳时的发力时机 t 与力度 F),我们即可计算出鼓面倾角的一组数值解 (α, β, γ) = angle(F0, t, F)。由此,鼓的运动状态可以通过队员拉绳的初始条件来得到精确控制。
  在该问题的情形中,由于鼓面产生了微小角度的偏移,导致在上一次颠球完成之后球偏离竖直方向弹出。为了将球的运动状态重新调整为竖直,我们则需要改变下一次颠球时鼓面的倾斜角度与方向以消除上一次颠球所造成的影响。根据前文所建立的模型,该问题即转化为由已知的鼓面碰撞时的运动状态,反过来调整队员初始拉绳的发力时机与力度等初始条件,由此,队员的发力时机和力度需要调整到恰好使得在下一次颠球时鼓面的速度、位置、倾向与倾角满足要求,我们不妨视这种要求为对初始条件的一种约束,并以此建立以搜寻多人协作最佳拉绳方式为目标的多目标非线性优化问题。要解决这种在初始条件受到限制的最优解的规划问题。首先要确定目标函数与约束条件。目标函数方面我们首先需要精准控制下一次颠球时鼓面的倾斜方向及大小,在满足这个条件的前提下,我们还希望团队协作的方式是容易操作且稳定的,那么就需要队员们拉绳时需要满足:(1) 每位队员用力拉绳前后拉力的变化值应尽可能地小;(2) 每位队员拉绳的力应尽可能地相同;(3) 每位队员应尽可能地同时拉绳,即每位队员地用力时机应尽可能地一致;分析可知这些目标所蕴含的关系比较复杂, 其中的关系不易用线性关系进行表达,因此无法用一般的线性规划方法解决该问题。
  考虑约束条件:该问题的约束主要包括: (1) 速度约束,鼓与球碰撞时的速度应保证碰撞之后球能够回到初始下落的高度; (2) 时间约束,鼓在受拉上升至达到碰撞速度的时,球与鼓应恰好接触并发生碰撞;(3) 软约束,某位队员作用在绳上的拉力不应太大或太小,某位队员拉绳的用力时机不宜过早或过晚等。综上所述, 我们希望生成一个合理且可行的团队协作方案,由于该优化问题中目标及约束条件均为复杂的非线性关系,我们决定采用现代优化算法来进行合理地解决。借助模拟退火算法的思想,我们希望产生一个可行的初始方案,并希望在其” 邻域” 内尝试寻找其他更优的解,其新方案由对原方案作一些合适的” 扰动” 来获取。我们通过一定的手段避免落入局部最优以及加入收敛判定, 由此不断地进行迭代搜索,并最终找到全局最优的解。

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

2019年国赛高教杯数学建模B题同心协力策略研究解题全过程文档及程序_第3张图片
2019年国赛高教杯数学建模B题同心协力策略研究解题全过程文档及程序_第4张图片

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

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

The actual procedure is shown in the screenshot

function [v10,v20,v1,v2]=speed2(h)
g = 9.8;
e = 0.90; %恢复系数
m1 = 0.27;
m2 = 3.6;
v10 = sqrt(2*g*h);
v1 = -v10;
v20 = v10-(2*v10*(m1+m2))/((1+e)*m2);
v2 = v10+(2*v10*(e*m1-m2))/(m2*(1+e));
disp([v10,v20,v1,v2]); 
%排球前后速度相同时的,排球和同心鼓的前后速度输出
function [x_gu_end,alpha,beta,gamma]=x_alpha_beta(t_end,n_question)
tspan=[0 t_end];
[xx0 aa0 bb0 tt0]=tiqian(n_question);
x0=xx0(end);
dx0=(xx0(end)-xx0(end-1))/(tt0(end)-tt0(end-1));
a0=aa0(end);
da0=(aa0(end)-aa0(end-1))/(tt0(end)-tt0(end-1));
b0=bb0(end);
db0=(bb0(end)-bb0(end-1))/(tt0(end)-tt0(end-1));
x_gu0=[x0 dx0];
alpha0=[a0 da0];
beta0=[b0 db0];
[t,xrad]=ode45(@odefunxab,tspan,[x_gu0 alpha0 beta0],[],n_question);
x_gu=[xx0;xrad(:,1)];
x_gu_end=x_gu(end);
degree_alpha=[aa0;xrad(:,3)]*180/pi;
alpha=degree_alpha(end);
degree_beta=[bb0;xrad(:,5)]*180/pi;
beta=degree_beta(end);
gamma=asin(sqrt(sin(beta*pi/180)^2+sin(alpha*pi/180)^2))*180/pi;
fprintf(’同心鼓与水平面的夹角gamma为:%4.4f°’,gamma);
fprintf('\n');
tt=[tt0;t];
figure;
plot(tt,x_gu,'k-s','Linewidth',1.5);
title('鼓的竖直向位移值(做小角度处理)',18);
grid on;
figure;
plot(tt,degree_alpha,'r-o','Linewidth',1.5);
hold on;grid on;
plot(tt,degree_beta,'b-*','Linewidth',1.5);
legend('\alpha','\beta');
title('鼓的双向转动角度值(做小角度处理)',18);
function [Mx,My]=M0(theta,alpha,beta,n_question)
r=0.2;
vec_r=zeros(8,3);
vec_r(1,:)=r*[cos(alpha) 0 sin(alpha)]; vec_r(2,:)=r*sqrt(2)/2*[cos(alpha) 
cos(beta) sin(alpha)+sin(beta)];
vec_r(3,:)=r*[0 cos(beta) sin(beta)]; vec_r(4,:)=r*sqrt(2)/2*[-cos(alpha) 
cos(beta) -sin(alpha)+sin(beta)];
vec_r(5:8,:)=-vec_r(1:4,:);
vec_F=zeros(8,3);
[FF,tt]=member(n_question);
FF(tt==0)=68.1545;
F=FF;
vec_F(1,:)=F(1)*[cos(theta) 0 sin(theta)]; vec_F(2,:)=F(2)*[cos(theta)/sqrt(2) 
cos(theta)/sqrt(2) sin(theta)];
vec_F(3,:)=F(3)*[0 cos(theta) sin(theta)]; vec_F(4,:)=F(4)*[-cos(theta)/sqrt(2) 
cos(theta)/sqrt(2) sin(theta)];
vec_F(5,:)=F(5)*[-cos(theta) 0 sin(theta)]; vec_F(6,:)=F(6)*[-cos(theta)/sqrt(2) 
-cos(theta)/sqrt(2) sin(theta)];
vec_F(7,:)=F(7)*[0 -cos(theta) sin(theta)]; vec_F(8,:)=F(8)*[cos(theta)/sqrt(2)
-cos(theta)/sqrt(2) sin(theta)];
M=zeros(1,3);
for i=1:8
 M=M+cross(vec_r(i,:),vec_F(i,:));
end
Mx=-M(2);
My=M(1);
全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可

你可能感兴趣的:(国赛高教杯,数学建模,笔记,数学建模,学习,算法,国赛高教杯)