2015年亚太杯APMCM数学建模大赛B题城市公共交通服务水平动态评价模型求解全过程文档及程序
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];
vector<int>vv[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 ++){cout<<i<<':';for(int j = 0;j < vv[i].size();j ++)cout<<vv[i][j]<<' ';cout<<endl;}cout<<endl;
}
void ppDiscretization(){//print the result of discretizationfor(int i = 0;i < totEdge;i ++){cout<<side[i].u<<' '<<side[i].v<<endl;}
}
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;queue<int>q;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);}}cout<<"the number of node of the max Connected
component :"<<maxNum<<"the number of Connected
component :"<<totT<<endl;
}
void getE(){//global efficiencydouble totDis = 0.0;for(int i = 1;i <= siz;i ++){memset(vis,0,sizeof(vis));queue<pair<int,int> >q;q.push(make_pair(i,0));vis[i] = 1;while(!q.empty()){pair<int,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.second+1));vis[xx] = 1;}}}cout<<"the 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;cout<<"average Clustering coefficient of all nodes :"<<C1<<' '<<C2<<endl;
}
void getZ(){//average degree of nodescout<<"average degree of nodes"<<(double)totEdge/siz<<endl;
}
//strongly connected component in directed graph
int t,dfn[MAXN],low[MAXN],sum;
int gNum[MAXN];
stack<int>s;
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]);}cout<<"the number of nodes of the max Strongly connected
component :"<<maxNum<<"the number of Strongly connected
component"<<sum<<endl;
}
//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);}}cout<<"the reciprocity is : "<<(double)totm_d/totEdge<<endl;
}
void Undir(){//get undirected graph parametersbuildGraph(0);cout<<"Total Nodes is :"<<siz<<endl;getNC();getE();getC();
}
void Dir(){//get directed graph parametersbuildGraph(1);cout<<"Total Nodes is :"<<siz<<endl;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];cin>>s;totEdge = 0;while(~scanf("%d,%d",&a,&b)){side[totEdge] = (Side){a,b};hh[totEdge*2] = a;hh[totEdge*2+1] = b;totEdge ++;}sort(hh,hh+totEdge*2);siz = unique(hh,hh+totEdge*2) - hh;for(int i = 0;i < totEdge;i ++){side[i].u = lower_bound(hh,hh+siz,side[i].u) - hh + 1;side[i].v = lower_bound(hh,hh+siz,side[i].v) - hh + 1;//cout<<side[i].u<<' '<<side[i].v<<endl;}//ppDiscretization();//build graph and discretization//Undir();//Get Parameters of Undirected GraphDir();//Get Parameters of Directed Graphreturn 0;
}
全部论文及程序请见下方“ 只会建模 QQ名片” 点击QQ名片即可
相关文章:

2015年亚太杯APMCM数学建模大赛B题城市公共交通服务水平动态评价模型求解全过程文档及程序
2015年亚太杯APMCM数学建模大赛 B题 城市公共交通服务水平动态评价模型 原题再现 城市公共交通服务评价是城市公共交通系统建设和提高公共交通运营效率的重要组成部分。对于公交企业,管理和规划部门,传统公交车站、线路和换乘枢纽的规划数据只是基于主…...

CCF CSP认证历年题目自练 Day40
题目 试题编号: 201412-3 试题名称: 集合竞价 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 某股票交易所请你编写一个程序,根据开盘前客户提交的订单来确定某特定股票的开盘价和开盘成交量…...

闲聊一下写技术博客的一些感想
大家好,我是阿赵。 在我的163博客关闭之后,我就把一部分的博文移到了CSDN这边。不过实际上我有好几年都没有写过博客,所以这个博客的浏览量和粉丝数一直都不高。直到今年2023年的2月底开始,打算总结一下3DsMax的MaxScript的用…...

单片机为什么一直用C语言,不用其他编程语言?
单片机为什么一直用C语言,不用其他编程语言? 51 单片机规模小得拮据,C 的优势几乎看不到。放个类型信息进去都费劲,你还想用虚函数?还想模板展开?程序轻松破 10k。最近很多小伙伴找我,说想要一些…...

利用HTTP2,新型DDoS攻击峰值破纪录
亚马逊、Cloudflare 和谷歌周二联合发布消息称,一种依赖于 HTTP/2 快速重置技术的攻击行为对它们造成了破纪录的分布式拒绝服务 (DDoS) 攻击。 根据披露的信息,该攻击自8月下旬以来便一直存在,所利用的漏洞被跟踪为CVE-2023-44487,…...

android鼠标滚轮事件监听方法
Overridepublic boolean onGenericMotionEvent(MotionEvent event) { //The input source is a pointing device associated with a display. //输入源为可显示的指针设备,如:mouse pointing device(鼠标指针),stylus pointing device(尖笔设备)if (0 ! …...

【C语言|关键字】C语言32个关键字详解(4)——其他(typedef、sizeof)
😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 🤣本文内容🤣&a…...

Hafnium简介和构建
安全之安全(security)博客目录导读 目录 一、Hafnium简介 二、Hafnium构建 2.1.1 先决条件 2.1.1.1 构建Host 2.1.1.2 工具链 2.1.1.3 依赖 2.1.1.4 获取源码 2.1.2 构建 一、Hafnium简介 可信固件为Armv8-A、Armv9-A和Armv8-M提供了安全软件的参考实现。它为SoC开发人…...

2023年香水行业数据分析:国人用香需求升级,高端香水高速增长
在人口结构变迁的背景下,“Z世代”作为当下我国的消费主力,正在将“悦己”消费推动成为新潮流。具备经济基础的“Z世代”倡导“高颜值”、“个性化”、“精致主义”,这和香水、香氛为代表的“嗅觉经济”的特性充分契合,因此&#…...

这可能是最简单的Page Object库
做过web自动化测试的同学,对Page object设计模式应该不陌生。 Page object库应该根据以下目标开发: Page object应该易于使用 清晰的结构 PageObjects 对于页面对象 PageModules对于页面内容 只写测试,而不是基础。 在可能的情况下防止…...

论文阅读——BERT
ArXiv:https://arxiv.org/abs/1810.04805 github:GitHub - google-research/bert: TensorFlow code and pre-trained models for BERT 一、模型及特点: 1、模型: 深层双向transformer encoder结构 BERT-BASE:(L12, H…...

竞赛 深度学习人体跌倒检测 -yolo 机器视觉 opencv python
0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 **基于深度学习的人体跌倒检测算法研究与实现 ** 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🥇学长这里给一个题目综合评分(每项满…...

Springboot创建多数据源
yml文件 spring:datasource:dynamic:# 设置默认的数据源或者数据源组,默认值即为 masterprimary: masterdatasource:# 主库数据源master:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://xxx.xxx.xxx.xxx:3306/test?useUnicodetrue&characterEncodingutf8…...

【Hello Algorithm】滑动窗口内最大值最小值
滑动窗口介绍 滑动窗口是一种我们想象中的数据结构 它是用来解决算法问题的 我们可以想象出一个数组 然后再在这个数组的起始位置想象出两个指针 L 和 R 我们对于这两个指针做出以下规定 L 和 R指针只能往右移动L指针不能走到R指针的右边我们只能看到L指针和R指针中间的数字 …...

HTML,CSS实现鼠标划过头像,头像突出变大(附源码)
话不多说,先上代码 先看原图: 再看 鼠标放上去后的图: 是不是明显感觉到 人物头像突出了一些,而且还增加了阴影部分的效果呢? 直接上代码!!! <!--由于我的 img 标签放的是循环后…...

“爱知道”,你知道吗?
拥抱时代浪潮,加速科技变革。数字经济时代,杭州重点贯彻市委市政府数字经济创新提质“一号发展工程”,加快发展数字经济,推动全市数字经济往高攀升、向新进军、以融提效。基于政府对数字经济新活力的赋能、优化数字社会环节、构建…...

基于SpringBoot+Vue的服装销售系统
基于SpringBootVue的服装销售平台的设计与实现~ 开发语言:Java数据库:MySQL技术:SpringBootMyBatisVue工具:IDEA/Ecilpse、Navicat、Maven 系统展示 主页 我的订单 登录界面 管理员界面 摘要 基于SpringBoot和Vue的服装销售系统…...

针对多分类问题,使用深度学习--Keras进行微调提升性能
前面的文章对二分类问题用Keras进行了Fine-tune,使得模型的准确率进一步提升,此处对于多分类问题,尝试使用Fine-tune来提升性能。 1. 准备数据集 为了演示,本次选用了博文keras系列︱图像多分类训练与利用bottleneck features进行微调(三)中提到的数据集,原始的数据集…...

一、【Photoshop如何根据不同类型图像抠图】
文章目录 前言图形结构1、规则图形2、不规则图形 图形颜色1、轮廓清晰2、颜色分明 前言 当我们有抠图需求的时候,不要一开始就想着我怎么去把它抠出来,首先应该分析图形的特点,然后再去选取合适的工具,这样才可以做到事半功倍&am…...

rust - 理解borrow trait
简介 borrow trait 是处理借用(即其它语言中的引用)的 trait,变量的所有权不会转移.泛型定义如下: pub trait Borrow<Borrowed: ?Sized> {/// Immutably borrows from an owned value.fn borrow(&self) -> &Borrowed; }其中包含一个 borrow(&self)的方…...

review-java-basis
Path环境变量用于记住程序路径,方便在命令行窗口的任意目录启动程序 \n代表换行的意思,/t代表一个tab前进一格 强转可能导致数据的丢失(溢出) 浮点型转换为整型,直接丢掉小数部分,保留整数部分返回 数据类…...

Go 语言访问 Redis 笔记
文章目录 Mac 下载 RedisMac Redix 数据库打开服务端客户端 导包连接数据库操作字符串操作 Hash设置过期时间队列操作连接池并发操作管道化操作事务操作 Mac 下载 Redis Mac安装Redis,原来就是这么简单 Mac Redix 数据库打开 brew services start redis 服务端 …...

【MySQL数据库重点】第二节:MySQL基础知识(基本操作)
目录 一:数据库的操作 1.显示数据库 2.创建数据库 3.使用数据库 4.删除数据库 二:常用数据类型 1.数值类型:整型和浮点型 2.字符串类型 3.日期类型 三:表的操作 1.查看表结构 2.创建表 3.删除表 一:数据库…...

计算机网络--第一次作业
1、比较电路交换、报文交换和分组报文交换优缺点 电路交换 电路交换是以电路连接为目的的交换方式,通信之前要在通信双方之间建立一条被双方独占的物理通道(由通信双方之间的交换设备和链路逐段连接而成)。 优点: ①由于通信线路为…...

网络协议--TCP的成块数据流
20.1 引言 在第15章我们看到TFTP使用了停止等待协议。数据发送方在发送下一个数据块之前需要等待接收对已发送数据的确认。本章我们将介绍TCP所使用的被称为滑动窗口协议的另一种形式的流量控制方法。该协议允许发送方在停止并等待确认前可以连续发送多个分组。由于发送方不必…...

鼎鑫鸿鄴引入“能源互联网+”理念 打造共赢
近年来,随着全球能源消耗的不断增长和环境问题的日益突出,清洁能源转型成为全球共同关注的话题。中国作为全球最大的能源消费国,也在积极推动能源结构的优化和清洁能源的发展。鼎鑫鸿鄴新能源科技有限公司在推动清洁能源转型方面制定了一系列…...

Qt下实现支持多线程的单例模式
Qt下实现支持多线程的单例模式 Chapter1 Qt下实现支持多线程的单例模式($$$)1. 代码介绍2. 代码之路3. 详细分析3.1 什么是单例3.2 如何让类无法实例化3.3 如何调用这个唯一实例3.4 如何支持多线程3.5 如何解决内存泄漏 4. 结束语 Chapter2 Qt 全局单例类Chapter3 Qt实用技巧&a…...

基于Java的宠物商店管理系统设计与实现(源码+lw+部署文档+讲解等)
文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding) 代码参考数据库参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&am…...

ArcGIS中批量mxd高版本转低版本
我们经常在给别人发ArcGIS的工程文件mxd,结果到别人那发现mxd工程文件打不开,原因是我们的arcgis版本高于别人,此时工程文件又很多,一个个转存成低版本又嫌麻烦,于是我们做了个批量mxd高版本转低版本的小工具ÿ…...

三篇论文:速览GPT在网络安全最新论文中的应用案例
GPT在网络安全领域的应用案例 写在最前面论文1:Chatgpt/CodeX引入会话式 APR 范例利用验证反馈LLM 的长期上下文窗口:更智能的反馈机制、更有效的信息合并策略、更复杂的模型结构、鼓励生成多样性和GPT类似的步骤:Conversational APR 对话式A…...