09-2017.12-离散数学编程《小黄车在北科大的配额问题》

(本篇为原创,转载使用请注明出处)

  • 实际问题描述

在北科大校园内安置1000辆小黄车,怎样安置使得小黄车的利用效率最高

  • 思路与分析

既然是利用效率的最大化问题,其实可以抽象为更多“人”,骑“自行车”更“方便”。

先将北科地图进行抽象,分为五块区域,八个聚簇群。

定义聚簇热点度聚簇流动度

对于热点度的主要变量为常驻人口数(如宿舍的人口与教学楼平均上课自习人数),确定这个点小黄车的最少基数

对于流动度分为两类变量:

变量一:区域通达度:点与其他非邻接点(骑车的最少条件,太近不骑车)的“关联度”

关联度即为人们的需求,分为:

软性需求:与其他非邻接点的长度越长,对于小黄车的需求越高

刚性需求:基于两个点之间常识的需求(常量、补正软性需求)

变量二:人员流动度:这个聚簇的人员的一天流动需求有多大(比如教学楼一天一直有大量人员流动,但类似机电楼群等较少)

公式:聚簇小黄车配额度=k1*聚簇热点度(C)+k2*聚簇流动度

      聚簇热点度=k3*常驻人口数(C)

      聚簇流动度=k4*区域通达度+k5*人员流动度(C)

      区域通达度=Σ(点到第i个非邻接点的软性需求*点到第i个非邻接点的刚性需求)(占总共n个点刚性需求百分比)

      软性需求=各点到其余非邻接点的最短路径长度

配额=(该点配额度/各点配额度之和)*小黄车总数

北科大带权无向图

  • 编程过程与算法

程序分为四个部分,功能分别是

  1. 输出抽象的北科地图,在进行合理的假设与归并之后,化成带权值的无向图。
  2. 输出邻接矩阵
  3. 每点到各点的最短路径长度
  4. 输出小黄车在北京科技大学八个聚簇的配额
  • 收获体会

本次作业选择了小黄车题目,平台语言采用了C++开发的简单WIN32程序。结合离散数学图论与数理逻辑的相关知识进行问题的分析。编程过程中出现了好多问题,首先对于数据过多的问题,一开始觉得一次次添加数据较为繁琐,后来就将数据保存改为读取的方式,解决了一大难题。在读取数据的过程中,尤其是最短路径带权数据的读取中出现了一些问题,首先对于算法程序,应该将不带权的地方置最大数而不是0,其次循环过程中出现了一些问题,应该从1至8,而不是0至7,导致输入的一些数据溢出,程序出错。

这次作业不光是对离散数学的回顾与学习,也是对自己编程知识习惯的一次巩固,代码尽量模块化,简洁美观。

可惜的是没有做图形界面,主要C++的MFC写图形界面事倍功半,其余图形界面的编程并未作过多的深入研究,所以只是做了伪图形界面,有一些可惜。

  • 资源分享

链接:09-2017.12-离散数学编程《小黄车在北科大的配额问题》 密码:bf6c

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值