电子商务有限责任公司网站怎样建立,北京++网站建设咨询顾问公司,临沂百度代理公司有几个,firework做网站教程2015年亚太杯APMCM数学建模大赛
B题 城市公共交通服务水平动态评价模型
原题再现 城市公共交通服务评价是城市公共交通系统建设和提高公共交通运营效率的重要组成部分。对于公交企业#xff0c;管理和规划部门#xff0c;传统公交车站、线路和换乘枢纽的规划数据只是基于主…2015年亚太杯APMCM数学建模大赛
B题 城市公共交通服务水平动态评价模型
原题再现 城市公共交通服务评价是城市公共交通系统建设和提高公共交通运营效率的重要组成部分。对于公交企业管理和规划部门传统公交车站、线路和换乘枢纽的规划数据只是基于主管部门收集的统计数据和人工盘点。 在自动采集技术日益发展的今天如果我们能够使用公交车GPS数据、公交卡消费数据、地铁卡消费数据和出租车GPS数据自动分析居民出行需求并动态评估现有的交通规划设施服务包括常规公交站和地铁站这样就可以大大提高传统公交规划、设计和管理的工作效率和质量。 附件中包括城市公交、公交卡消费、地铁卡消费和出租车GPS的数据。请仔细分析这些数据并回答以下问题。 1.至少使用三种方法对数据进行预处理并比较数据的处理效果。 2.分析基于GPS和公交卡消费的居民出行数据OD矩阵。 3.请建立数学模型对公交车站、地铁站的服务进行动态评估并对最不合理的三个公交车站进行重新排序。
整体求解过程概述(摘要) 本文采用大数据处理、聚类集成、计算机模拟分析、综合能效评价等方法解决了城市公共交通服务水平的动态评价问题。 对于第一个问题我们使用三种方法对数据进行初步预处理以便有助于分析和解决下一个问题。第一种方法是通过分仓和聚类等方法去除干扰噪声去除不相关的属性值以达到初始清理的效果利用Apriori算法得到一维布尔关联规则频繁项集综合统计庞大的GPS数据量采用快速生成大项集的方法对数据进行处理。第二种方法是在聚类方法中考虑对原始数据的破坏去除一些无效项和缺陷项在初步清理数据后使用灰色关联度聚类分析。通过比较各种关联度判断识别对象对研究对象的影响并对处理数据的灰色关联度进行具体分析。第三种方法是去除一些相同的、有缺陷的和无效的项目其数据清理过程和方法与前两种方法相似考虑到k均值对数据类型的限制它使用k中心值算法在数据处理后它使用相关性报告来获得数据预处理对原始数据的影响以处理数据。 对于问题二我们使用问题一中预处理的数据通过适当的数据集成原理对公交GPS数据和公交IC卡信息进行补充集成通过综合分析得到市民公交的基本信息。基于市民公交两点分析模型和Erlung-K分布曲线得到了单线公交OD矩阵。根据公交站点群整合的相应原则和标准将全市划分为647个公交社区对市民基本交通信息表中的相应内容进行调整和计算得到公交OD矩阵。基于公交OD矩阵分析了公交时间分布特征、公交空间分布特征和矩阵内容特征。通过分析可以明显看出公交高峰早晚城市交通的潮汐现象相对明显同时我们还发现交通空间分布与城市土地利用布局、人口密度和公交系统分布密切相关。城市中心区聚集了大量的就业机会、各种公共服务和娱乐设备成为市民出行的主要目的地。 关于问题三我们使用系统效率能量值来衡量公共交通系统服务质量的抽象概念。系统效率能量值由两部分组成一是公共交通服务质量评价体系分为安全、便捷、经济、快捷、准确、舒适六个不同方面通过这六个维度的评价得到系统的服务质量二是系统可靠性分为服务时间可靠性、运输时间可靠性、准确点时间可靠性和运输量时间可靠性四个方面。最后通过综合评价发现东门汽车站、梅陇天桥汽车站和十堰金北村汽车站最不合适。东门汽车站道路狭窄客流量大造成交通堵塞影响其系统效率能量值。梅陇高架汽车站客流量大公交运行距离长影响了系统的效率能量值。公交点距过大距居民点距离较长公交次数较少会影响十堰金北村公交站的系统效率能量值。 总之我们通过属性和噪声处理对数据进行了初步清理结合MATLAB、SQL Server、ArcGis等软件使用聚类、K-中心点、Apriori和ADC算法来解决城市公共交通服务水平的动态评估问题。最后我们有了一些期望和探索这些期望和探索在我们的实际生活中具有很大的应用价值。
模型假设 1、 假设提供完整的数据可以代表深圳交通的实际情况 2、 假设数据属性值缺陷记录为无效信息 3、 假设城市公共交通系统处于完全备用状态 4、 假设正点率、行程时间、营业时间符合正态分布乘客人数符合泊松分布。
问题分析 问题一分析 问题一要求我们至少采用三种方法对数据进行初步处理并分析对数据的影响。经过分析我们得到了处理大数据的过程。首先对重要数据进行清理和整合然后进行转换和还原。最后使用ServerSQL工具生成处理结果以分析处理结果对数据的影响。 第一种方法为了消除海量数据中的大量“脏数据”“我们首先介绍了装箱原理和聚类方法然后对时间变量进行加权。最后获得了城市公共交通系统服务质量的关键有效信息。同时去除了一些无效的属性值精简了数据大小。然后使用Apriori算法获得了一维布尔关联规则由于影响公共交通系统服务质量因素的多样性我们使用多次迭代生成多个候选项目集然后绘制依赖图并选择不同的节点来评估结果的准确性。 第二种方法考虑到聚类方法对原始数据的破坏我们只去除一些无效条目和缺陷然后对数据进行回归分析。由于数据被赋予了许多不同的指标因此采用多元线性回归方法对数据进行聚类、分类和处理。 第三种方法数据清理的过程与上述方法类似但去除了一些重复、缺陷和无效项然后考虑到k-平均算法对数据类型的限制所以我们使用k-中点算法。数据处理后调用报表的相异性得到数据预处理对原始数据的影响。 问题二分析 问题二要求我们分析基于GPS和公交卡消费的居民出行数据OD矩阵。经过分析我们发现GPS信息的有用属性值和IC卡数据的集成是有限的。因此我们选择删除相关的无效基础信息从而形成更全面、更实用的基础数据。通过下站乘客从数据库中获取这三种信息的上下车时间完成对公交出行起点和终点的研究。我们可以直接从数据库中提取乘客的乘车时间和车站信息。为了获得下车站和下车时间我们引入了“公交出行分析双站点模型”结合GIS公交电子地图获得了终点站和起点站的完整信息。两个站点模型都没有考虑到大部分公共交通网络是在站点位置上存在变换的因此引入el-Aron-K曲线进行了修正。经过以上分析融合“单线公交乘客OD”信息和辅助参数得到城市公交OD矩阵然后我们按照“站点对应原则”将站点合并并按照此标准划分为若干公共交通区域。然后根据表格调整公共交通出行信息得到城市公交OD矩阵。基于公交OD矩阵分析了矩阵的内容和特点得出了相应的结论。 问题三分析 问题三要求我们建立数学模型对公交车站、地铁站的服务进行动态评估并对最不合理的三个公交车站进行重新排序。经过分析我们认为应该将抽象的服务质量概念转化为系统能效价值来衡量。系统能效分为两部分一是公共交通服务质量评价体系分为安全、便捷、经济、快速、准确、舒适六个不同方面。安全是对操作安全和操作安全状况的评价。便利性是对其服务间隔、服务时间和易用性的评估。经济性是对旅客运输成本的评价。快速评估交付速度和乘客出行时间。分析是准确的到达时间偏移和准时率。舒适性是对运输系统的满载率和座椅的评估。二是系统的可靠性分为营业时间可靠性、时间可靠性和良好可靠性、旅客人数可靠性四个方面。针对以上十个方面的数据库评价指标以及以往研究的结果和深圳的实际情况设定了评价标准并最终建立了基于ADC模型的系统能效公式计算出各站的能效。然后综合所有的能效值对整个系统进行评价。车站效率最低的是最不合理的车站我们可以根据评分过程得到最合理的安排。
模型的建立与求解整体论文缩略图 全部论文及程序请见下方“ 只会建模 QQ名片” 点击QQ名片即可
程序代码
部分程序如下:
#include cstdio
#include cstring
#include algorithm
#include iostream
#include vector
#include queue
#include stack
using namespace std;
const int MAXM 1E7;
const int MAXN 60000;
struct Side{int u,v;
}side[MAXM];
vectorintvv[MAXN];
int siz,totEdge;//the number of nodes,the number of edges
int hh[MAXM];
bool vis[MAXN];
void ppGraph(){//print graphfor(int i 1;i siz;i ){couti:;for(int j 0;j vv[i].size();j )coutvv[i][j] ;coutendl;}coutendl;
}
void ppDiscretization(){//print the result of discretizationfor(int i 0;i totEdge;i ){coutside[i].u side[i].vendl;}
}
void buildGraph(bool flag){//if flag is 0,graph is undirectedfor(int i 0;i totEdge;i ){vv[side[i].u].push_back(side[i].v);if(flag 0)vv[side[i].v].push_back(side[i].u);//wu xiang tu}
}
void getNC(){//undirected graph connected componetmemset(vis,0,sizeof(vis));int totT 0,maxNum 0;queueintq;for(int i 1;i siz;i ){if(vis[i] 0){vis[i] 1;q.push(i);totT ;int Tnum 1;while(!q.empty()){int now q.front();q.pop();int nn vv[now].size();for(int j 0;j nn;j ){if(vis[vv[now][j]])continue;Tnum ;q.push(vv[now][j]);vis[vv[now][j]] 1;}}maxNum max(maxNum,Tnum);}}coutthe number of node of the max Connected
component :maxNumthe number of Connected
component :totTendl;
}
void getE(){//global efficiencydouble totDis 0.0;for(int i 1;i siz;i ){memset(vis,0,sizeof(vis));queuepairint,int q;q.push(make_pair(i,0));vis[i] 1;while(!q.empty()){pairint,int tmp q.front();q.pop();if(tmp.second)totDis 1.0/tmp.second;int now tmp.first,nn vv[now].size();for(int j 0;j nn;j ){int xx vv[now][j];if(vis[xx])continue;q.push(make_pair(xx,tmp.second1));vis[xx] 1;}}}coutthe average length of Shortest path of all nodes totDis/siz/(siz1)endl;
}
bool have(int b,int a){//judge whether have edge b-a or notint nn vv[b].size();for(int i 0;i nn;i ){if(vv[b][i] a)return 1;}return false;}
void getC(){//two kind of clustering coefficient//ppGraph();double C1 0,C2 0;long long totLian 0;long long totTri 0;for(int i 1;i siz;i ){int nn vv[i].size();if(nn 1)continue;int tmpTri 0;for(int one 0;one nn;one ){for(int two one 1;two nn;two ){tmpTri have(vv[i][two],vv[i][one]);}}double tmpC1 (double)tmpTri*2/nn/(nn-1);C1 tmpC1;totTri tmpTri;totLian nn*(nn-1)/2;}C1 / siz;C2 (double)totTri/totLian;coutaverage Clustering coefficient of all nodes :C1 C2endl;
}
void getZ(){//average degree of nodescoutaverage degree of nodes(double)totEdge/sizendl;
}
//strongly connected component in directed graph
int t,dfn[MAXN],low[MAXN],sum;
int gNum[MAXN];
stackints;
void dfs(int u){dfn[u] low[u] t;s.push(u);int nn vv[u].size();for(int i 0;i nn;i ){int v vv[u][i];if(!dfn[v])dfs(v);if(dfn[v] ! -1)low[u] min(low[u],low[v]);}
if(low[u] dfn[u]){int v;do {v s.top();s.pop();dfn[v] -1;low[v] sum;gNum[sum] ;}while(v ! u);sum ;}
}
void getG(){t sum 0;for(int i 1;i siz;i ){if(!dfn[i])dfs(i);}int maxNum 0;for(int i 0;i sum;i ){maxNum max(maxNum,gNum[i]);}coutthe number of nodes of the max Strongly connected
component :maxNumthe number of Strongly connected
componentsumendl;
}
//strongly connected component in directed graph
void getR1(){//reciprocityint totm_d 0;for(int i 1;i siz;i ){int nn vv[i].size();for(int j 0;j nn;j ){totm_d have(vv[i][j],i);}}coutthe reciprocity is : (double)totm_d/totEdgeendl;
}
void Undir(){//get undirected graph parametersbuildGraph(0);coutTotal Nodes is :sizendl;getNC();getE();getC();
}
void Dir(){//get directed graph parametersbuildGraph(1);coutTotal Nodes is :sizendl;getZ();getG();getE();getR1();for(int i 0;i siz;i )vv[i].clear();buildGraph(0);getC();
}
int main(){freopen(in.txt,r,stdin);//build graph and discretizationint a,b;char s[100];cins;totEdge 0;while(~scanf(%d,%d,a,b)){side[totEdge] (Side){a,b};hh[totEdge*2] a;hh[totEdge*21] b;totEdge ;}sort(hh,hhtotEdge*2);siz unique(hh,hhtotEdge*2) - hh;for(int i 0;i totEdge;i ){side[i].u lower_bound(hh,hhsiz,side[i].u) - hh 1;side[i].v lower_bound(hh,hhsiz,side[i].v) - hh 1;//coutside[i].u side[i].vendl;}//ppDiscretization();//build graph and discretization//Undir();//Get Parameters of Undirected GraphDir();//Get Parameters of Directed Graphreturn 0;
}全部论文及程序请见下方“ 只会建模 QQ名片” 点击QQ名片即可