基于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实现的某东手机评论数据采集与分析爬虫 一,系统概述 对评论所含内容进行简单的分析,初步确定所需要抓取的内容,首先,在京东商城手机信息界面的用户评价中含有昵称
    2024年05月14日
    1 1 1
  • 使用演化算法玩pacman吃豆人之Python

    使用演化算法玩pacman吃豆人 一,实现演化算法的关键步骤 1,1 演化算法玩 Pacman 的整体流程 首先由 registerInitialState 函数进行第一次 getActions
    2024年05月14日
    1 1 1
  • 基于JavaWeb的师资管理系统源码SSM框架实现

    这是一个🔥🔥基于JavaWeb的师资管理系统源码SSM框架实现🔥🔥的项目源码,开发语言Java,开发环境Idea/Eclipse,这个 师资管理系统源码SSM框架实现开发技术栈为SSM项目
    2024年05月23日
    4 1 1
  • 学生评奖评优管理系统

    这是一个🔥🔥基于SpringBoot框架的学生评奖评优管理系统设计与实现🔥🔥的项目源码,开发语言Java,框架使用的SpringBoot+vue技术,开发环境Idea/Eclipse
    2024年05月23日
    1 1 1
  • 基于SpringBoot+MyBatis+阿里云OSS实现素材分享网

    素材分享网 这是一个多用户的资源共享平台,是一个专为文件共享而设计的新概念网盘系统,这是一个综合性非常强,灵活度非常高的素材网站,注册成为用户之后可以上传自己所喜欢的素材供他人浏览和高速下载
    2024年05月14日
    4 1 1
  • 基于SpringBoot框架的图书进销存管理系统

    这是一套采用🔥🔥SpringBoot为核心的图书库存管理系统的源代码,主要编程语言为Java,并结合了Vue技术进行开发,开发工具可以选择Idea或Eclipse,此系统适用于图书管理的需求
    2024年05月23日
    3 1 1
  • 基于web的校园bbs论坛

    校园社团论坛 1,1 编写目的 本文档是校园论坛需求调研报告,供需求分析人员进行项目需求分析时使用; 本文档可以作为项目验收标准之一; 本文档可以作为软件维护的参考资料; 1
    2024年05月14日
    2 1 1
  • jsp日记本系统、javaweb+mysql

    这是一个🔥🔥jsp日记本系统,javaweb+mysql🔥🔥的项目源码,开发语言Java,开发环境Idea/Eclipse,这个 日记本系统开发技术栈为JSP项目,可以作为毕业设计课程设计作业基于jsp+servlet技术实现一个javaweb日记本系统
    2024年05月23日
    2 1 2
  • 基于JSP/Servlet的购物车系统实现源码

    这是一个🔥🔥基于JSP的购物车系统实现源码🔥🔥的项目源码,开发语言Java,开发环境Idea/Eclipse,这个 购物车系统实现开发技术栈为JSP项目,可以作为毕业设计课程设计作业基于JSP/Servlet技术实现一个购物车系统
    2024年05月23日
    17 1 2
  • 基于Python手写数字的识别

    基于Python手写数字的识别 一,总体方案 1,1 题目分析 使用 Python 实现对手写数字的识别工作,通过使用 windows 上的画图软件绘制一个大小是 28x28 像素的数字图像
    2024年05月14日
    4 1 1

发表回复

登录后才能评论