2015年国赛高教杯数学建模
A题 太阳影子定位
技术就是通过分析视频中物体的太阳影子变化,确定视频拍摄的地点和日期的一种方法。
1.建立影子长度变化的数学模型,分析影子长度关于各个参数的变化规律,并应用你们建立的模型画出2015年10月22日北京时间9:00-15:00之间天安门广场(北纬39度54分26秒,东经116度23分29秒)3米高的直杆的太阳影子长度的变化曲线。
2.根据某固定直杆在水平地面上的太阳影子顶点坐标数据,建立数学模型确定直杆所处的地点。将你们的模型应用于附件1的影子顶点坐标数据,给出若干个可能的地点。
3. 根据某固定直杆在水平地面上的太阳影子顶点坐标数据,建立数学模型确定直杆所处的地点和日期。将你们的模型分别应用于附件2和附件3的影子顶点坐标数据,给出若干个可能的地点与日期。
4.附件4为一根直杆在太阳下的影子变化的视频,并且已通过某种方式估计出直杆的高度为2米。请建立确定视频拍摄地点的数学模型,并应用你们的模型给出若干个可能的拍摄地点。
如果拍摄日期未知,你能否根据视频确定出拍摄地点与日期?
整体求解过程概述(摘要)
本文首先根据几何关系给出了直杆的太阳影子长度变化模型,进而通过“反问题”思维,借助直杆太阳影子变化建立数学优化模型推算出直杆的位置、日期等信息。最后,利用视频截屏技术和优化模型确定了视频的拍摄地点和拍摄日期。
问题1,首先找到可以衡量影子长度变化的几个参数然后从三方面分析了太阳影子关于各参数长度变化的规律。我们发现影长不仅会随着太阳高度角增加而减小,而且还会受季节的影响。而后用MATLAB软件画出了附件1中直杆影长变化的曲线图。
问题2,使用最小二乘近似法以及遗传算法建立了一个完整的优化模型,将杆长与直杆地理纬度作为变量参数,进行100次迭代,得出20组可能的解,通过合理性比较得出最可能地点在海南岛东部。
问题3,在问题2优化模型的基础上,增加日期一个变量,利用与问题2相似的解法求得附件2可能的地点与日期为印度南部、2-3月份,附件3可能的地点与日期为越南东南部、8-9月份。
问题4,利用截屏技术将视频每隔一分钟截一幅图,将截取的40张图片用MATLAB进行边缘处理得到坐标数据,利用相似变换将像素坐标转换为物理坐标。在日期已知情况下,建立最小二乘近似法模型,并使用模拟退火算法得到视频中可能的地点为呼和浩特市附近。在日期未知的情况下,增加变量日期,再利用此题的优化模型求解,确定了地点与日期。
本文的亮点是,考虑到遗传算法自身有局部搜索能力差、存在未成熟收敛和随机游走等缺陷,先使用拟合的方法将直杆可能所在位置的地理经度确定,再运用遗传算法或者模拟退火算法求解模型。
模型假设:
(1)假设太阳光为平行光,没有折射;
(2)假设海拔高度常常可以忽略;
(3)假设时区是东八区;
问题分析:
问题1的分析
问题1在太阳光是平行光的假设下,可以将此题看作一个简单的数学求解问题。该问题的关键在于找出各个参数与影长的联系。我们考虑到,物体在某一点的影子的形状(长度和位置)由太阳在天体中对地球上这一点的相对位置决定,而这个相对位置由当地的的地理纬度、季节(日、月)和时间(这里的时间准确来说指时刻)三个因素决定,由于问题1中我们只需考虑影子的长度,所以我们可以用地理纬度(𝜑)、太阳赤纬角(𝛿)、太阳高度角(ℎ)及时角(𝑡)等参数建立影子长度变化的数学模型,并分析影长关于它们几个参数的变化规律。 而后,利用上述建立好的模型及MATLAB软件,以北京时间9:00到15:00内的时刻为变量,编写程序就可以画出题目要求的时间段内杆子的影长变化曲线。
问题2的分析
问题2与问题3都是给出某固定直杆在水平地面上的太阳影子顶点坐标数据,要求是建立数学模型,给出若干个可能的地点或地点和日期,这是一种典型的“反问题”,即需要我们由果推因。首先利用已有数据进行二次函数拟合,基本确定直杆的地理经度,然后再采用有关“反问题”比较经典的做法——最小二乘近似法建立模型求解其他变量参数。其中,直杆长度也不确定,由于杆长不同所在的位置也可能不同,所以将杆长𝐻设置为变量参数之一。进而,用遗传算法的思想求解模型,可以得出直杆几个可能的位置。
问题3的分析
问题3与问题2比较,除了需要确定直杆所处的地点位置之外,同时需要确定拍摄日期,我们将问题二的最小二乘近似法模型稍加改进,增加参数日期(用积日𝑁来衡量),从而建立起一个三参数的优化模型,利用与问题2相似的算法可以得出直杆一些可能的位置与日期。
问题4 的分析
附件4视频较大,直接用MATLAB处理比较困难,所以我们需要对视频进行一些处理,然后再利用MATLAB软件导出直杆影子在像素坐标系下的坐标数据,利用坐标变换方法中的相似变换将像素坐标系转换为物理坐标系。在日期给定时,建立最小二乘近似法的优化模型,并首先考虑遗传算法,再用模拟退火算法改进,可以得出可能的地点。如果日期没有给定,建立的优化模型将是一个四参数问题,利用本题建立的优化模型将确定可能的地点与日期。
模型的建立与求解整体论文缩略图
全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可
程序代码:
function ObjV=fun(unit)
load matlab data
h=unit(:,1);
b1=unit(:,2);
time.year=2015;
time.month=4;
time.day=18;
location.altitude = 0;
time.UTC =8;
time.hour = 14;
time.min = 42;
time.sec = 0;
for j=1:length(unit)
location.longitude = 110.25;
location.latitude = b1(j);
for i=1:21
if time.min>60
time.min=0;
time.hour=time.hour+1;
end
a=sun_position(time,location);
l2(i)=h(j)/tan((a.zenith)/180*pi);
time.min=time.min+3;
end
a1=data(:,1);
a2=data(:,2);
l1=sqrt(a1.^2+a2.^2);
l=0;
for k=1:21
l=l+(l1(k)-l2(k))^2;
end
ObjV(j)=l;
end
ObjV=ObjV';
run_genetic.m:
clc;clear,close all;
NVAR=2;
NIND=40;
MAXGEN=100;
LIND=10;
GGAP=0.9;
trace=zeros(2,MAXGEN);
FieldD=[ LIND LIND;
0
0;
10 90;
1
1;
0
0;
1 1;
1 1];
Chrom=crtbp(NIND,LIND*NVAR);
unit=bs2rv(Chrom,FieldD);
ObjV=fun(unit);
for gen=1:MAXGEN
FitnV=ranking(-ObjV);
SelCh=select('sus',Chrom,FitnV,GGAP);
SelCh=recombin('xovsp',SelCh,0.7);
SelCh=mut(SelCh);
unit=bs2rv(SelCh,FieldD);
ObjVSel=fun(unit);
[Chrom ObjV]=reins(Chrom,SelCh,1,1,ObjV,ObjVSel);
[Y(gen),I(gen)]=min(ObjV);
trace(1,gen)=min(ObjV);
trace(2,gen)=sum(ObjV)/length(ObjV);
end
unit=bs2rv(Chrom,FieldD);
figure
plot(trace(1,1:gen),'b-o');
hold on
plot(trace(2,1:gen),'r-o');
XY=unit(I(gen),:)
Z=min(Y)