2023年数维杯国际大学生数学建模挑战赛A题复合直升机的建模与优化控制问题解题全过程论文及程序

news2024/11/22 9:31:44

2023年数维杯国际大学生数学建模挑战赛

A题 复合直升机的建模与优化控制问题

原题再现:

  直升机具有垂直起降等飞行能力,广泛应用于侦察、运输等领域。传统直升机的配置导致旋翼叶片在高速飞行过程中受到冲击波的影响,难以稳定飞行。为了在保持直升机灵活飞行能力的同时发展其高速飞行能力,将固定翼与旋翼相结合的复合直升机的设计已成为发展的重要方向。
  同轴直升机是一种典型的复合型直升机。这种配置主要由四个动力部件组成:同轴刚性转子、螺旋桨推进器以及水平和垂直尾翼。螺旋桨推进器的中心以及水平和垂直尾翼都位于飞行器机身的对称平面上。飞行机器的姿态角是指飞行过程中的滚转角ξ、俯仰角θ和偏航角ψ,相应的力矩称为滚转力矩、俯仰力矩和偏航力矩(如图1所示)。四个功率分量对飞行器姿态角的影响如下:1)同轴刚性转子产生的气动力矩可以近似为与空气密度ρ、转子盘面积和转子叶尖速度成正比的函数,正比例因子称为转子力矩因子。2) 螺旋桨推进器通过旋转产生推力和旋转力矩。3) 水平尾翼装有升降舵控制装置,可调节水平尾翼的相对角度以提供俯仰力矩。该力矩与动压、水平尾翼面积和水平尾翼与质心之间的横向距离成比例,比例系数称为水平尾翼力矩系数。4) 与水平尾翼类似,垂直尾翼通过安装方向舵控制装置来调节相对角度,从而提供偏航/滚转力矩。该力矩与动压、垂直尾翼面积以及垂直尾翼与质心之间的横向/纵向距离成比例,比例系数称为垂直尾翼力矩系数。
  复合材料直升机的可操纵部件如下:(1)同轴旋翼总距离u_c,(2)同轴旋翼差速总距离u_cd,(3)同轴旋翼纵向周距u_e,(4)同轴旋翼横向周距u_a,(5)螺旋桨推进器工作能力u_t,(6)升降舵偏转值u_eh,(7)方向舵偏转值uav。根据直升机的飞行速度,在低速模式下(通常指85米/秒以下的速度),姿态角控制主要通过同轴转子和螺旋桨推进器实现。在高速模式下(一般指100米/秒以上的速度),姿态角控制主要通过螺旋桨推进器、升降舵和方向舵实现。
  有一个同轴复合材料直升机原型的例子,该飞行器的一些空气动力学系数和机身参数已通过风洞实验获得,如附录I所示。
在这里插入图片描述
  B、 标题数据
  参见附录I。
  C、 需要解决的问题
  1、在给定参数的情况下,建立了复合直升机俯仰力矩表达式,建立了俯仰角变化模型。请提供飞行器在5s、10s和20s时的姿态角(初始飞行高度3000米,飞行速度前向分量80米/秒,垂直上升分量2米/秒,u\u c=0度、u\u cd=−2.1552度、u\u e=−3.4817度、u\u a=−2.0743度、u\u t=0度、u\u eh=−9.0772×10−7度、u\u av=4.1869×10−7度)
  2、在给定参数的基础上,建立了复合直升机横摇、俯仰和偏航力矩的表达式,并建立了姿态角变化模型。请提供飞行器在5s、10s和20s时的姿态角(初始飞行高度3000米,飞行速度前向分量80米/秒,垂直上升分量0.2米/秒,u\u c=0度、u\u cd=–2.1552度、u\u e=–3.4817度、u\u a=–2.0743度、u\u t=0度、u\u eh=–9.0772×10−7度、u\u av=4.1869×10−7度)。
  3、根据直升机在低速和高速飞行时的机动特性,设计各部件的机动幅度,以满足飞行器的水平飞行任务(零姿态角)(初始飞行高度3000米,飞行速度前向分量80米/秒,垂直上升分量0.2米/秒;初始飞行高度3000米,飞行速度前向分量180米/秒,垂直上升分量0.2米/秒)。
  4、考虑到直升机的加速度机动任务,当飞行速度前向分量在20秒内从80米/秒均匀增加到180米/秒(假设前向加速度完全由螺旋桨助推器提供)时,请根据直升机在低速和高速飞行(初始飞行高度3000米,飞行垂直上升分量率0.2米/秒)时的机动特性,设计每个控制输入的动态值,以实现飞机的前向加速度和水平飞行(零姿态角)。

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

  利用复合直升机的气动参数和机身参数对复合直升机进行力学分析,建立直升机的动力学微分方程,进而导出直升机姿态角变化模型。它还提供了不同时间点的姿态角数据,并规定了直升机各部件的控制值,以确保直升机顺利完成飞行任务。
  问题1:该问题要求建立直升机俯仰角变化模型,并提供特定时刻的特定俯仰角。在给定的基本条件下,分析了作用在直升机上的俯仰力矩。我们将俯仰力矩视为旋翼产生的气动力矩和水平尾翼的俯仰力矩之和。我们分别计算这两个力矩分量,得到总力矩。根据力矩与角加速度的关系,建立了直升机的动力学微分方程。通过求解该微分方程,得到了俯仰角的变化模型。
  问题2:该问题要求建立直升机三种不同姿态角变化的模型,并提供特定时刻的具体姿态角。在给定的基本条件下,分析了作用在直升机上的力矩。俯仰力矩为旋翼产生的气动力矩与水平尾翼的俯仰力矩之和,横摇力矩为旋翼产生的气动力矩与垂直尾翼的横摇力矩之和,横摆力矩为旋翼产生的气动力矩与垂直尾翼的横摆力矩之和。我们分别计算这些力矩分量,得到不同方向的总力矩。根据力矩与角速度的关系,建立了动力学微分方程。通过求解这些微分方程,得到了姿态角变化模型。
  问题3:该问题要求控制直升机不同部件在高速和低速两种情况下完成水平飞行任务。假设直升机以恒定速度飞行,在低速情况下,姿态角控制主要通过同轴旋翼实现,而在高速模式下,姿态角控制主要通过吊卡和方向舵实现。选取不同的控制输入,建立直升机在这两种情况下的动态微分方程,得到姿态角变化模型。优化目标是使不同时刻三个姿态角之和最小。采用粒子群优化算法,得到各部件的最优控制输入。
  问题4:该问题要求在直升机向前加速的同时,控制直升机不同部件完成水平飞行和向前加速任务。我们将飞行过程分为低速、中速和高速三个阶段,并在每个阶段选择不同的控制输入。建立了直升机在不同阶段的动力学微分方程,推导了姿态角变化模型。优化目标是使不同时刻三个姿态角之和最小。采用粒子群优化算法在不同时刻获得各部件的最优控制输入。

问题分析:

  问题1和问题2的分析
  问题1和问题2本质上是关于直升机的动态分析,唯一的区别是为每个问题提供不同的基础数据集。此外,问题1仅要求考虑俯仰力矩,而问题2涉及考虑所有三个方向的力矩。因此,我们采用相同的方法来分析这两个问题。将俯仰力矩视为旋翼产生的气动力矩与水平尾翼的俯仰力矩之和,将横摇力矩视为旋翼产生的气动力矩与垂直尾翼的横摇力矩之和,将横摆力矩视为旋翼产生的气动力矩与垂直尾翼的横摆力矩之和。我们分别计算这些力矩分量,得到不同方向的总力矩。然后,根据力矩与角速度的关系,建立动力学微分方程。通过求解这些微分方程,得到了姿态角变化模型。

  问题三分析
  问题三要求我们控制直升机顺利完成快速水平飞行任务。该问题建立在问题1和问题2建立的姿态角变化模型的基础上,用控制变量代替问题1和问题2给出的常数。我们用这些变量来表示姿态角,目的是最小化不同时刻的姿态角值之和。采用粒子群优化算法得到最优控制策略。

  问题4的分析
  问题4在问题3的基础上引入了一个变体,我们需要控制直升机以完成加速飞行任务。与问题3分别考虑高速和低速情况不同,问题4在单个飞行过程中结合了不同的速度条件。但是,对于低速、中速和高速时间段,我们仍然可以分段时间并选择不同的控制变量。需要注意的是,在前面的问题中,我们假设直升机以恒定速度飞行,而不考虑推进系统产生的扭矩。在问题4中,当直升机加速时,我们需要考虑推进系统产生的扭矩。以不同时刻姿态角值之和最小为目标,采用粒子群优化算法得到最优控制策略。

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

在这里插入图片描述

在这里插入图片描述

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

程序代码:

clc;
clear;
theta_final = [];
syms t theta(t)
F_dynamic = 1/2.*rho(t).*6404;
k_yaw = f2(sqrt(6404)/180)+g2(sqrt(6404)/180).*(-
3.4817)+m(sqrt(6404)/180).*(-2.1552);
M_yaw = k_yaw.*pi.*36.*rho(t).*1/2.*180.^2;
k_hor = -0.0001+phy_ud(sqrt(6404)/180).*(-9.0072).*0.0000001;
M_hor = k_hor.*F_dynamic.*1.*(-3);
M_total = M_yaw+M_hor;
% 定义二阶微分方程
eqn = 20000 * diff(theta, t, t) == M_total;
theta_d = diff(theta,t);
cond1 = theta(0) == 0;
cond2 = theta_d(0) == 0;
% 解微分方程
sol = simplify(dsolve(eqn, [cond1, cond2]));
% for t=0:0.1:20
% 
% theta_final=cat(1,theta_final,[t eval(simplify(subs(sol,'t',t)))]);
% 
% end
theta_final= eval(simplify(subs(sol,'t',20)))
clc;
clear;
theta_p_final=[];
theta_r_final =[];
theta_y_final=[];
syms t theta_p(t) theta_r(t) theta_y(t)
F_dynamic = 1/2.*rho(t).*6400.04;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 俯仰
k_pitch = f2(sqrt(6400.04)/180)+g2(sqrt(6400.04)/180).*(-
3.4817)+m(sqrt(6400.04)/180).*(-2.1552);
M_pitch = k_pitch.*pi.*36.*rho(t).*1/2.*180.^2;
k_hor = -0.0001+phy_ud(sqrt(6400.04)/180).*(-9.0772).*(-0.0000001);
M_hor = k_hor.*F_dynamic.*(-3);
M_y_total = M_pitch+M_hor; 
m(sqrt(6400.04)/180)
eval(simplify(subs(M_pitch,'t',20)))
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 滚动
k_roll = f1(sqrt(6400.04)/180)+g1(sqrt(6400.04)/180).*(-
2.0743)+c1(sqrt(6400.04)/180).*(-2.1552);
M_roll = k_roll.*pi.*36.*rho(t).*1/2.*180.^2;
k_ver_r = 
sigma_v(sqrt(6400.04)/180)+phy_dir(sqrt(6400.04)/180).*(4.1869).*0.000000
1;
M_ver_r = k_ver_r.*F_dynamic.*0.5.*(0.2);
M_x_total = M_roll+M_ver_r;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 偏航
k_yaw = f3(sqrt(6400.04)/180)+c3(sqrt(6400.04)/180).*(-2.1552);
M_yaw = k_yaw.*pi.*36.*rho(t).*1/2.*180.^2;
k_ver_y = 
sigma_v(sqrt(6400.04)/180)+phy_dir(sqrt(6400.04)/180).*(4.1869).*0.000000
1;
M_ver_y = k_ver_y.*F_dynamic.*0.5.*(-3);
M_z_total = M_yaw+M_ver_y;
%% 求俯仰角度
eqn = 20000 * diff(theta_p, t, t) == M_y_total;
theta_p_d = diff(theta_p,t);
cond1 = theta_p(0) == 0;
cond2 = theta_p_d(0) == 0;
% 解微分方程
sol = dsolve(eqn, [cond1, cond2]);
for i = 0:0.1:20
 i
 theta_p_final=cat(1,theta_p_final,[i 
eval(simplify(subs(sol,'t',i)))]);
end
%% 求滚动角度
eqn = 8000 * diff(theta_r, t, t) == M_x_total;
theta_r_d = diff(theta_r,t);
cond1 = theta_r(0) == 0;
cond2 = theta_r_d(0) == 0;
% 解微分方程
sol = dsolve(eqn, [cond1, cond2]);
for i = 0:0.1:20
 i
 theta_r_final=cat(1,theta_r_final,[i 
eval(simplify(subs(sol,'t',i)))]);
end
%% 求偏航角度
eqn = 25000 * diff(theta_y, t, t) == M_z_total;
theta_y_d = diff(theta_y,t);
cond1 = theta_y(0) == 0;
cond2 = theta_y_d(0) == 0;
% 解微分方程
sol = dsolve(eqn, [cond1, cond2]);
for i = 0:0.1:20
 i
 theta_y_final=cat(1,theta_y_final,[i 
eval(simplify(subs(sol,'t',i)))]);
end
figure
plot(theta_p_final(:,1),theta_p_final(:,2),'LineWidth',2)
xlabel('t /s',FontSize=18)%设置横坐标轴
ylabel('theta of pitch /deg',FontSize=18)
figure
plot(theta_r_final(:,1),theta_r_final(:,2),'LineWidth',2)
xlabel('t /s',FontSize=18)%设置横坐标轴
ylabel('theta of roll /deg',FontSize=18)
figure
plot(theta_y_final(:,1),theta_y_final(:,2),'LineWidth',2)
xlabel('t /s',FontSize=18)%设置横坐标轴
ylabel('theta of yaw /deg',FontSize=18)

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

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

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

相关文章

【轮转数组】力扣python

1.python切片 这里nums[:]代表列表 class Solution:def rotate(self, nums: List[int], k: int) -> None:nlen(nums)nums[:]nums[-k%n:]nums[:-k%n] 2.边pop边push 0代表插入的位置 class Solution:def rotate(self, nums: List[int], k: int) -> None:nlen(nums)fo…

[Linux] 入门指令详解

目录 ls指令 pwd指令 whoami指令 cd指令 clear指令 touch指令 mkdir指令 rmdir指令 rm指令 man指令 cp指令 mv指令 cat指令 tac指令 more指令 less指令 head指令 tail指令 如何读取文件中间某一段内容? date指令 cal指令 find指令 which指令…

Java Web开篇

Java Web开篇 大纲 整个内容梳理 具体案例 整个内容梳理 这是前端和后端组成的系统的框架结构

自动攻丝机进出料激光检测 进料出料失败报警循环手动及关闭报警退出无限循环

/**************进料检测********************/ /***缺料无限次循环 手动退出 超时报警*******/ void check_Pon() // { zstatus0; //报警计数器归零 Signauto1; …

使用Pyramid、Mako和PyJade生成 HTML

Pyramid 是一个流行的 Python Web 框架,而 Mako 和 PyJade 是用于模板引擎的工具,它们可以与 Pyramid 配合使用来生成 HTML 内容。但是在实际使用中还是有些差别的,尤其会遇到各种各样的问题,下面我将利用我所学的知识一一为大家解…

Python | Leetcode Python题解之第87题扰乱字符串

题目: 题解: class Solution:def isScramble(self, s1: str, s2: str) -> bool:cachedef dfs(i1: int, i2: int, length: int) -> bool:"""第一个字符串从 i1 开始,第二个字符串从 i2 开始,子串的长度为 le…

MyBatis——MyBatis 参数处理

一、单个简单类型参数 简单类型包括: byte short int long float double char Byte Short Integer Long Float Double Character String java.util.Date java.sql.Date parameterType 属性:告诉 MyBatis 参数的类型 MyBatis 自带类型自动推断机制…

部署Discuz论坛项目

DIscuz 是由 PHP 语言开发的一款开源社交论坛项目。运行在典型的LNMP/LAMP 环境中。 安装MySQL数据库5.7 主机名IP地址操作系统硬件配置discuz-db192.168.226.128CentOS 7-mini-20092 Core/4G Memory 修改主机名用来自己识别 hostnamectl set-hostname discuz-db #重连远程…

虚拟资源在线交易服务平台源码 线上虚拟商品交易平台搭建

在信息爆炸的时代,虚拟资源、素材、源码系统等等以其独特的魅力,逐渐成为人们日常生活和工作中不可或缺的一部分。如何高效地获取、管理和交易这些虚拟资源,分享一款虚拟资源在线交易服务平台源码,轻松搭建线上虚拟商品交易平台&a…

【全开源】智慧小区物业管理小程序基于FastAdmin+UniApp

基于FastAdminUniApp开发的智慧小区物业管理小程序,包含小区物业缴费、房产管理、在线报修、业主活动报名、在线商城等功能。为物业量身打造的智慧小区运营管理系统,贴合物业工作场景,轻松提高物业费用收缴率,更有功能模块个性化组…

HTML静态网页成品作业(HTML+CSS+JS)——华为商城网页(1个页面)

🎉不定期分享源码,关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 🏷️本套采用HTMLCSS,使用Javacsript代码实现首页图片切换轮播效果,共有1个页面…

【网络安全产品互联互通 告警信息资产信息】相关思维导图

近日,在某客户安全建设项目中,涉及安全告警事件的梳理上报。在整理及学习中发现最近(以19年等保2.0为参考分隔“最近”)发布的可参考标准,因此做了思维导图的整理。 PS:标准中存在引用的情况,过…

OpenHarmony NAPI 使用Cmake 编译C++ .so 并ets调用

一、前言 这两年多随着国产化兴起,国内越来越多的项目都要求支持国产化系统,并且随着OpenHarmony 开源,更多的人都想分一杯羹。因此,我们公司也要求,所有产品的都需要支持开源鸿蒙OpenHarmony。 对于我们这边的设备&am…

Mybatis进阶详细用法

目录 条件构造器 案例 自定义SQL 案例 Service接口 案例 综合案例 条件构造器 案例 Testvoid testQueryMapper() {// 创建 QueryWrapper 实例QueryWrapper<User> queryWrapper new QueryWrapper<>();queryWrapper.select("id," "username,&…

uniapp小程序:大盒子包裹小盒子但是都有点击事件该如何区分?

在开发过程中我们会遇到这种情况&#xff0c;一个大盒子中包裹这一个小盒子&#xff0c;两个盒子都有点击事件&#xff0c;例如&#xff1a; 这个时候如果点击评价有可能会点击到它所在的大盒子&#xff0c;如果使用css中的z-index设置层级的话如果页面的盒子多的话会混乱&…

基于微信小程序+JAVA Springboot 实现的【停车场小程序】app+后台管理系统 (内附设计LW + PPT+ 源码+ 演示视频 下载)

项目名称 项目名称&#xff1a; 停车场微信小程序的设计与实现 在当前信息技术飞速发展的背景下&#xff0c;停车场微信小程序的开发成为了一个创新的解决方案&#xff0c;旨在提高停车场管理的效率和用户的停车体验。本项目通过深入分析现有停车场管理系统的不足&#xff0c…

使用Apache Spark从MySQL到Kafka再到HDFS的数据转移

使用Apache Spark从MySQL到Kafka再到HDFS的数据转移 在本文中&#xff0c;将介绍如何构建一个实时数据pipeline&#xff0c;从MySQL数据库读取数据&#xff0c;通过Kafka传输数据&#xff0c;最终将数据存储到HDFS中。我们将使用Apache Spark的结构化流处理和流处理功能&#…

[Linux][网络][高级IO][一][五种IO模型][同步通信][异步通信][非阻塞IO]详细讲解

目录 0.预备知识 && 思考问题1.五种IO模型0.形象理解五种模型1.阻塞IO2.非阻塞IO3.信号驱动IO4.多路转接/多路复用5.异步IO 2.高级IO重要概念1.同步通信 vs 异步通信2.阻塞 vs 非阻塞 3.非阻塞IO1.fcntl()2.实现SetNonBlock 0.预备知识 && 思考问题 网络通信本…

华为认证存储HCIE有用吗?

首先&#xff0c;对于个人来说&#xff0c;获得华为存储认证可以证明其具备信息存储技术的专业能力 1.专业认可&#xff1a;获得华为存储认证&#xff0c;尤其是HCIE-Storage级别的证书&#xff0c;意味着持有者对信息存储技术有着全面深入的理解&#xff0c;能够设计、部署、…

不同品牌的SSL证书价格差异大吗?

在数字化时代&#xff0c;网络安全的重要性日益凸显&#xff0c;SSL证书作为保护网站和用户数据安全的重要工具&#xff0c;其价值不言而喻。SSL证书通过加密技术保障网站与用户之间的通信安全&#xff0c;防止敏感信息的泄露和篡改。对于网站运营者而言&#xff0c;了解SSL证书…