基于python实现的电梯调度

基于python实现的电梯调度 1 项目说明 1,1 项目目的 通过实现电梯调度,体会操作系统调度过程 学习特定环境下多线程编程方法 学习调度算法 1

本文包含相关资料包-----> 点击直达获取<-------

基于python实现的电梯调度

1 项目说明

1.1 项目目的

  • 通过实现电梯调度,体会操作系统调度过程

  • 学习特定环境下多线程编程方法

  • 学习调度算法

1.2 开发环境

  • 开发语言 :python

  • 开发环境 :pycharm

  • 开发框架 :pyQt5

1.3 基本需求

1.3.1 基本任务

某一层楼20层,有五部互联的电梯。基于线程思想,编写一个电梯调度程序。

1.3.2 功能描述

  • 电梯应有一些按键,如:数字键、关门键、开门键、上行键、下行键、报警键等

  • 有数码显示器指示当前电梯状态

  • 每层楼、每部电梯门口,有上行、下行按钮、数码显示

  • 五部电梯相互联结,即当一个电梯按钮按下去时,其它电梯相应按钮同时点亮,表示也按下去了

1.3.3 调度算法

  • 所有电梯初始状态都在第一层

  • 每个电梯没有相应请求情况下,则应该在原地保持不动

  • 电梯调度算法自行设计

1.4 操作手册

1.4.1 数字键

每部电梯中都设有1-20的数字键,点击数字键,电梯到达指定楼层。如图操作:

1.4.2 上下健

每个楼层设有上行和下行键,点击上下行健,所有电梯都会接收到请求,调度算法进行调度,安排电梯到达该楼层,如图操作:

2. 设计与实现

2.1 算法设计

采用LOOK算法,LOOK算法是扫描算法(SCAN)的一种改进。对LOOK算法而言,电梯同样在最底层和最顶层之间运行。但当LOOK算法发现电梯所移动的方向上不再有请求时立即改变运行方向,而扫描算法则需要移动到最底层或者最顶层时才改变运行方向。

2.2 类设计

2.2.1 UI类

python class Window(QWidget):

方法

def __init__(self):

属性

python self.lift = {} # 电梯图案数组 self.lift_anime = {} # 电梯动画数组 self.floor_digit = {} # 楼层数显数组 self.up_btn = {} # 上行按钮数组 self.down_btn = {} # 下行按钮数组 self.floor_btn = [[] for i in range(6)] #楼层按钮 self.dispatcher = Dispatcher(self) # 电梯调度

2.2.2 调度算法类

python class Dispatcher():

方法

python `def __init__(self, ui): def listenUpBtn(self, btn_floor): # 监听上行按钮 def listenDownBtn(self, btn_floor): # 监听下行按钮 def listenFloorBtn(self, lift_num, btn_floor): def thread(self, lift_num): # 为各台电梯创建线程 def upAnime(self, lift_num): # 上行动画实现 def downAnime(self, lift_num): # 下行动画实现 def afterUp(self, lift_num): # 上行后的相关善后 def afterDown(self, lift_num): # 下行后的相关善后 def dispatch(self, lift_num): # 循环执行电梯调度`

属性

python self.ui = ui self.currentFloor = {} # 电梯所在层数 self.isGoingUp = {} # 电梯上行标志数组 self.isGoingDown = {} # 电梯下行标志数组 self.toUp = [[0] * 21 for i in range(6)] # 尚未处理的上行请求 self.toDown = [[0] * 21 for i in range(6)] # 尚未处理的下行请求 self.upSeq = [[] for i in range(6)] # 电梯上行序列 self.downSeq = [[] for i in range(6)] # 电梯下行序列

3 测试

3.1 上行键测试

  • 测试用例 :某楼层按上行键

  • 预期结果 :距离最短的电梯响应

  • 测试结果 :符合要求

3.2 下行键测试

  • 测试用例 :某楼层按下行键

  • 预期结果 :距离最短的电梯响应

  • 测试结果 :符合要求,如图电梯5正在前往

3.3 楼层键

  • 测试用例 :某台电梯按下楼层键

  • 预期结果 :该电梯响应,前往指定楼层

  • 测试结果 :符合要求

参考文献

  • 电梯安全远程监控管理系统设计与开发(北京邮电大学·李义平)
  • 基于物联网的电梯远程监控系统的研建(北京林业大学·商晓)
  • 基于J2EE的电梯运行参数远程监控系统的设计与实现(沈阳工业大学·葛宏帅)
  • 电梯行业人力资源信用信息平台的设计与实现(南京理工大学·李春雷)
  • 电梯管理系统的设计与实现(西安电子科技大学·贾音)
  • 面向电梯零部件制造企业智能仓储系统研究与开发(江南大学·方磊)
  • 基于J2EE开源框架的物资调运系统的设计与实现(华中科技大学·张攀)
  • 营口市电梯检验检测管理系统设计与实现(大连理工大学·吴迪)
  • 基于3G网络的电梯远程监控系统的设计(华中科技大学·陈泽曦)
  • 电梯质量检验业务管理系统设计与开发(重庆大学·卿筑琥)
  • 梯级泵站优化调度系统的设计与实现(武汉邮电科学研究院·陈欣)
  • 营口市电梯检验检测管理系统设计与实现(大连理工大学·吴迪)
  • 电梯运行监视与远程呼梯系统研究(山东建筑大学·孙敏)
  • SC型施工电梯参数化建模与轻量化研究(湘潭大学·杨汝豪)
  • 电梯安全远程监控管理系统设计与开发(北京邮电大学·李义平)

本文内容包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主题。发布者:毕设项目助手 ,原文地址:https://bishedaima.com/yuanma/35191.html

相关推荐

  • 基于Python实现的新闻网络爬虫程序

    基于Python实现的新闻网络爬虫程序 1,简介 1,1 引用术语与缩写解释 缩写,术语 解 释 Python 一种简洁而强大的解释型脚本语言 pyodbc Python下的ODBC数据库访问组件 SQLAlchemy Python下的ORM数据访问组件 pywin32 Python下的Win32接口访问组件 requests Python下的Web访问组件 Pillow Python下的图像处理组件 解释型语言 无需编译源码可敏捷部署并执行的语言 IOC 控制反转
    2024年05月14日
    4 1 2
  • 基于SpringBoot框架的体育馆管理系统

    这是一套采用Java语言开发的体育馆管理系统的源代码,基于流行的SpringBoot框架,我们利用了SpringBoot和Vue,js的技术栈,开发工具为Idea或Eclipse
    2024年05月23日
    3 1 2
  • 基于SpringBoot框架的公寓报修管理系统

    这是一套采用Java编程语言,基于SpringBoot框架构建的公寓维修管理系统的源代码,开发工具为Idea或Eclipse,技术栈融入了SpringBoot和Vue
    2024年05月23日
    5 1 1
  • 基于SSM框架的医院电子病历管理系统源代码

    这是一个🔥🔥基于SSM框架的医院电子病历管理系统源代码🔥🔥的项目源码,开发语言Java,开发环境Idea/Eclipse,这个 医院电子病历管理开发技术栈为SSM项目
    2024年05月23日
    3 1 1
  • 基于Java+SSM的网上订餐系统、基于JavaWeb的网上订餐系统

    在当今数字化时代,基于Java+SSM框架的网上订餐系统日益受到关注,随着互联网的普及和校园生活的快节奏,校园点餐系统成为了一个备受期待的解决方案,该系统以提供便捷的点餐服务为目标
    2024年05月07日
    34 1 6
  • 智能物流管理系统

    这是一个🔥🔥基于SpringBoot框架的智能物流管理系统设计与实现🔥🔥的项目源码,开发语言Java,框架使用的SpringBoot+vue技术,开发环境Idea/Eclipse
    2024年05月23日
    4 1 1
  • 基于Python的局域网五子棋

    基于Python的局域网五子棋 一, 概述 目的:本次课程设计是计算机网络原理课程之后的实践加强环节,通过本设计的训练使学生加深对网络协议的理解
    2024年05月14日
    3 1 2
  • 基于Java的交易订单管理系统

    基于Java的交易订单管理系统 摘 要 Java语言自1995年诞生至今,一直以简明严谨的结构,简洁的语法编写,对网络应用的支持和强大的稳健性及安全性而雄踞世界流行编程语言排行榜首
    2024年05月14日
    1 1 1
  • 基于java的人机五子棋

    基于java的人机五子棋 1 任务设计书 本项目要实现的是五子棋人机版,通过制定棋型的评分表使机器能够对棋盘局势评估,五子棋玩家双方分别称为“人”,“机器”
    2024年05月14日
    1 1 1
  • 厨艺交流平台

    这是一个🔥🔥基于SpringBoot框架的厨艺交流平台设计与实现🔥🔥的项目源码,开发语言Java,框架使用的SpringBoot+vue技术,开发环境Idea/Eclipse
    2024年05月23日
    1 1 1

发表回复

登录后才能评论