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:number
 edge=[edge_x(i),edge_y(i),edge_z(i)];
 rushe=edge-eye;
 rushe=rushe/norm(rushe);
 if edge_z(i)>=z_1
 faxian=[0,edge_y(i)+r_max,edge_z(i)-h];
 faxian=faxian/norm(faxian);
 chushe=rushe-2*dot(rushe,faxian)*faxian;
 else
 faxian=[0,edge_y(i)-y_min,edge_z(i)-z_min];
 faxian=faxian/norm(faxian);
 chushe=rushe-2*dot(rushe,faxian)*faxian;
 end
 c=(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:2500
 rx=randsample(popx,1);
 rz=randsample(popz,1);
 if rz<0
 continue;
 end
 vsx=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)<=0
 count=count+1;
 else
 vsx=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)<=0
 vsx=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)<=0
 count=count+1;
 end
 end
 end
 end 
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名片即可

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

leetcode2859-计算K置位下标对应元素的和

题目链接 2859. 计算 K 置位下标对应元素的和 - 力扣&#xff08;LeetCode&#xff09; 解题思路 枚举nums的每一个下标i&#xff1b;统计i的二进制数的1的个数&#xff1b;累加满足bit_count(i) k的nums[i]; 难点&#xff0c;如何统计二进制中1的个数&#xff1f; 例题 …

postgresql12表膨胀解决(不锁表)

查看所有数据库占用磁盘空间 SELECTpg_database.datname AS "数据库名称",pg_size_pretty(pg_database_size(pg_database.datname)) AS "磁盘占用空间" FROMpg_database;发现有个数据库占用空间过大 查询库中所有表占用空间 SELECTtable_name,pg_size_…

固态硬盘优化设置

目录 前言&#xff1a; 关闭Windows Search 禁用系统保护&#xff08;不建议&#xff09; 不建议禁用系统保护原因 关闭碎片整理 提升固态硬盘速度 开启TRIM 合理使用固态硬盘的容量 正确关机 关闭开机自启 前言&#xff1a; 电脑配备固态硬盘就能一劳永逸吗&#…

字符金字塔(C语言刷题)

个人博客主页&#xff1a;https://blog.csdn.net/2301_79293429?typeblog 专栏&#xff1a;https://blog.csdn.net/2301_79293429/category_12545690.html 题目描述 请打印输出一个字符金字塔&#xff0c;字符金字塔的特征请参考样例 输入描述: 输入一个字母&#xff0c;保…

动态规划-96.不同的二叉搜索树

给定一个整数 n&#xff0c;求以 1 ... n 为节点组成的二叉搜索树有多少种&#xff1f; 思路 二叉搜索树特性&#xff1a;左子树的节点全部小于根节点&#xff0c;右子树的节点全部大于根节点 n3&#xff0c;则1&#xff0c;2&#xff0c;3轮流当根节点。 当1为根节点时&am…

一个前端搬砖“专家“的2023年度总结

23年年中的时候&#xff0c;我跟领导进行了一次沟通&#xff0c;讨论了下我后面应该在哪些地方深入。最后我就记得领导那句&#xff1a;缺少总结。 我发现我好像确实缺少总结&#xff0c;我平时会把遇到的问题&#xff0c;感觉值得记录的写在csdn里面&#xff0c;但是都只是问…

大数据信用查询系统能查到什么呢?

在金融助贷行业&#xff0c;大数据有叫大数据信用或者网贷大数据&#xff0c;在申贷的时候&#xff0c;想必大多数人都有听说过&#xff0c;很多人因为大数据不良的原因申贷被拒过&#xff0c;那大数据信用查询系统能查到什么呢?本文就简单为大家总结几点大数据信用查询的内容…

建议码住!2023年全球16大AI聊天工具汇总来啦

2023值得载入史册。这一年&#xff0c;全世界的AI技术迎来了重大突破&#xff0c;并从多个角度影响和改变了我们的生活和工作。 AI可以和你聊天、为你提供专业的法律建议、快速查找资料&#xff0c;还能帮助你制作视频、设计图片、制做PPT&#xff0c;甚至能够写代码、写小说、…

执行ping命令时提示ping: sendmsg: Operation not permitted

查看日志发现出现了大量的table full&#xff0c; dropping packet记录&#xff0c; 后上网查看资料发现是因为当前会话数已经满了&#xff0c;因此出现丢包现象。 这里需要说一下nf_conntrack nf_conntrack(在老版本的 Linux 内核中叫 ip_conntrack)是一个内核模块,用于跟踪一…

1005. K 次取反后最大化的数组和 - 力扣(LeetCode)

题目描述 给定一个整数数组 A&#xff0c;我们只能用以下方法修改该数组&#xff1a;我们选择某个索引 i 并将 A[i] 替换为 -A[i]&#xff0c;然后总共重复这个过程 K 次。&#xff08;我们可以多次选择同一个索引 i。&#xff09; 以这种方式修改数组后&#xff0c;返回数组可…

Oracal学习

Oracle是什么 是甲骨文公司的一款支持事务且吞吐量高的数据库特点&#xff1a; &#xff08;1&#xff09;支持多用户、大事务量的事务处理 &#xff08;2&#xff09;数据安全性和完整性控制 &#xff08;3&#xff09;支持分布式数据处理 &#xff08;4&#xff09;可移植性…

深度学习中RGB影像图的直方图均衡化python代码and对图片中指定部分做基于掩模的特定区域直方图均衡化

深度学习很重要的预处理步骤 就是需要对做直方图均衡化 其中主要分成灰度图以及RGB图的直方图均衡化 这俩的方法和代码不同 想要去看具体原理的朋友可以查看下面这篇博客的内容 写的很详细颜色直方图均衡化(https://www.cnblogs.com/wancy/p/17668345.html) 我们这个场景中会用…

Git 入门精讲

我们为什么要学习git&#xff1f; 就当下的发展而言&#xff0c;只要你从事开发就一定会接触git。作为最强大的分布式版本控制器&#xff0c;git 与 svn 有着本质上的区别。 Git是一种分布式版本控制系统&#xff0c;每个开发者都可以在本地维护完整的代码库&#xff0c;可以离…

04 经典的OSPF

思维导图的方式回顾OSPF 什么是OSPF?为什么需要OSPF? - 华为 (huawei.com) 1 ospf 领行学习思维导图 1.1 ospf 的工作过程 建立领据表同步数据库计算路由表1.2 ospf 的状态

C++ 红黑树

目录 一、红黑树的概念和性质 二、实现红黑树 1、节点定义构造 2、插入 3、左单旋&右单旋 4、中序遍历 5、检查平衡 6、获取树的高度 7、查找 8、析构 测试 完整版 一、红黑树的概念和性质 红黑树&#xff0c;是一种二叉搜索树&#xff0c;但在每个结点上增加一…

数据恢复与硬盘修理

第1篇 数据恢复与硬盘修理基础 本篇包括第1章&#xff0c;主要介绍数据恢复的发展现状、硬盘维修的基本知识以及一些基本工具的使用。 第1章 基础知识 1.1 数据恢复技术的发展和研究现状 目前国内的数据恢复服务市场处于一个极不规范的状态。虽然大部分数据恢复服务提供商是…

Linux CentOs7 安装Mysql(5.7和8.0版本)密码修改 超详细教程

CSDN 成就一亿技术人&#xff01; 今天出一期Centos下安装Mysql&#xff08;详细教程&#xff09;包括数据库密码跳过修改 CSDN 成就一亿技术人&#xff01; 目录 1.获取安装包 2.安装程序 安装下载的rpm包 查看安装包 修改5.7版本&#xff08;重要&#xff09; 安装M…

如何生成漂亮的静态文档说明页

分享&#xff1a;如何生成漂亮的静态文档说明页 最近经常被问 https://t.itmuch.com/doc.html 文档页是怎么制作的&#xff0c;考虑到步骤略复杂&#xff0c;写篇手记总结下吧。 TIPS https://t.itmuch.com/doc.html 是个人在慕课网视频《 面向未来微服务:Spring Cloud Alibab…

二叉树堆的应用实例分析:堆排序 | TOP-K问题

&#x1f4f7; 江池俊&#xff1a; 个人主页 &#x1f525;个人专栏&#xff1a; ✅数据结构冒险记 ✅C语言进阶之路 &#x1f305; 有航道的人&#xff0c;再渺小也不会迷途。 文章目录 前言一、堆排序1.1 排序思想1.2 堆排序过程&#xff08;图解&#xff09;1.3 堆排序代…

C++ 数论相关题目(欧拉函数、筛法求欧拉函数)

1、欧拉函数 给定 n 个正整数 ai &#xff0c;请你求出每个数的欧拉函数。 欧拉函数的定义 1∼N 中与 N 互质的数的个数被称为欧拉函数&#xff0c;记为 ϕ(N) 。 若在算数基本定理中&#xff0c;Npa11pa22…pamm &#xff0c;则&#xff1a; ϕ(N) Np1−1p1p2−1p2…pm−1p…