目录

  1. 用户界面设计 1
    1.1 文件方式(定义输入输出的格式) 1
    1.2 动画方式(画出图形界面) 1
    2 有限状态自动机状态转换图 1
    stop:停止drive:运行 3
    3 高层数据结构设计 3
    3.1 常量定义 3
    3.2 全局变量定义 3
    //以下为公共变量,默认全部为 0 3
    4 系统模块划分 4
    4.1 系统模块划分(说明共分成哪些程序模块,各模块功能概述) 4
  2. 模块名称 io.c 4
  3. 模块名称 public.c 5
  4. 模块名称 datastr.c 5
  5. 模块名称 strategy.c 5
    5.模块名称 init.c 5
    4.2 各模块接口说明 5
  6. 模块接口 init.h 5
  7. 模块接口 public.h 5
  8. 模块接口 default.h 5
  9. 模块接口 datstr.h 5
  10. 模块接口 datastr.h 5
  11. 模块接口 io.h 5
  12. 模块接口 strategy.h 5
    4.3 各模块函数说明 5
    5 核心算法设计 7
  13. FCFS:First Come First Service 先来先服务策略 7
  14. SSTF: Shortest Seek Time First 最短寻找时间优先策略 7
  15. SCAN 顺便服务策略 7
    写在最后: 7
    4系统模块划分
    4.1系统模块划分(说明共分成哪些程序模块,各模块功能概述)
    模块划分思路说明。
    哪些模块需要独立成线程?
    模块关系图,独立线程的模块要用红色标记出来!参考如下图例。

1.模块名称 io.c
模块功能简要描述:完成对用户输入的线程的实现,根据输入更新用户请求数据结构;读取配置文件,根据指令分析类型,调用相应策略;输出当前车辆的状态和各站点的请求信息。

2.模块名称 public.c
模块功能简要描述:三个策略的共同部分,如公交车状态的更新等。
3.模块名称 datastr.c
模块功能简要描述:存放三个策略以及输出状态时用到的数据结构。
4.模块名称 strategy.c
模块功能简要描述:先来先服务策略、最短寻道优先算法策略、扫描策略的具体实现。
5.模块名称 init.c
模块功能简要描述:负责初始化整个系统。

4.2各模块接口说明
1.模块接口 init.h
本模块声明 initSystem()函数,进行程序的初始化。
2.模块接口 public.h
本模块声明了三个策略通用的几个函数,如控制运行方向的 drive(),判断是否到目的地的
isArrive()等,还有一系列共用的全局变量,如时间变量 time,策略类型 STRATEGY 等。
3.模块接口 default.h
本模块使用 define 定义了两个常量,MAX_STATION=10 和 MAX_REQUEST=10000.
4.模块接口 datstr.h
本模块定义了程序的数据结构(data structure),采用了双向循环链表模拟轨道;定义以及相关变量与函数。
5.模块接口 datastr.h
本模块声明了一系列策略共用的函数,如删除链表的 deleteList(),增加站点信息的 addINFO(),删除站点信息的 delINFO()以及判断是否结束退出程序的 isExist(),以及表示公交车信息的结构体数组 INFO 等。
6.模块接口 io.h
本模块声明了用于输入输出的函数,如读取配置文件的函数 readCommand(),获取指令的函数
getRequest(),以及输出打印公交车目前状态的函数 printStatus()等。
7.模块接口 strategy.h
本模块声明了策略一:先来先服务策略、策略二:最短时间寻道策略、策略三:扫描算法的函数。

#include "public.h"
#include "datastr.h"
#include "strategy.h"int time = 0;               //打印状态里的时间
int goal = 0;               //在FCFS中是当前目标在队列中的编号,在SSTF中是目标站的编号
int TOTAL_STATION = 5;  //默认为5
int STRATEGY = 1;       //默认为1,STRAGETY值含义:1 => FCFS,2 => SSTF,3 => SCAN
int DISTANCE = 2;       //默认为2
int TOTAL_LENGTH = 10;  //默认为10
int stop = 0;               //记录停站状态
int direction = 0;void drive() {                                                      //车辆运行函数if (STRATEGY == 1) {if (direction == 1) {position = position->next;}if (direction == -1) {position = position->prev;}}if (STRATEGY == 2 || STRATEGY == 3) {if (status == 1 && stop == 0) {position = position->next;}if (status == 2 && stop == 0) {position = position->prev;}}
}int cacu(int now, int sta,int mn) {int dis = fmin(abs(now - sta), fmin(abs(TOTAL_STATION - now + sta), abs(TOTAL_STATION - sta + now)));return fmin(mn, dis);
}












基于C++的自动驾驶公交车调度系统相关推荐

  1. 仅展示成果:基于ROS的自动驾驶系统搭建教程(三):激光定位ndt_matching

    仅展示成果:基于ROS的自动驾驶系统搭建教程(三):激光定位ndt_matching 前端搭建完毕,接着完善后端的功能,现在是最基础的激光点云定位. 初步是要把循迹功能所涉及的所有相关模块给完善好,接 ...

  2. 基于改进Deeplabv3plus的自动驾驶场景分割系统 (源码&教程)

    1.研究背景 随着人工智能技术的飞速发展,车辆的自动驾驶离人们的生活越来越近.自动驾驶整个运行流程中首先需要依赖各种车载传感器收集车辆周围的各种环境数据,进而利用各种分析算法分析得到计算机可感知的环境 ...

  3. 自动驾驶公交车第 1 部分:车辆运营技术要求

    1 范围 本文件规定了自动驾驶公交车的车辆基本要求.车辆运营要求和信息安全要求. 本文件适用于具备4级及以上驾驶自动化能力,提供载客运营服务的小型.中型和大型公共汽车. 其他车型参照执行. 注:小型. ...

  4. 基于云的先进计划与调度系统的框架与部署

    摘要 许多中小型制造企业已经实施了企业资源计划(ERP)和制造执行系统(MES),开始了云制造的征程,但高昂的硬件和软件投资.实施和维护成本通常会阻碍中小企业采用先进的计划和调度(APS)系统.本文旨 ...

  5. 带你了解基于Ploto构建自动驾驶平台

    摘要:华为云Solution as Code推出基于Ploto构建自动驾驶平台解决方案. 本文分享自华为云社区<基于Ploto构建自动驾驶平台>,作者:阿米托福 . 2022年6月15日, ...

  6. 【智能驾驶】基于计算机视觉的自动驾驶算法研究综述

    近年来,随着人工智能技术的迅速发展,传统汽车行业与信息技术结合,在汽车自动驾驶技术方面的研究取得了长足进步,业内很多大公司都在此领域投入巨资进行研发,如国外的谷歌.丰田,国内的百度.比亚迪等公司都推出 ...

  7. 自动驾驶公交车开上苏州街头,这次不是“试运营”了,市民乘车依然免费

    郭一璞 发自 苏州高铁新城 量子位 报道 | 公众号 QbitAI 自动驾驶公交车,已经出现在了苏州街头. 9座小巴车,中国移动5G网络加持,配备了安全员,这些车辆来自去年刚刚创立的自动驾驶公司轻舟智 ...

  8. matlab创新开放性实验,基于MATLAB 的自动控制原理实验仿真系统的设计

    基于MATLAB 的自动控制原理实验仿真系统的设计 基于MATLAB 的自动控制原理实验仿真系统的设计 田晴,张茁 (河北联合大学电气工程学院,河北唐山063000) 摘要:MATLAB的图形用户界面 ...

  9. 基于激光雷达的自动驾驶车辆障碍物检测研究的选题意义和目的

    回答:基于激光雷达的自动驾驶车辆障碍物检测研究的选题意义在于提升驾驶安全,降低交通事故的发生率,实现智能驾驶.目的则是探索激光雷达技术在自动驾驶车辆障碍物检测中的应用,开发出高效.准确的检测算法,为智 ...

最新文章

  1. 循环map_python函数 map函数—比for还好用的循环
  2. html5 桌面定时提醒,H5界面实现桌面推送通知
  3. WPF界面设计技巧(3)—实现不规则动画按钮
  4. java 内存泄露对象排查_记录一次 java内存泄漏的排查
  5. 自己使用window.open和window.showModalDialog在父子窗口传值的实践简单总结
  6. 人工智能过于发达可能将后患无穷
  7. 配置linux服务器做简单的路由器
  8. 计算机网络部分(共44题),计算机网络原理2013年4月真题及答案
  9. java 整数 引用传递_关于Java引用传递的一个困惑?
  10. Mac用户装机必备——让 Mac 也能右键新建/剪切文件,多达 10 余项实用功能
  11. UML应用:业务内涵的分析抽象amp;表达
  12. 极客大学产品经理训练营 产品经理新人如何落地 第0课总结
  13. 十大热门编程语言优缺点对比
  14. CSD-1371电力监控系统网络安全监测装置(Ⅱ 型)介绍
  15. 【Spring Security】spring security 之初探jwt
  16. Android 仿支付宝9.0芝麻信用分效果
  17. [电脑问题1]Microsoft Visual Basic运行时错误‘-2147221164’:没有注册类
  18. 高德地图API实现天气查询
  19. oushuDB之oracle兼容函数orafunc
  20. 此应用程序无法启动,因为没有Qt平台插件可以初始化,重新安装应用程序可能会解决此问题

热门文章

  1. 数字图像处理,Matlab常用图像处理函数汇总
  2. 夜间灯光数据(npp/viirs)网格化处理全过程
  3. soapui 证书_配置https双向认证,以及用soapui调试
  4. Python编程从入门到实践最详细教程
  5. 戴尔7400笔记本WIN10蓝牙突然不见了,高通QCA61X4A无线网卡
  6. html访问access,HTML_ACCESS数据访问页配置实例,今天在本机上配置成功三层式 - phpStudy...
  7. 课题申报撰写方法详解,课题研究立项、科研成果
  8. ISP Pipline
  9. 初识 jquery.simulate.js 模拟键盘事件
  10. 【赛后诸葛】2020 力扣杯!Code Your Future 春季全国编程大赛