2017年认证杯SPSSPRO杯数学建模A题(第二阶段)安全的后视镜全过程文档及程序

2017年认证杯SPSSPRO杯数学建模

A题 安全的后视镜

原题再现:

  汽车后视镜的视野对行车安全非常重要。一般来说,汽车的后视镜需要有良好的视野范围,以便驾驶员能够全面地了解车后方的道路情况。同时,后视镜也要使图像的畸变尽可能小,以使驾驶员能够准确地判断距离。
  如果汽车的后视镜使用平面镜,图像没有畸变,对距离的判断十分准确。但是当镜面大小受限时,视野相对较小。如果使用凸面镜,可以以较小的镜面获得更加宽广的视野,但是图像存在畸变,很难准确判断镜中物体与自己的距离。有的镜面是由平面镜和凸面镜拼合在一起组成,意图兼顾两者的优点。但事实上,驾驶员在观察后视镜时,两者很难同时看清。较受欢迎的做法是构造一个变曲率的后视镜,使后视镜可以兼顾两者的优点,也降低了观察和距离判断上的难度。目前市场上有售不同设计的变曲率后视镜。最常见的是一种双曲率后视镜,内侧接近平面镜,外侧则是一个凸面镜,在它们之间进行了平滑的过渡。图 1 是两个例子,为了便于驾驶员对距离进行判断,镜中由虚线或细实线示意了不同曲率的镜面间的分界线。它们的具体设计有所区别,性能也会有所不同。
在这里插入图片描述
  第二阶段问题: 对后视镜的布置而言,相比于形式较为类似的小轿车,大客车具有复杂得多的情况。即使在车体轮廓近似为长方体的前提下,镜面的形状、大小和安装位置等各种参数也都可能有很大的差别 ( 如图 2 )。请你建立相应的数学模型,对车体外形近似为长方体的大客车设计最优的后视镜方案,方案中需要包括镜面的曲面外形、边缘轮廓、尺寸以及安装位置等参数。同样地,由于我们只做理论上的研究,所以在设计时暂不需要考虑和遵循相应的国家标准。

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

  后视镜作为驾驶员的“第三只眼睛”,在倒车、制动等过程中发挥着重要作用。相对于小轿车,大客车底盘较高,车身较长,视野盲区较大,后视镜设计更为复杂。本文的目的在于提供一种大客车后视镜的最优布置方案,以实现综合性能最优化。
  第一,确定后视镜的布置参数。采用两种双曲率曲面作镜面,利用解析几何求出其曲面方程。在设计后视镜时让视野覆盖主要的下视野盲区、设定下方视野约束。此外结合现实和人机工程,将后视镜尺寸及安装位置控制在一定范围内。
  第二,计算视野面积。基于反射原理和数值模拟技术,本文求出后视镜边缘点在测试屏板上的投影,从而得到了视野区域的大致轮廓。采用改进的蒙特卡洛模拟计算出该不规则视野区域的面积。剔除地面以下和左、右眼视野重复计算的部分后,得到驾驶员双眼的有效视野区域。
  第三,计算畸变指数。作关于镜面平行于坐标轴的 21*20 的网格剖分,分别计算平面后视镜与双曲率后视镜上的网格点在屏板上形成的投影的平均距离。定义畸变指数为衡量图像畸变程度的无量纲指标。
  第四,计算空气阻力。根据空气阻力公式,计算后视镜面积对应的空气阻力大小。最后,建立多目标最优化模型。以视野分界比率、曲率半径等为自变量,以视野面积、畸变指数和空气阻力为优化目标,建立多目标最优化数学模型。运用理想点法,找出理想比率取值,基于欧式距离构建评判函数。根据现有的专利和行业标准,设定自变量的合理范围,并采用遗传算法求解该模型,使得评判函数最小化。本模型便于计算,适用范围广,兼顾求解的速度和质量。同时无须对模型进行过多修改,即可有效提升求解精度。
  本文选取三种型号的金龙客车作为参考车型,求解最优化参数设计。结果分析表明,○1 不同车型的最优的后视镜安装位置有很大的差异:对于车型较大、底盘较高的客车,最佳位置在驾驶员位置的上前方;而车型较小、底盘较低的客车则在与驾驶员眼点相对持平的位置。○2 最优的镜面形状需要考虑与车型有关的因素,针对不同车型具体设计。○3 就镜面类型而论,第一类镜面适用于车 1 和车 2,而第二类镜面对车 3 是更好的选择。

问题分析:

  第一,载客汽车驾驶座附近车身的盲区需要特别考虑。载客汽车后视镜常常安装于车身前部或侧部,驾驶员可通过前风挡玻璃和左右汽车玻璃看外视镜,但是由于客车车型与小轿车车型相比,客车底座更高、车身更长,在驾驶时,车头、左右后视镜下方等区域容易形成视觉盲区,形成交通安全隐患。大客车外后视镜往往采用竖直的长方形造型,以增加可观察的地面面积(或下视野面积),大多数的客车还会安装一面小凸面镜来减少盲区,如图所示。在驾驶过程中,驾驶员通过小凸面镜观察车身下方以及一些死角,通过外后视镜观察道路两侧情况。因此相对于小轿车,大客车的外后视镜在设计上尤其要考虑到驾驶座附近车身的盲区问题。
在这里插入图片描述
  第二,采用双曲率曲面作为后视镜的镜面。后视镜如果采用平面镜,图像没有畸变,但由于镜面大小受限,视野相对较小;如果采用凸面镜,可以以较小的镜面获得更宽广的视野范围,但是图像产生畸变,而双曲率镜面可以有效减少平、凸面镜带来的不利影响,因此本文仍然采用双曲率曲面作为后视镜镜面设计的要件。沿用第一阶段的研究结论,我们设计出一种由两个柱面拼接而成的镜面,解决了下视野盲区问题,但是水平视野仍然受到约束。经过第一阶段相关论文启发,我们又设计出一种由柱面与球面拼接而成的镜面。
  第三,结合现实考虑,客车后视镜尺寸以及安装位置应控制在一定范围内。镜面面积越大,视野范围越大,但面积大的镜面也会给车辆增加空气阻力,因此在设计时镜面面积应该控制在一定的范围下。根据人机工程理论,在驾驶过程中驾驶员如果频繁转动头部和眼部,将会增加驾驶员的疲劳程度。出于驾驶员驾驶的舒适度和安全性考虑,后视镜安装位置控制在驾驶员眼点一定的可视区域内。
  第四,最优的后视镜方案与后视镜所要实现的目的有关,比如满足驾驶适宜性、减少空气阻力,与整车风格一致、外形美观等要求,本文考虑视野面积、畸变率和空气阻力作为最优方案指标。
  此外,由于不同的载客汽车具有不同的固有车辆参数,比如车身长度、宽度、长度,司机双眼位置等,这些固有参数将影响最优方案的结果。因此我们选用了三种不同车型的载客汽车,运用建立的模型设计出了各自后视镜的最优方案,并对影响后视镜最优方案的因素进行分析。

模型假设:

  1. 只考虑水平面上的视野区域和失真度,后视镜所用的镜面为柱面、球面镜
  2. 后视镜垂直于水平地面,与车身前进方向夹角与 90°
  3. 镜面光滑,材质均匀,光在镜面没有能量损失,反射率为 100%
  4. 忽略后视镜外壳以及其他配件,只考虑镜面玻璃
  5. 只考虑左侧外后视镜的布置情况

论文缩略图:

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

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

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

function view=edgefunc(edge_x,edge_y,edge_z,r_max,r_min,ratio,L,W,h,eye)
screen_y=11950;
number=length(edge_x);
view=[];
y_1=-r_max+sqrt(-L^2*ratio^2+r_max^2);
z_1=h-L*ratio;%分界点
sin_theta=(L*ratio)/r_max;
cos_theta=sqrt(-L^2*ratio^2+r_max^2)/r_max;
y_min=y_1-r_min*cos_theta;
z_min=z_1+sin_theta*r_min;%小圆圆心
for i=1:numberedge=[edge_x(i),edge_y(i),edge_z(i)];rushe=edge-eye;rushe=rushe/norm(rushe);if edge_z(i)>=z_1faxian=[0,edge_y(i)+r_max,edge_z(i)-h];faxian=faxian/norm(faxian);chushe=rushe-2*dot(rushe,faxian)*faxian;elsefaxian=[0,edge_y(i)-y_min,edge_z(i)-z_min];faxian=faxian/norm(faxian);chushe=rushe-2*dot(rushe,faxian)*faxian;endc=(screen_y-edge_y(i))/chushe(2);
screen_x=chushe(1)*c+edge_x(i);screen_z=chushe(3)*c+edge_z(i);view=[view [screen_x;screen_y;screen_z]];%plot3(view(1,:),view(2,:),view(3,:),'*')%plot(view(1,:),view(3,:),'*')%set(gca,'xlim',[-7000,0],'ylim',[-1500,1500])%title('最优设计参数下的投影点')%legend('投影点','Location','northeast')
end
end
function a=mianji(edge_x,edge_y,edge_z,r_max,r_min,ratio,L,W,h,eye1,eye2)
view1=edgefunc(edge_x,edge_y,edge_z,r_max,r_min,ratio,L,W,h,eye1);
v1=[view1(1,:);view1(3,:)];
vx1=v1(1,:);
vz1=v1(2,:);
view2=edgefunc(edge_x,edge_y,edge_z,r_max,r_min,ratio,L,W,h,eye2);
v2=[view2(1,:);view2(3,:)];
vx2=v2(1,:);
vz2=v2(2,:);
vx=[vx1 vx2];
vz=[vz1 vz2];
vL=max(vz)-min(vz);
vW=max(vx)-min(vx);
count=0;
popx=linspace(min(vx),max(vx),1000);
popz=linspace(min(vz),max(vz),1000);
for i=1:2500rx=randsample(popx,1);rz=randsample(popz,1);if rz<0continue;endvsx=vx1(1:100);vsz=vz1(1:100);mx=abs(vsx-rx);[s1,d1]=min(mx);range1=vsz(d1);vsx=vx1(201:300);vsz=vz1(201:300);mx=abs(vsx-rx);[s1,d1]=min(mx);range2=vsz(d1);if (range1-rz)*(range2-rz)<=0
vsx=vx1(101:200);vsz=vz1(101:200);mz=abs(vsz-rz);[s1,d1]=min(mz);range1=vsx(d1);vsx=vx1(301:400);vsz=vz1(301:400);mz=abs(vsz-rz);[s1,d1]=min(mz);range2=vsx(d1);if (range1-rx)*(range2-rx)<=0count=count+1;elsevsx=vx2(1:100);vsz=vz2(1:100);mx=abs(vsx-rx);[s1,d1]=min(mx);range1=vsz(d1);vsx=vx2(201:300);vsz=vz2(201:300);mx=abs(vsx-rx);[s1,d1]=min(mx);range2=vsz(d1);if (range1-rz)*(range2-rz)<=0vsx=vx2(101:200);vsz=vz2(101:200);mz=abs(vsz-rz);[s1,d1]=min(mz);range1=vsx(d1);vsx=vx2(301:400);vsz=vz2(301:400);mz=abs(vsz-rz);[s1,d1]=min(mz);range2=vsx(d1);if (range1-rx)*(range2-rx)<=0count=count+1;endendendend 
end
a=vL*vW*count/2500/1000/1000;%视野面积
vx=[vx1 vx2];
vz=[vz1 vz2];
%plot(vx,vz,'*')
%hold on
%plot(rx,rz,'*')
%plot(ones(1,100)*min(vx),linspace(min(vz),max(vz)),'k','LineWidth',4);
%plot(ones(1,100)*max(vx),linspace(min(vz),max(vz)),'k','LineWidth',4);
%plot(linspace(min(vx),max(vx)),ones(1,100)*min(vz),'k','LineWidth',4);
%plot(linspace(min(vx),max(vx)),ones(1,100)*max(vz),'k','LineWidth',4);
%hold off
End
全部论文及程序请见下方“ 只会建模 QQ名片” 点击QQ名片即可

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【每日一题】2.LeetCode——删除有序数组中的重复项

&#x1f4da;博客主页&#xff1a;爱敲代码的小杨. ✨专栏&#xff1a;《Java SE语法》 ❤️感谢大家点赞&#x1f44d;&#x1f3fb;收藏⭐评论✍&#x1f3fb;&#xff0c;您的三连就是我持续更新的动力❤️ &#x1f64f;小杨水平有限&#xff0c;欢迎各位大佬指点&…

如何在Linux上部署Nexus私服

如何在Linux上部署Nexus私服 Nexus 是一个强大的仓库管理解决方案&#xff0c;由Sonatype公司开发。它主要用于软件开发中各种依赖包和构件的存储、管理和分发。 1、为什么要部署nexus&#xff1f; 统一管理依赖&#xff1a;在软件开发过程中&#xff0c;项目通常会依赖大量的…

(Bean工厂的后处理器入门)学习Spring的第七天

一 . Bean工厂的后处理器入门 : 直接上图 BeanDefinitionRegistyPostProcessor 为 BeanFactoryProcessor的子接口 , 前者先执行(图里只有Bean工厂的后处理器第一个类型) 如下图 : 这两个接口可改变两个Map(BeanDefinitionMap , singletonObject)里的信息 (黑马只讲了BeanFact…

浅谈拨测在网络安全中的应用

在当今数字化时代&#xff0c;网络安全成为各个行业和组织关注的焦点。为了保障网络的稳定性和信息的安全&#xff0c;拨测安全性成为一种日益重要的工具。本文将介绍拨测在网络安全中的应用&#xff1a; 1.威胁模拟 通过威胁模拟&#xff0c;拨测安全性可以模拟各种网络攻击&a…

vue(vue2)使用svg格式图标

先安装插件 配置svg文件夹&#xff0c;新建icons文件&#xff0c;svg文件夹放svg后缀文件 index.js文件中的配置 import Vue from "vue" import svgIcon from "/common/iconSvg/index.vue"Vue.component(svg-icon,svgIcon) //挂载全局组件//下面…

vue3 项目中 arguments 对象获取失败问题

问题 在 vue3 项目中 获取到的 arguments 对象与传入实参不符&#xff0c;打印出函数中的 arguments 对象显示如下&#xff1a; 原因 作者仔细回看代码才发现&#xff0c;自己一直用的是 vue3 的组合式写法&#xff0c;函数都是箭头函数&#xff0c;而箭头函数不存在 argumen…

Ddosify 作为压测工具的使用指南

文章目录 1. 写在最前面1.1 Kubernetes 监控1.2 Performance Testing 2. 命令行安装 & 使用2.1 安装2.2 使用2.2.1 默认的例子2.2.2 定制的例子 3. Dashboard 安装 & 使用3.1 安装3.2 使用3.2.1 简单使用3.2.3 依赖的服务介绍 4. 碎碎念5. 参考资料 1. 写在最前面 由于…

我每天如何使用 ChatGPT

我们都清楚互联网的运作方式——充斥着各种“爆款观点”&#xff0c;极端分裂的意见&#xff0c;恶搞和无知现象屡见不鲜。 最近&#xff0c;大家对于人工智能&#xff08;AI&#xff09;特别是大语言模型&#xff08;LLMs&#xff09;和生成式 AI&#xff08;GenAI&#xff0…

Vue+Element(el-switch的使用)+springboot

目录 1、编写模板 2、发送请求 3、后端返数据 1.Controller类 2.interface接口&#xff08;Service层接口&#xff09; 3.Service&#xff08;接口实现&#xff09; 4.interface接口&#xff08;Mapper层接口&#xff09; 5.xml 6.效果 4、el-switch属性 1、编写模板 …

Java_网络编程

一、网络编程概述 网络编程的意思就是编写的应用程序可以与网络上其他设备中的应用程序进行数据交互。 网络编程有什么用呢&#xff1f;这个就不言而喻了&#xff0c;比如我们经常用的微信收发消息就需要用到网络通信的技术、在比如我们打开浏览器可以浏览各种网络、视频等也…

如何在一个集合对象中A排除另外一个集合对象B中A中拥有的数据通用思路,很精妙!

标题是什么意思呢&#xff1f; 假如我有一个集合对象A&#xff0c;数据有1,2,3,4,5,6 另外一个集合对象B&#xff0c;数据有2,4,5 那么在A中排除B拥有的数据就是 最终需要返回的结果就是1,3 那么我们一般一开始的想法其实就是在集合对象中A遍历取到每一个元素&#xff0c;然…

Linux之权限(内容详细,细节满满)

个人主页&#xff1a;点我进入主页 专栏分类&#xff1a;C语言初阶 C语言程序设计————KTV C语言小游戏 C语言进阶 C语言刷题 数据结构初阶 Linux 欢迎大家点赞&#xff0c;评论&#xff0c;收藏。 一起努力 目录 一.前言 二.权限修改的两种方法 …