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名片即可

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入探究ASEMI肖特基二极管MBR60100PT的材质

编辑-Z 在电子零件领域中&#xff0c;肖特基二极管MBR60100PT因其出色的性能和广泛的应用而显得尤为关键。理解其材质不仅有助于我们深入理解其运作原理&#xff0c;也有助于我们做出更合适的电子设计。那么&#xff0c;肖特基二极管MBR60100PT是什么材质呢? 首先&#xff0c…

【Ansible自动化运维工具 1】Ansible常用模块详解(附各模块应用实例和Ansible环境安装部署)

Ansible常用模块 一、Ansible1.1 简介1.2 工作原理1.3 Ansible的特性1.3.1 特性一&#xff1a;Agentless&#xff0c;即无Agent的存在1.3.2 特性二&#xff1a;幂等性 1.4 Ansible的基本组件 二、Ansible环境安装部署2.1 安装ansible2.2 查看基本信息2.3 配置远程主机清单 三、…

子集生成算法:给定一个集合,枚举所有可能的子集

给定一个集合&#xff0c;枚举所有可能的子集。 &#xff08;为简单起见&#xff0c;本文讨论的集合中没有重复元素&#xff09; 1、方法一&#xff1a;增量构造法 第一种思路是一次选出一个元素放到集合中&#xff0c;程序如下&#xff1a; void print_subset(int n, int …

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开发人…

视频智能视觉分析真的遥不可及吗?有没有那种下载就能用的视频分析服务?

我一直有一个感觉&#xff0c;就是市面上很难找到那么一个带视频算法的软件&#xff0c;能让我们很直观地看到视频分析的效果&#xff0c;大部分都要内置在某种算力硬件上&#xff0c;或者对GPU要求比较严格&#xff0c;很难做到像以前我们做的视频直播软件那样&#xff0c;下载…

Java Dubbo 微服务框架 HP-SOA

HP-SOA 功能完备&#xff0c;简单易用&#xff0c;高度可扩展的Java微服务框架。 【快速开始】 技术架构 技术集成 Web服务框架&#xff1a;spring-boot 3.x微服务框架&#xff1a;Dubbo 3.x服务注册中心&#xff1a;Nacos配置中心&#xff1a;Nacos服务治理中心&#xff1…

使用DBSyncer实现增量Mysql到Mysql的数据同步_DBSyncer1.2.4版本---数据同步之DBSyncer工作笔记006

之前都是用来postgresql到mysql的同步,需要配置postgresql的复制槽,对于mysq来说,需要配置: mysql启用binlog: https://gitee.com/ghi/dbsyncer/wikis/%E6%93%8D%E4%BD%9C%E6%89%8B%E5%86%8C/%E6%97%A5%E5%BF%97%E9%85%8D%E7%BD%AE%EF%BC%88%E6%95%B0%E6%8D%AE%E6%BA%90%EF%B…

vscode 保存 “index.tsx“失败: 权限不足。选择 “以超级用户身份重试“ 以超级用户身份重试。

vscode 保存 "index.tsx"失败: 权限不足。选择 “以超级用户身份重试” 以超级用户身份重试。 操作&#xff1a;mac在文件夹中创建文件&#xff0c;sudo 创建umiJs项目 解决&#xff1a;修改文件夹权限 右键文件夹

网络协议--DNS:域名系统

14.1 引言 域名系统&#xff08;DNS&#xff09;是一种用于TCP/IP应用程序的分布式数据库&#xff0c;它提供主机名字和IP地址之间的转换及有关电子邮件的选路信息。这里提到的分布式是指在Internet上的单个站点不能拥有所有的信息。每个站点&#xff08;如大学中的系、校园、…

Vs2019 配置全局公共库和头文件

本文参考&#xff1a;Visual Studio 2019 配置全局公共库目录 背景 在程序开发过程中&#xff0c;日志和数据格式化是必不可少的。而spdlog和fmt正好可以满足这两点并且轻量。但是如果每次新建一个项目都必须引入一次显的太繁琐。那么是否可以加入vs的公共库呢? 实施 spdlog…

Java多线程篇(12)——ForkJoinPool

文章目录 1、基本原理2、源码2.1、sumbit干了啥&#xff1f;submitexternalPushsignalWorktryAddWorker 2.2、工作线程如何运行&#xff1f;怎么窃取&#xff1f;runWorkerscan 2.3、fork干了啥&#xff1f;fork 2.4、join干了啥&#xff1f;joinawaitJoin 1、基本原理 假设有…

《动手学深度学习 Pytorch版》 10.4 Bahdanau注意力

10.4.1 模型 Bahdanau 等人提出了一个没有严格单向对齐限制的可微注意力模型。在预测词元时&#xff0c;如果不是所有输入词元都相关&#xff0c;模型将仅对齐&#xff08;或参与&#xff09;输入序列中与当前预测相关的部分。这是通过将上下文变量视为注意力集中的输出来实现…

PS软件 点击 “另存为 Web 所用格式” ,提示错误 无法完成操作 系统找不到指定路径

软件&#xff1a;Adobe Photoshop 问题&#xff1a; PS 点击 另存为 Web 所用格式 &#xff0c;提示错误 无法完成操作 系统找不到指定路径 解决&#xff1a; 如果是Win10以上的系统&#xff0c;出现这种情况基本就是被系统自带的杀毒软件阻止了&#xff0c;可以看一下电脑右…

JavaScript从入门到精通系列第二十五篇:JavaScript中的Date对象

文章目录 一&#xff1a;Date对象简介 1&#xff1a;概念简介 二&#xff1a;Date对象 1&#xff1a;创建当前时间 2&#xff1a;创建指定时间 三&#xff1a;日期对象函数 1&#xff1a;getDate() 2&#xff1a;getDay() 3&#xff1a;getMonth() 4&#xff1a;getF…

vue源码分析(二)——vue的入口发生了什么

文章目录 前言&#xff08;1&#xff09;vue 项目构建的时候&#xff0c;通过package.json文件看到构建入口&#xff08;2&#xff09; 构建入口页面&#xff1a;导入同级模块config的getAllbuilds方法&#xff08;3&#xff09; 通过传入参数中的builds对象使用map获取&#x…

主流大语言模型的技术细节

主流大语言模型的技术原理细节从预训练到微调https://mp.weixin.qq.com/s/P1enjLqH-UWNy7uaIviWRA 比较 LLaMA、ChatGLM、Falcon 等大语言模型的细节&#xff1a;tokenizer、位置编码、Layer Normalization、激活函数等。2. 大语言模型的分布式训练技术&#xff1a;数据并行、…

threejs(4)-纹理材质高级操作

一、纹理重复_缩放_旋转_位移操作 // 导入threejs import * as THREE from "three"; // 导入轨道控制器 import { OrbitControls } from "three/examples/jsm/controls/OrbitControls.js"; // 导入lil.gui import { GUI } from "three/examples/jsm/l…

创建并启动华为HarmonyOS本地与远程模拟器及远程真机

1.打开设备管理器 2.选择要添加的手机设备,然后点击安装 3.正在下载华为手机模拟器 4.下载完成 5.创建新模拟器 下载系统镜像 点击下一步,创建模拟器 创建成功 启动模拟器 华为模拟器启动成功 6.登陆华为账号并使用远程模拟器 7.使用远程真机

使用Selenium和Java编写爬虫程序

以下是一个使用Selenium和Java编写的音频爬虫程序&#xff0c;该程序使用了proxy的代码。请注意&#xff0c;这个示例需要在IDE中运行&#xff0c;并且可能需要根据您的系统和需求进行调整。 import java.io.IOException; import java.util.List; import java.util.concurrent…

提升技能,挑战自我——一站式在线题库小程序

在这个信息爆炸的时代&#xff0c;我们总是在寻找一种方式&#xff0c;让自己在众多的知识海洋中快速提升技能&#xff0c;挑战自我。今天&#xff0c;我要向大家推荐一款全新的在线题库小程序KD蝌蚪阿坤&#xff0c;它将帮助你实现这个目标。 KD蝌蚪阿坤是一款全面的在线题库…