交通系统工程实验报告.docx
《交通系统工程实验报告.docx》由会员分享,可在线阅读,更多相关《交通系统工程实验报告.docx(14页珍藏版)》请在冰豆网上搜索。
交通系统工程实验报告
重庆交通大学
交通系统工程实验报告
学院:
交通运输学院
专业:
交通规划与管理
班级:
2010级2班
姓名:
杨爱玲
学号:
10110305
一、实验目的
1、掌握一元线性回归预测法,学会用一元线性回归理论建立模型并对实际问题进行预测和评估;
2、学会用层次分析法进行定性和定量的系统分析,熟练操作层次分析法的实施步骤;
3、运用计算机编程软件编写线性回归和层次分析法的算法程序,并用实例进行验证。
二、实验内容
一元线性回归预测法
1、预测原理
事物内部的变化关系一般分为两类:
一类是变量间是一种确定的函数关系另一类是变量间是一种不确定的相关关系,对具有相关关系的变量,就可以通过数理统计方法建立变量间的回归方程,从而对变量间的密切程度进行描述并实现对变了回归的估计和测定。
2、预测步骤
进行相关关系分析
计算模型中的参数
利用模型进行预测
预测值置信度检验
3、算法逻辑图
N
Y
4、C语言程序
#include"stdio.h"
#include"math.h"
#definemax_size100
voidmain()
{
floatdata[max_size][2];
floatx_sum=0,y_sum=0;
floatx_avg,y_avg;
floatx,y;
floatLxy=0,Lxx=0,Lyy=0;
floatr;
floata,b;
inti;
intcount=0;
next:
printf("输入所有组x,y的值(格式为x,y)");
printf("输入-100,-100结束\n");
while
(1)
{
scanf("%f,%f",&x,&y);
if(fabs(x+100)==0&&fabs(y+100)==0)break;
data[count][0]=x;
data[count][1]=y;
count++;
}
for(i=0;i{
x_sum=data[i][0]+x_sum;
y_sum=data[i][1]+y_sum;
}
x_avg=x_sum/count;
y_avg=y_sum/count;
for(i=0;i{
Lxy=(data[i][0]-x_avg)*(data[i][1]-y_avg)+Lxy;
Lxx=(data[i][0]-x_avg)*(data[i][0]-x_avg)+Lxx;
Lyy=(data[i][1]-y_avg)*(data[i][1]-y_avg)+Lyy;
}
r=Lxy/sqrt(Lxx*Lyy);
if(r>0.5)
{
printf("X和Y相关性好\n");
a=Lxy/Lxx;
b=y_avg-a*x_avg;
}
else
{
printf("X和Y相关性差,请重新输入:
\n");
gotonext;
}
printf("线形回归方程为:
\n");
if(fabs(b)==0)
printf("y=%3.1fx\n",a);
elseif(b>0)
printf("y=%3.1fx+%3.2f\n",a,b);
elseif(b<0)
printf("y=%3.1fx%3.2f\n",a,b);
printf("相关系数为:
%3.1f\n",r);
}
运行效果图如下:
5、实例演示
例、某厂某产品的销售量和盈利额统计数据如下表所示,试用回归分析法求销售量为140件时的盈利额。
销售量(件)
4
6
10
20
30
40
50
60
65
90
250
盈利额(万元)
4
6
8
13
16
17
19
25
25
29
46
程序运行效果图如下:
当销售量为140件时,盈利额为:
Y=0.3*140+4.82=46.82万元
层次分析法
1、基本思想
先按照问题的要求建立起一个描述系统功能和特征的系统递阶层次结构,给出判断标度,对每一层的系统要素进行两两比较,建立判断矩阵。
通过判断矩阵特征向量的计算,得出该层要素对上一层要素的权重。
在此基础上,计算出各层要素对于总体目标的综合权重,从而得出不同方案的综合评价值,为选择最优方案提供依据。
2、实施步骤
分析评价系统的要素集合及相关关系,用结构分析法建立系统的层次结构模型;
确定评价基准和判断标度;
从最上层要素开始,依次以最上层要素为依据,对下一层要
素两两比较,建立判断矩阵;
确定总体优先级向量;
按照优先级别向量,对系统进行分析、评价和排序。
3、
算法逻辑图
4、matlab计算程序
disp('请输入判断矩阵A(n阶)');
A=input('A=');
[n,n]=size(A);
x=ones(n,100);
y=ones(n,100);
m=zeros(1,100);
m
(1)=max(x(:
1));
y(:
1)=x(:
1);
x(:
2)=A*y(:
1);
m
(2)=max(x(:
2));
y(:
2)=x(:
2)/m
(2);
p=0.0001;i=2;k=abs(m
(2)-m
(1));
while k>p
i=i+1;
x(:
i)=A*y(:
i-1);
m(i)=max(x(:
i));
y(:
i)=x(:
i)/m(i);
k=abs(m(i)-m(i-1));
end
a=sum(y(:
i));
w=y(:
i)/a;
t=m(i);
disp(w);disp(t);
%以下是一致性检验
CI=(t-n)/(n-1);RI=[000.520.891.121.261.361.411.461.491.521.541.561.581.59];
CR=CI/RI(n);
ifCR<0.10
disp('此矩阵的一致性可以接受!
');
disp('CI=');disp(CI);
disp('CR=');disp(CR);
end
5、functionAHPInit1(x,y)
%层次分析的初始化
%默认只有两层x为准则数,y为方案数
%CToT为准则对目标生成的比较阵
%EigOfCri为准则层的特征向量
%EigOfOpt为选项层的特征向量
6、EigOfCri=zeros(x,1);%准则层的特征向量
EigOfOpt=zeros(y,x);
dim=x;%维度
RI=[000.580.901.121.241.321.411.451.491.51];%RI标准
%生成成对比较阵
fori=1:
dim
CToT(i,:
)=input('请输入数据:
');
end
CToT%输出
pause,
tempmatrix=zeros(x+1);
tempmatrix=AHP1(dim,CToT);
EigOfCri=tempmatrix(1:
x);
ci1=tempmatrix(1+x);
EigOfCri
ci1
pause,
7、matrix=cell(x);%元胞数组
ci=zeros(1,x);
dim=y;
fork=1:
x
matrix{k}=zeros(dim,dim);
8、%生成成对比较阵
fori=1:
dim
matrix{k}(i,:
)=input('请输入数据:
');
end
%判断该比较阵是不是一致阵
tempmatrix=zeros(y+1);
tempmatrix=AHP1(dim,matrix{k});
EigOfOpt(:
k)=tempmatrix(1:
y);
ci(k)=tempmatrix(y+1);
EigOfOpt(:
k)
ci(k)
pause,
end
%下面进行组合一致性检查
RI=[000.580.901.121.241.321.411.451.491.51];
CR=ci1/RI(x)+ci*EigOfCri/RI(y);
CR
ifCR>0.1
disp('组合一致性不通过,请重新评分')
return
end
%下面根据比较阵的结果进行组合
result=EigOfOpt*EigOfCri;
result
9、functionf=AHP1(dim,CmpMatrix)
10、RI=[000.580.901.121.241.321.411.451.491.51];
11、%判断该比较阵是不是一致阵
%判断该比较阵是不是一致阵
[V,D]=eig(CmpMatrix);%求得特征向量和特征值
%求出最大特征值和它所对应的特征向量
tempNum=D(1,1);
pos=1;
forh=1:
dim
ifD(h,h)>tempNum
tempNum=D(h,h);
pos=h;
end
end
eigVector=V(:
pos);
maxeig=D(pos,pos);
maxeig
dim
12、CI=(maxeig-dim)/(dim-1);
CR=CI/RI(dim);
ifCR>0.1
disp('准则对目标影响度评分生成的矩阵不是一致阵,请重新评分')
return
end
CI
%归一化
sum=0;
forh=1:
dim
sum=sum+eigVector(h);
end
sum
pause,
forh=1:
dim
eigVector(h)=eigVector(h)/sum;
end
f=[eigVector;CI];