传统电梯调度算法

传统电梯调度算法
传统电梯调度算法

传统电梯调度算法

1.先来先服务算法(FCFS)

先来先服务(FCFS-First Come First Serve)算法,是一种随即服务算法,它不仅仅没有对寻找楼层进行优化,也没有实时性的特征,它是一种最简单的电梯调度算法。它根据乘客请求乘坐电梯的先后次序进行调度。此算法的优点是公平、简单,且每个乘客的请求都能依次地得到处理,不会出现某一乘客的请求长期得不到满足的情况。这种方法在载荷较轻松的环境下,性能尚可接受,但是在载荷较大的情况下,这种算法的性能就会严重下降,甚至恶化。

人们之所以研究这种在载荷较大的情况下几乎不可用的算法,有两个原因:(1)任何调度算法在请求队列长度为1时,请求速率极低或相邻请求的间隔为无穷大时使用先来先服务算法既对调度效率不会产生影响,而且实现这种算法极其简单。

(2)先来先服务算法可以作为衡量其他算法的标准。

1.2最短寻找楼层时间优先算法(SSTF)

最短寻找楼层时间优先(SSTF-Shortest Seek Time First)算法,它注重电梯寻找楼层的优化。最短寻找楼层时间优先算法选择下一个服务对象的原则是最短寻找楼层的时间。这样请求队列中距当前能够最先到达的楼层的请求信号就是下一个服务对象。在重载荷的情况下,最短寻找楼层时间优先算法的平均响应时间较短,但响应时间的方差较大,原因是队列中的某些请求可能长时间得不到响应,出现所谓的“饿死”现象。

1.3扫描算法(SCAN)

扫描算法(SCAN)是一种按照楼层顺序依次服务请求,它让电梯在最底层和最顶层之间连续往返运行,在运行过程中响应处在于电梯运行方向相同的各楼层上的请求。它进行寻找楼层的优化,效率比较高,但它是一个非实时算法。扫描算法较好地解决了电梯移动的问题,在这个算法中,每个电梯响应乘客请求使乘客获得服务的次序是由其发出请求的乘客的位置与当前电梯位置之间的距离来决定的,所有的与电梯运行方向相同的乘客的请求在一次电向上运行或向下运行的过程中完成,免去了电梯频繁的来回移动。

扫描算法的平均响应时间比最短寻找楼层时间优先算法长,但是响应时间方差比最短寻找楼层时间优先算法小,从统计学角度来讲,扫描算法要比最短寻找楼层时间优先算法稳定。

1.4 LOOK算法

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

1.5 SATF算法

SATF(Shortest Access Time First)算法与SSTF算法的思想类似,唯一的

区别就是SATF算法将SSTF算法中的寻找楼层时间改成了访问时间。这是因为电梯技术发展到今天,寻找楼层的时间已经有了很大地改进,但是电梯的运行当中等待乘客上梯时间却不是人为可以控制。SATF算法考虑到了电梯运行过程中乘客上梯时间的影响。

2实时电梯调度算法

2.1最早截止期优先调度算法

最早截止期优先(EDF-Earliest Deadline First)调度算法是最简单的实时电梯调度算法,它的缺点就是造成电梯任意地寻找楼层,导致极低的电梯吞吐率。它与FCFS调度算法类似,EDF算法是电梯实时调度算法中最简单的调度算法。它响应请求队列中时限最早的请求,是其它实时电梯调度算法性能衡量的基准和特例。

2.2 SCAN-EDF算法

SCAN-EDF算法是SCAN算法和EDF算法相结合的产物。SCAN-EDF算法先按照EDF算法选择请求列队中哪一个是下一个服务对象,而对于具有相同时限的请求,则按照SCAN算法服务每一个请求。它的效率取决于有相同deadline的数目,因而效率是有限的。

2.3 PI算法

PI(Priority Inversion)算法将请求队列中的请求分成两个优先级,它首先保证高优先级队列中的请求得到及时响应,再搞优先级队列为空的情况下在相应地优先级队列中的请求。

2.4 FD-SCAN算法

FD-SCAN(Feasible Deadline SCAN)算法首先从请求队列中找出时限最早、从当前位置开始移动又可以买足其时限要求的请求,作为下一次SCAN的方向。并在电梯所在楼层向该请求信号运行的过程中响应处在与电梯运行方向相同且电梯可以经过的请求信号。这种算法忽略了用SCAN算法相应其它请求的开销,因此并不能确保服务对象时限最终得到满足。

群控电梯调度算法

一)、弄清群控电梯调度算法的评价指标 由于乘客心理等待时间的长短、电梯响应呼梯的快慢、召唤厅站客流量的大小、轿厢内乘客人数的多少等均是一些模糊的概念,很难用确切的数量关系定义,也难以用普通的逻辑规则综合描述。 近年来,人们借助于模糊数学中的隶属函数来表述,将复杂的模糊问题转化为简单清晰的形式进行求解和控制.模糊控制通过模糊逻辑进行推理,有效地对电梯运行状况作出判断,但对于非常复杂的多变量系统,要建立正确的模糊规则和隶属函数是非常困难的,而且通过大量实验建立的隶属函数和规则有时也很难保证十分精确与合理。此外,其隶属函数中的加权系数是确定的,不能根据客流改变而相应改变。 为了解决模糊控制中存在的某些问题,新发明将神经网络控制方法应用于电梯控制中,无需建立精确数学模型,可以提供准确的控制策略,以减少候梯时间,降低乘客的焦急等待心理,节约能源,合理有效地调度电梯最佳运行。 (二)、理解上行高峰模式、下行高峰模式、双路运行模式等概念,并找出根据一系列输入手段间接算出运行模式的算法: 上行高峰交通模式:当主要的客流是上行方向,即全部或者大多数乘客从建筑物的门厅进入电梯且上行,这种状况被定义为上行高峰交通状况。 下行高峰交通模式:当主要的客流是下行方向,即全部或者大多数乘客乘电梯下行到门厅离开电梯,这种状况被定义为下行高峰交通状况。 二路交通模式:当主要的客流是朝着某一层或从某一层而来,而该层不是门厅,这种状况被定义为二路交通状况。二路交通状况多是由于在大楼的某一层设有茶点部或会议室,在一天的某一时刻该层吸引了相当多的到达和离开呼梯信号。所以二路交通状况发生在上午和下午休息期间或会议期间。 四路交通模式:当主要的客流是朝着某两个特定的楼层而来,而其中的一个楼层可能是门厅,这种交通状况被定义为四路交通状况。当中午休息期间,会出现客流上行和下行两个方向的高峰状况。午饭时客流主要是下行,朝门厅和餐厅。午休快结束时,主要是从门厅和餐厅上行。所以四路交通多发生在午休期间。四路交通又可分为午饭前交通和午饭后交通模式。此两类交通模式和早晨与晚上发生的上行、下行高峰不同,虽然主要客流都为上行和下行模式,但此两类交通模式同时还有相当比例的层间交通和相反方向的交通。各交通量的比例还与午休时间的长短,餐厅的位置和大楼的使用情况有关。四路交通时不但要考虑主要交通客流,还要考虑其他客流,与单纯的上、下行高峰期不同。 平衡的层间交通模式:当上行和下行乘客数量大致相同,并且各层之间的交通需求基本平衡时,此时的交通模式是处于一种普通的双向层间交通状况,它存在于一天中的大部分时间,乘客通常要求最小的候梯时间和乘梯时间。 空闲交通模式:空闲交通模式通常发生在假日、深夜、黎明等情况下,此时大楼的客流稀少、乘客的到达间隔很长,在这种状况下群控系统中仅仅有部分电梯进行工作,而其余电梯轿厢则空闲等候。 基于神经网络的交通模式识别 基于统计规律的交通模式识别 (三)、不同的运行模式各自适用什么样的调度算法? 1、基于专家系统的电梯群控调度算法[8] 电梯群控系统是一个具有大量不确定和不完整信息的复杂的非线性系统。这样一个复杂的系

电梯调度算法

课程设计报告 电梯调度算法 学院医药信息工程学院 专业 年级 2008 学生姓名 学号 指导教师 2011-7-12 电梯调度算法设计报告

一.LOOK(查找)调度(电梯)电梯算法,操作系统学术名为SCAN算法。磁臂仅移动到请求的最外道就回转。反方向查找服务。 1.问题描述: 说明:电梯调度算法的基本原则就是如果在电梯运行方向上有人要使用电梯则继续往那个方向运动,如果电梯中的人还没有到达目的地则继续向原方向运动。具体而言,如果电梯现在朝上运动, *如果当前楼层的上方和下方都有请求,则先响应所有上方的请求,然后才向下响应下方的请求;如果电梯向下运动,则刚好相反。 *设计要求:模拟多人在不同楼层同时要求到各自目的地时电梯的响应顺序,要求使用C语言编程,定义合适的数据结构。最后,需要说明设计思想,同时给出能够运行的源程序,并给出对应的程序流程图。 * 设计提示:可以用一个结构体表示乘电梯的人,其中内容包括人的姓名、起始楼层、目的楼层;建立一个结构体的数组模拟当前所有需要乘电梯的人。把这个结构体数组作为程序的输入,*通过对数组中每个人的起始楼层和目的楼层进行分析,确定每个人进出电梯的顺序,并打印输出。 2.算法设计: 本程序用java语言、eclipse平台编写。 (1)算法思想:本算法只设计了一辆电梯,通过往返寻找方法,即先查询电梯运行方向的楼层是否存在有其他键被按下,有就继续往该方向运行,如果没有就查询电梯运行反方向的楼层是否有按键被按下,如果有电梯就改变方向,反方向运行。如果没有电梯就停止在该楼层,30秒后如果没有任何键被按下,电梯就自动返回1楼驻停。同时,电梯乘客所去的楼层方向与电梯当前方向一致的话,则电梯优先搭载该乘客。随后再搭载去反方向的乘客。实现电梯的升降操作。 二.1.总程序流程图如下

处理器调度习题

处理器调度 选择题 当CPU执行操作系统代码时,则处理机处于( )。 A.执行态 B.目态 C.管态 D.就绪态 ( )是机器指令的扩充,是硬件的首次延伸,是加在硬件上的第一层软件。 A.系统调用 B.操作系统 C.内核 D.特权指令 操作系统提供给程序员的接口是( )。 A.进程 B.系统调用 C.库函数 D.B和C 用户程序向系统提出使用外设的请求方式是( )。 A.作业申请 B.原语 C.系统调用 D.I/O指令 当作业正常完成进入完成状态时,操作系统( )。 A.将输出该作业的结果并删除内存中的作业 B.将收回该作业的所占资源并输出结果 C.将收回该作业的所占资源及输出结果,并删除该作业 D.将收回该作业的所占资源及输出结果,并将它的控制块从当前的队列中删除 下列选项是关于作业和进程关系的描述,其中哪一个是不正确的( )。 A.作业的概念主要用在批处理系统中,而进程的概念则用在几乎所有的OS中。 B.作业是比进程低一级的概念。 C.一个作业至少由一个进程组成。 D.作业是用户向计算机提交任务的实体,而进程是完成用户任务的执行实体以及向系统申请分配资源的基本单位。 作业从后备作业到被调度程序选中的时间称为( )。 周转时间B.响应时间C.等待调度时间D.运行时间 设有三个作业J1,J2,J3,它们同时到达,运行时间分别为T1,T2,T3,且T1≤T2≤T3,若它们在一台处理机上按单道运行,采用短作业优先算法,则平均周转时间为( )。 A.T1+T2+T3 B.1/3(T1+T2+T3) C.T1+2/3T2+1/3T3 D.T1+1/3T2+2/3T3 从作业提交给系统到作业完成的时间间隔称为作业的( )。 A.中断时间 B.等待时间 C.周转时间 D.响应时间 设有四个作业同时到达,每个作业执行时间均为2 h,它们在一台处理机上按单道方式运行,则平均周转时间为( )。 A.1 h B.5 h C.2.5 h D.8 h FCFS调度算法有利于( )。 A.长作业和CPU繁忙型作业 B.长作业和I/O繁忙型作业 C.短作业和CPU繁忙型作业 D.短作业和I/O繁忙型作业 下列哪种说法不是SJ(P)F调度算法的缺点( )。 A.对于长作业(进程)不利 B.未考虑作业(进程)的紧迫程度 C.不能有效降低作业(进程)的平均等待时间 D.由于根据的是用户提供的估计执行时间,因此不一定真正做到短而优先。 选择排队进程中等待时间最长的进程被优先调度,该调度算法是( )。 A.先来先服务调度算法B.短进程优先调度算法 C.优先权调度算法D.高响应比优先调度算法 在采用动态优先权的优先权调度算法中,如果所有进程都具有相同优先权初值,则此时的优先权调度算法实际上和( )相同。

数学建模电梯调度问题

电梯调度问题

电梯调度问题 摘要: 本题为一个电梯调度的优化问题,在一栋特定的写字楼内,利用现有的电梯资源,如何使用电梯能提高它的最大运输量,在人流密度十分大的情况下,如何更快的疏通人流成为一个备受关注的问题。为了评价一个电梯群系统的运作效率,及运载能力,在第一问中,我们用层次分析发,从效益、成本两大方面给出了六个分立的小指标,一同构成电梯群运载效率的指标体系。对第二问,本文根据题目情况的特殊性,定义忙期作为目标函数,对该电梯调度问题建立非线性规划模型,最后用遗传算法对模型求解。第三问中,本文将模型回归实际,分析假设对模型结果的影响,给出改进方案。 对于问题一,本文用评价方法中的层次分析法对电梯群系统的运作效率及运载能力进行分析。经分析,本文最终确定平均候梯时间、最长候车时间、平均行程时间、平均运营人数(服务强度)、平均服务时间及停站次数这六个指标作为电梯调度的指标体系。在这些评价指标的基础上,本文细化评价过程,给出完整的评价方案:首先,采用极差变换法对评价指标做无量纲化处理。然后,采用综合评价法对模型进行评价。在这个过程中,本文采用受人主观影响较小的夹角余弦法来确定权重系数。 对于第二问,本文建立非线性优化模型。借鉴排队论的思想,本文定义忙期,构造了针对本题中特定情形的简单数学表达式,作为目标函数。利用matlab软件,采用遗传算法对模型求解。多次运行可得到多个结果,然后用第一问中的评价模型进行评价,最终选出较优方案。最得到如下方案: 第一个电梯可停层数为:1,2,3,4,5,6,7,10,14,15,16,19,20,22 第二个电梯可停层数:1,4,5,7,10,13,16,18,19,20,21 第三个电梯可停层数:1,2,3,4,6,8,10,11,12,15,16,20,22 第四个电梯可停层数:1,2,3,4,7,10,11,17,18,19,21,22 第五个电梯可停层数:1,2,4,7,8,9,17,18,19,20,21 第六个电梯可停层数:1,4,5,6,7,8,9,11,13,18,19,20 此方案平均忙期为:15.3分钟。 对于第三问,本文是从每分钟到达人群数的分布角度改进模型的。第二问中

磁盘移臂调度过程模拟设计-电梯算法最短寻道时间优先

学号: 课程设计 题目 磁盘移臂调度过程模拟设计 --电梯算法、最短寻道时间优先算法 学院计算机科学与技术学院专业 班级 姓名 指导教师吴利军

2013 年 1 月15 日 课程设计任务书 学生姓名: 指导教师:吴利军工作单位:计算机科学与技术学院 题目: 磁盘移臂调度过程模拟设计——电梯算法、最短寻道时间优先算法初始条件: 1.预备内容:阅读操作系统的文件管理章节内容,理解有关文件组织形式、存储设备的概念。 2.实践准备:掌握一种计算机高级语言的使用。 要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1.编程序模拟磁盘调度的过程,采用指定算法,模拟并输出存取臂的移动顺序,并计算存取臂移动的磁道总数。能够处理以下的情形: ⑴可根据需要输入当前磁头的位置,磁头移动方向; ⑵能够输入柱面数,磁道访问序列等参数,并能够显示调度结果(磁盘访问请求的磁道号 以及磁头移动的总磁道数)。 2.设计报告内容应说明: ⑴课程设计目的与功能; ⑵需求分析,数据结构或模块说明(功能与框图);

⑶源程序的主要部分; ⑷测试用例,运行结果与运行情况分析; ⑸自我评价与总结: i)你认为你完成的设计哪些地方做得比较好或比较出色; ii)什么地方做得不太好,以后如何改正; iii)从本设计得到的收获(在编写,调试,执行过程中的经验和教训); iv)完成本题是否有其他的其他方法(如果有,简要说明该方法); v)对实验题的评价和改进意见,请你推荐设计题目。 时间安排: 设计安排一周:周1、周2:完成程序分析及设计。 周2、周3:完成程序调试及测试。 周4、周5:验收,撰写课程设计报告。 (注意事项:严禁抄袭,一旦发现,抄与被抄的一律按0分记) 指导教师签名:年月日 系主任(或责任教师)签名:年月日 磁盘移臂调度过程模拟设计 ——电梯算法、最短寻道时间优先算法1 课程设计目的与功能

模拟电梯调度算法,实现对磁盘的驱动调度。

操作系统实验 (第三次) 一、实验内容 模拟电梯调度算法,实现对磁盘的驱动调度。 二、实验目的

磁盘是一种高速、大容量、旋转型、可直接存取的存储设备。它作为计算机系统的辅 助存储器,担负着繁重的输入输出任务、在多道程序设计系统中,往往同时会有若干个要求访问磁盘的输入输出请求等待处理。系统可采用一种策略,尽可能按最佳次序执行要求访问磁盘的诸输入输出请求。这就叫驱动调度,使用的算法称为驱动调度算法。驱动调度能降低为若干个输入输出请求服务所需的总时间,从而提高系统效率。本实验要求学生模拟设计一个驱动调度程序,观察驱动调度程序的动态运行过程。通过实验使学生理解和掌握驱动调度的职能。 三、实验题目 模拟电梯调度算法,对磁盘进行移臂和旋转调度。 [提示]: (1)磁盘是可供多个进程共享的存储设备,但一个磁盘每时刻只能为一个进程服务。 当有进程在访问某个磁盘时,其他想访问该磁盘的进程必须等待,直到磁盘一次工作结束。当有多个进程提出输入输出要求而处于等待状态时,可用电梯调度算法从若干个等待访问者中选择一个进程,让它访问磁盘。选择访问者的工作由“驱动调度”进程来完成。 由于磁盘与处理器是可以并行工作的、所以当磁盘在作为一个进程服务时,占有处理 器的另一进程可以提出使用磁盘的要求,也就是说,系统能动态地接收新的输入输出请求。为了模拟这种情况,在本实验中设置了一个“接收请求”进程。 “驱动调度”进程和“接收请求”进程能否占有处理器运行,取决于磁盘的结束中断信 号和处理器调度策略。在实验中可用随机数来模拟确定这两个进程的运行顺序,以代替中断四、处理和处理器调度选择的过程。因而,程序的结构可参考图3—1

操作系统课程设计--模拟实现磁盘的调度

课 程 设 计设计题目:模拟实现磁盘的调度

一、课题设计目的 a、观察、体会操作系统的磁盘调度方法,并通过一个简单的磁盘调度模拟程序的实现,加深对磁盘调度的理解。 b、提高实际动手编程能力,为日后从事软件开发工作打下坚实基础。 c、通过对磁盘调度算法的设计,深入理解提高磁盘访问速度的原理。 二、课题实现环境 VC++6.0 MFC 三、课题设计思路 算法描述: 1.服务算法(FCFS) 先来先服务(FCFS)调度:按先来后到次序服务,未作优化。 最简单的移臂调度算法是“先来先服务”调度算法,这个算法实际上不考虑访问者要求访问的物理位置,而只是考虑访问者提出访问请求的先后次序。例如,如果现在读写磁头正在50号柱面上执行输出操作,而等待访问者依次要访问的柱面为130、199、32、159、15、148、61、99,那么,当50号柱面上的操作结束后,移动臂将按请求的先后次序先移到130号柱面,最后到达99号柱面。 采用先来先服务算法决定等待访问者执行输入输出操作的次序时,移动臂来回地移动。先来先服务算法花费的寻找时间较长,所以执行输入输出操作的总时间也很长。 2.算法(SCAN) SCAN 算法又称电梯调度算法。SCAN算法是磁头前进方向上的最短查找时间优先算法,它排除了磁头在盘面局部位置上的往复移动,SCAN算法在很大程度上消除了SSTF算法的不公平性,但仍有利于对中间磁道的请求。 “电梯调度”算法是从移动臂当前位置开始沿着臂的移动方向去选择离当前移动臂最近的那个柱访问者,如果沿臂的移动方向无请求访问时,就改变臂的移动方向再选择。这好比乘电梯,如果电梯已向上运动到4层时,依次有3位乘客陈生、伍生、张生在等候乘电梯。他们的要求是:陈生在2层等待去10层;伍生在5层等待去底层;张生在8层等待15层。由于电梯目前运动方向是向上,所以电梯的形成是先把乘客张生从8层带到15层,然后电梯换成下行方向,把乘客伍生从5层带到底层,电梯最后再调换方向,把乘客陈生从2层送到10层。 我们仍用前述的同一例子来讨论采用“电梯调度”算法的情况。由于磁盘移动臂的初始方向有两个,而该算法是与移动臂方向有关,所以分成两种情况来讨论。 〈1〉.移动臂由里向外移动 开始时,,在50号柱面执行操作的读写磁头的移动臂方向是由里向外,趋向32号柱面的位置,因此,当访问50号柱面的操作结束后,沿臂移动方向最近的柱面是32号柱面。所以应先为32号柱面的访问者服务,然后是为15号柱面的访问者服务。之后,由于在向外移方向已无访问等待者,故改变移动臂的方向,由外向里依次为各访问者服务。在这种情况下为等待访问者服务的次序是61、99、130、148、159、199。

电梯调度算法

江西师范大学计算机信息工程学院学生实验报告 专业_ 计算机科学与技术姓名___马化梁学号____1308092042 日期__2015.6.5_ 课程名称操作系统实验室名称X4313 实验名称设备管理-电梯调度算法 指导教师朱明华成绩 1、实验目的 本实验要求学生设计一个电梯调度算法来模拟实现磁盘移臂调度过程。 2、实验原理和内容 任何一个对磁盘的访问请求,应给出访问磁盘的存储空间地址:柱面号、磁头号和扇区号。在启动磁盘执行I/O操作时,应先把移动臂移动到指定的柱面,再等待指定的扇区旋转到磁头位置下,最后让指定的磁头进行读/写,完成信息传送。移臂调度是根据访问者指定的柱面位置来决定执行次序的调度。 3、实验步骤 (1)弄清实验要求及目的; (2)想清思路; (3)设计代码; (4)实现代码。

4、程序及运行结果(或实验数据记录及分析) #include #include #include #include #include using namespace std; const int maxn=1024; int N,a[maxn]; int main() { int flag=1,m; while(flag) { cout<<"电梯调度算法"<>N; cout<<"请输入相应的柱面号"<>a[i]; sort(a,a+N); cout<<"请输入执行I/O操作的起始位置(柱面号)"<>x; for(int i=0;i>y; if(y==1) { for(int i=m+1;i

应用实例电梯调度模拟器

UML程序设计实例 —电梯调度模拟器— 本章通过电梯调度模拟器的例子详细介绍了如何利用UML进行一个实际系统的开发。这个系统的实现过程,遵循Rational统一软件开发过程,最后用Vc++编码实现。 问题描述 在开发任何一个系统之前,开发人员对所要开发的系统的初步理解首先是从用户的问题描述开始的。问题描述的内容包括系统的基本功能需求,用户对系统的性能,外观等特性的要求。这种描述根据开发项目的规模不同,呈现不同的形式。对于大的项目,问题描述可能是长达几页(几十页)的需求规格说明;对于小的项目,可能只是口头上的几句陈述。通过问题描述,开发人员对要开发的系统产生一个大概的印象。 此实例的问题描述如下: 有一座8层楼房,每层提供一组按钮(“上”或“下”),用于请求电梯的到达;每部电梯内部提供一个控制面板,提供用户对目标楼层的选择,并显示电梯当前所处楼层、运行方向。两部电梯由一个调度器统一调度。如果没有请求,并超过一定时限,电梯回到一楼。希望开发人员能实现一个电梯调度模拟器来模拟如上所述的一切,对电梯的调度准则没有做特别要求。 此外,用户还可能会对系统的性能,外观等特性提出要求,这些都需要在开发过程中加以考虑。 需求分析 拟订侯选需求 在系统开发启动之前,首先要对项目做一些可行性分析。在Rational统一软件开发过程中,称这个阶段为初始阶段。 在初始阶段主要是跟各方进行交流,广泛收集信息,听取客户和专家的建议。并对这些信息和建议进行记录,整理得到一个后选需求列表。 后选需求列表中应包括如下各项 1.名称 2.简要说明 3.状态(建议的、批准的、并入的或证实的) 4.实现成本估算(人小时,人月) 5.优先级(关键的、重要的或辅助的) 6.实现风险的级别(关键的、重要的或一般的) 表1 后选需求列表

数学建模 电梯调度问题16

电梯调度问题 商业中心某写字楼有二十二层地上建筑楼层和两层地下停车场,6部电梯,每部电梯最大载重是20个正常成人的体重总和。工作日里每天早晚高峰时期均是非常拥挤,而且等待电梯的时间明显增加。请你针对早晚高峰期的电梯调度问题建立数学模型,以期获得合理的优化方案。 1)请给出若干合理的模型评价指标。 2)暂不考虑该写字楼的地下部分,每层楼层的平均办公人数经过调查已知(见表1)。假设每层楼之间电梯的平均运行时间是3秒,最底层(地上一层)平均停留时间是20秒,其他各层若停留,则平均停留时间为10秒,电梯在各层的相应的停留时间内乘梯人员能够完成出入电梯。 表1:该写字楼各层办公人数 楼层人数楼层人数楼层人数 1无9236 617200

2 3 4 5 6 7 8208 52 177 222 5 130 181 191 236 7 10 11 12 13 14 15 16 139 272 272 272 270 300 264 18 19 20 2l 22 200 200 200 207 207 请你针对这样的简化情况,建立你的数学模型(列明你的假设),给出一个尽量最优的电梯调度方案,并利用所提评价指标进行比较。 3)将你在第2问中所建立的数学模型进一步实际化,以期能够尽量适用于实际情况,用于解决现实的电梯调度问题。 问题备注:

本题的评分标准按照以下先后顺序:逻辑的严谨程度-行文与模型描述的条理程度-模型和现实问题的接近程度-以及所用数学工具的理论程度。 摘要 随着科技的发展,人们逐步加快了自己的步伐,高节奏的生活,对于时间的要求,越来越高,写字楼里的人来也匆匆去也匆匆,在高峰期时段对电梯的使用最多,电梯的合理化应用在此显得尤为重要,没有合理的优化方案,不仅影响了乘客的上班时间,同时,电梯的多次停顿也造成了一定程度的能源浪费,所以在此提出得到优化方案,并作出计算分析其优化程度。 本文首先根据电梯群控模型评价指标体系,从乘客者的候梯时间和乘梯时间和能耗三个角度考虑。最初选定方案一 电梯编号负责楼层 1—2 2-10 3—4 11-17 5—6 18-22 方案二 电梯编号负责楼层 1 2 3 4 5 6 2 7 8 9 10 3 11 12 13 4 14 1 5 16 5 17 18 19 6 20 21 22 我们将建立一个多目标规划模型,对该模型的建立,分三个目标:乘客的平均候梯时间要短,乘客的平均乘梯时间要短,能源耗损要少。利用这三个指标来综合评价电梯群控方案的优劣。并采用模糊评价和多目标优化群控和借助实现蒙特卡罗模拟的思想,建立了全面合理的电梯调度方案的评价体系。并将模拟出的数据代入评价函数,从而帮助确定电梯调度的最佳策略。 根据建模得到的结果,最终得到的最佳方案为方案二。最后本文还根据使用的算法,结合实际情况,对模型的优缺点进行了详细的分析与评价,并提出了改进和模型推广方向。最后本文就所建立的模型在实际运用中的作用进行了分析,并提出了改进方向。结合实际,加入重要因素的考虑,比如考虑其他交通流,考虑个别人群满意度。

电梯算法

电梯算法 学院:软件学院 班级:1402 组号:第8小组 姓名:冯信瑜 刘杨 马尚玮

源程序并附上注释: public class DiskDispatchArithmetic { public static ArrayList list = new ArrayList();//io表 public static ArrayList waitlist = new ArrayList();//输入的值不符合时,临时存入此表 static String course = "Null";//定义静态值存放进程名 static int cylinder = 0;//定义静态值存放柱面位置 static int track = 0;//定义静态值存放磁道位置 static int record = 0;//定义静态值存放物理记录位置 static String side = "up";//定义静态值存放当前摆臂方向,初始为up BufferedReader streamin = new BufferedReader( new InputStreamReader(System.in)); public void isBigger() {//通过随机数比较,确定下一步执行何种操作 DiskDispatchArithmetic ds = new DiskDispatchArithmetic(); Scanner sc = new Scanner(System.in); System.out.println("输入随机数:"); //double i = Math.random(); //int i = 1; //int i=0; int i = sc.nextInt(); if (list.isEmpty() && waitlist.isEmpty()) { System.out.println("当前io表为空,等待输入"); ds.toContinue(); }else{ if (i >= 0.5) { System.out.println("随机数为" + i + "大于0.5,执行驱动调度"); ds.Scheduling(); } else { System.out.println("随机数为" + i + "小于0.5,执行接受请求"); ds.Request(); } } } public boolean isHave(int a, int b, int c) { ArrayList list1 = (ArrayList) list.clone(); int flag = 0; for (int i = 0; i < list.size(); i++) { io io = (io) list.get(i);

电梯调度算法

湖北师范学院 《操作系统》实验报告 学生学号: 2011115010820 学生班级: 1108 学生姓名:汤凯 指导老师:李晓瑾 完成时间: 2013年12月28号

实验三驱动调度 实验内容 模拟电梯调度算法,实现对磁盘的驱动调度。 实验目的 磁盘是一种高速、大容量、旋转型、可直接存取的存储设备。它作为计算机系统的辅助存储器,担负着繁重的输入输出任务,在多道程序设计系统中,往往同时会有若干个要求访问磁盘的输入输出请求等待处理。系统可采用一种策略,尽可能按最佳次序执行要求访问磁盘的诸输入输出请求,这就叫驱动调度,使用的算法称驱动调度算法。驱动调度能降低为若干个输入输出请求服务所需的总时间,从而提高系统效率。本实验模拟设计一个驱动调度程序,观察驱动调度程序的动态运行过程。 实验题目 模拟电梯调度算法,对磁盘进行移臂调度和旋转调度。 数据结构及其说明: const int PCB=100; //定义100个进程 int pcbs_num=0; //记录当前io表的进程个数 typedef struct process //请求io表 { char pname[10]; //进程名 int Cylinder; //柱面号 int Track; //磁道号 int Record; //物理记录号 int Way; }PROCESS; PROCESS pcbs[PCB]; PROCESS a; //记录当前位置(柱面号、物理记录号)采用带头节点的循环链表存

源程序并附上注释: public class DiskDispatchArithmetic { public static ArrayList list = new ArrayList();//io表 public static ArrayList waitlist = new ArrayList();//输入的值不符合时,临时存入此表 static String course = "Null";//定义静态值存放进程名 static int cylinder = 0;//定义静态值存放柱面位置 static int track = 0;//定义静态值存放磁道位置 static int record = 0;//定义静态值存放物理记录位置 static String side = "up";//定义静态值存放当前摆臂方向,初始为up BufferedReader streamin = new BufferedReader( new InputStreamReader(System.in)); public void isBigger() {//通过随机数比较,确定下一步执行何种操作 DiskDispatchArithmetic ds = new DiskDispatchArithmetic(); Scanner sc = new Scanner(System.in); System.out.println("输入随机数:"); //double i = Math.random(); //int i = 1; //int i=0; int i = sc.nextInt(); if (list.isEmpty() && waitlist.isEmpty()) { System.out.println("当前io表为空,等待输入"); ds.toContinue(); }else{ if (i >= 0.5) { System.out.println("随机数为" + i + "大于0.5,执行驱动调度"); ds.Scheduling(); } else { System.out.println("随机数为" + i + "小于0.5,执行接受请求"); ds.Request(); } } } public boolean isHave(int a, int b, int c) { ArrayList list1 = (ArrayList) list.clone(); int flag = 0; for (int i = 0; i < list.size(); i++) { io io = (io) list.get(i);

电梯调度算法总结

1.1先来先服务算法(FCFS) 先来先服务(FCFS-First Com e First Serve)算法,是一种随即服务算法,它不仅仅没有对寻找楼层进行优化,也没有实时性的特征,它是一种最简单的电梯调度算法。它根据乘客请求乘坐电梯的先后次序进行调度。此算法的优点是公平、简单,且每个乘客的请求都能依次地得到处理,不会出现某一乘客的请求长期得不到满足的情况[12]。这种方法在载荷较轻松的环境下,性能尚可接受,但是在载荷较大的情况下,这种算法的性能就会严重下降,甚至恶化。人们之所以研究这种在载荷较大的情况下几乎不可用的算法,有两个原因: (1)任何调度算法在请求队列长度为1时,请求速率极低或相邻请求的间隔为无穷大时使用先来先服务算法既对调度效率不会产生影响,而且实现这种算法极其简单。 (2)先来先服务算法可以作为衡量其他算法的标准。 1.2最短寻找楼层时间优先算法(SSTF) 最短寻找楼层时间优先(SSTF-Shortest Seek Time First) [14]算法,它注重电梯寻找楼层的优化。最短寻找楼层时间优先算法选择下一个服务对象的原则是最短寻找楼层的时间。这样请求队列中距当前能够最先到达的楼层的请求信号就是下一个服务对象。在重载荷的情况下,最短寻找楼层时间优先算法的平均响应时间较短,但响应时间的方差较大,原因是队列中的某些请求可能长时间得不到响应,出现所谓的“饿死”现象。 1.3扫描算法(SCAN) 扫描算法(SCAN)是一种按照楼层顺序依次服务请求,它让电梯在最底层和最顶层之间连续往返运行,在运行过程中响应处在于电梯运行方向相同的各楼层上的请求。它进行寻找楼层的优化,效率比较高,但它是一个非实时算法。扫描算法较好地解决了电梯移动的问题,在这个算法中,每个电梯响应乘客请求使乘客获得服务的次序是由其发出请求的乘客的位置与当前电梯位置之间的距离来决定的,所有的与电梯运行方向相同的乘客的请求在一次电向上运行或向下运行的过程中完成,免去了电梯频繁的来回移动[2]。 扫描算法的平均响应时间比最短寻找楼层时间优先算法长,但是响应时间方差比最短寻找楼层时间优先算法小,从统计学角度来讲,扫描算法要比最短寻找楼层时间优先算法稳定。 1.4 LOOK 算法 LOOK算法[18]是扫描算法的一种改进。对LOOK算法而言,电梯同样在最底层和最顶层之间运行。但当LOOK算法发现电梯所移动的方向上不再有请求时立即改变运行方向,而扫描算法则需要移动到最底层或者最顶层时才改变运行方向。 1.5 SAFT 算法 SATF(Shortest Access Time First)[15,19]算法与SSTF算法的思想类似,唯一的区别就是SATF算法将SSTF算法中的寻找楼层时间改成了访问时间。这是因为电梯技术发展到今天,寻找楼层的时间已经有了很大地改进,但是电梯的运行当中等待乘客上梯时间却不是人为可以控制。SATF算法考虑到了电梯运行过程中乘客上梯时间的影响。

多台电梯调度算法设计及仿真

多台电梯调度算法设计及仿真 (安庆师范学院物理与电气工程学院安徽安庆 246011) 摘要:根据电梯群控系统的非线性,随机性,不确定性和离散动态性特点,采用面向对象的分析与设计方法和基于事件扫描的数字仿真方法,设计一个多台电梯调度算法,采用 Visual C++技术编程和OpenGL 可视化技术,并通过对电梯群的运行状态进行实时监测与分析,实现高层建筑电梯群调度和载客的活动仿真情况,评价电梯群的服务质量和运行效能。 关键词:电梯群控制系统,多台电梯调度算法,面向对象,数字仿真 1. 引言 电梯是现代立体交通的重要组成部分,随着高层建筑在世界范围内得以迅猛发展,极大地促使了电梯技术的改良和革新。近半个世纪以来,电梯技术已经从原始模型升降机发展到高级智能化电梯。而智能化要求电梯系统服务质量和服务效率能尽量提高建筑的有效利用率和性能。在建筑设计中,同常将多台电梯配置在一起,构成电梯群,集中为大楼提供服务,这就是电梯群控系统(EGCS, Elevator Group Controlystem)【1】。电梯群控系统是一个实时性非常强的系统,需要不断收集梯群的状态信息和厅外的召唤信号,采取一定的派梯策略,选择最合适的电梯去应答厅外召唤。为了节约开发成本,一个成功的电梯群控系统在应用到实际控制系统之前,往往都在计算机系统上进行仿真研究,调试参数,在仿真研究完成以后,在应用到电梯试验塔做实验,检验控制策略的有效性和有关的性能指标。电梯群控系统是通过对电梯群运行状态进行实时监测与分析,再根据不同的实际情况对电梯进行优化调度和合理分配,进而改善和提高电梯系统服务质量和服务效率【2】。 随着智能控制技术在电梯群控系统(EGCS)中的广泛应用,电梯交通系统设计的关键是满足乘客生理上和心理上的承受力,有效地解决高层建筑复杂的楼内垂直交通。一个设计良好的电梯群控系统必须具备在客流高峰时确保乘客在较短的侯梯时间和乘梯时间内到达目的地,在空闲时使电梯群运行消耗能量最低。我国电梯配置和电梯系统特征的研究与国外相比还处于落后的状态,虽然国内与1990年对电梯系统的动态特性进行了研究,但在电梯群控方面,仍有许多理论及技术问题亟待解决,因此开展电梯群控算法研究具有重要的理论和实际意义,这对电梯群控系统性能(安全性,舒适性等)是十分必要的,同时也可以改变我国目前电梯技术主要依赖于进口的不利局面【3】。 用计算机仿真研究电梯群的服务质量和运行效能,大楼的层高不要超过25层,电梯的总台数不要超过八台。设某办公大楼楼层为20层,有载客电梯5部(用电梯1—电梯5标识)。利用Visual C++技术编程和OpenGL可视化技术实现高层建筑电梯群调度和载客的活动仿真情况。 2.设计方案 2.1 设计规则: 为了实现电梯群调度和载客的活动仿真情况,采用两种方式对其仿真:(1)人工控制方式;(2)自动控制方式。 2.1.1人工控制方式: 这种方式是完全仿真真实电梯群情况,乘客自己决定到达电梯时候和选择需要到达的楼层以及电梯的开关门。这种方式通过可视化技术可以直观的观察乘客发送电梯请求后,电梯群的调度情况和各电梯的当前状态,包括电梯内人数,电梯运行趋势,电梯开关门状态和电梯所在楼层。这种方式下电梯群调度遵循的规则为:

电梯调度算法(源代码)

#include #include #include #include typedef struct _proc { char name[32]; /*定义进程名称*/ int team; /*定义柱面号*/ int ci; /*定义磁道面号*/ int rec; /*定义记录号*/ struct _proc *prior; struct _proc *next; }PROC; PROC *g_head=NULL,*g_curr=NULL,*local; int record=0; int yi=1; void init() { PROC *p; /*初始化链表(初始I/O表)*/ g_head = (PROC*)malloc(sizeof(PROC)); g_head->next = NULL; g_head->prior = NULL; p = (PROC*)malloc(sizeof(PROC)); strcpy(p->name, "P1"); p->team=100; p->ci=10; p->rec=1; p->next = NULL; p->prior = g_head; g_head->next = p; g_curr=g_head->next; p = (PROC*)malloc(sizeof(PROC)); strcpy(p->name, "P2"); p->team=30; p->ci=5;

p->next = NULL; p->prior = g_curr; g_curr->next = p; g_curr=p; p = (PROC*)malloc(sizeof(PROC)); strcpy(p->name, "P3"); p->team=40; p->ci=2; p->rec=4; p->next = NULL; p->prior = g_curr; g_curr->next = p; g_curr=p; p = (PROC*)malloc(sizeof(PROC)); strcpy(p->name, "P4"); p->team=85; p->ci=7; p->rec=3; p->next = NULL; p->prior = g_curr; g_curr->next = p; g_curr=p; p = (PROC*)malloc(sizeof(PROC)); strcpy(p->name, "P5"); p->team=60; p->ci=8; p->rec=4; p->next = NULL; p->prior = g_curr; g_curr->next = p; g_curr=g_head->next; local = (PROC*)malloc(sizeof(PROC)); /*选中进程*/ strcpy(local->name, "P0"); local->team=0;

磁盘移臂调度过程模拟设计-电梯算法_最短寻道时间优先

课程设计 题目磁盘移臂调度过程模拟设计 --电梯算法、最短寻道时间优先算法学院计算机科学与技术学院 专业 班级 姓名 指导教师吴利军 2013 年 1 月15 日

课程设计任务书 学生姓名: 指导教师:吴利军工作单位:计算机科学与技术学院 题目: 磁盘移臂调度过程模拟设计——电梯算法、最短寻道时间优先算法初始条件: 1.预备内容:阅读操作系统的文件管理章节内容,理解有关文件组织形式、存储设备的概念。 2.实践准备:掌握一种计算机高级语言的使用。 要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求) 1.编程序模拟磁盘调度的过程,采用指定算法,模拟并输出存取臂的移动顺序,并计算存取臂移动的磁道总数。能够处理以下的情形: ⑴可根据需要输入当前磁头的位置,磁头移动方向; ⑵能够输入柱面数,磁道访问序列等参数,并能够显示调度结果(磁盘访问请求的磁道号 以及磁头移动的总磁道数)。 2.设计报告内容应说明: ⑴课程设计目的与功能; ⑵需求分析,数据结构或模块说明(功能与框图); ⑶源程序的主要部分; ⑷测试用例,运行结果与运行情况分析; ⑸自我评价与总结: i)你认为你完成的设计哪些地方做得比较好或比较出色; ii)什么地方做得不太好,以后如何改正; iii)从本设计得到的收获(在编写,调试,执行过程中的经验和教训); iv)完成本题是否有其他的其他方法(如果有,简要说明该方法); v)对实验题的评价和改进意见,请你推荐设计题目。 时间安排: 设计安排一周:周1、周2:完成程序分析及设计。 周2、周3:完成程序调试及测试。 周4、周5:验收,撰写课程设计报告。 (注意事项:严禁抄袭,一旦发现,抄与被抄的一律按0分记) 指导教师签名:年月日 系主任(或责任教师)签名:年月日

电梯优先调度算法

电梯优先调度算法 电梯调度算法(ms InterView) 移臂调度算法包括以下四种: 1)先来先服务算法:根据访问者提出访问请求的先后次序来决定执行次序。 2)最短寻找时间优先调度算法:从等待的访问者中挑选寻找时间最短的那个请求执行,而不管访问者的先后次序。 3)电梯调度扫描算法:从移动臂当前位置沿移动方向选择最近的那个柱面的访问者来执行,若该方向上无请求访问时,就改变移动方向再选择。 4)单向扫描调度算法:从0柱面开始往里单向扫描,扫到哪个执行哪个。

*/ // t1.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include"math.h" #include"stdlib.h" #include"string.h" struct Head { int nPosition; bool bVisited; }; void Visit(struct Head *pHead) { printf("visite cy:%d\n",pHead->nPosition); pHead->bVisited=true; }

int ReadInputKeyboard(struct Head *pHead,int *pCurrentPosition,int nMaxNumber) { int i; printf("please input Current position:"); scanf("%d",pCurrentPosition); printf("please input will visit position:"); for(i=0;i<nMaxNumber;i++) { scanf("%d",&pHead[i].nPosition); pHead[i].bVisited=false; if(pHead[i].nPosition<0) break; } return i; } int ReadInputFile(struct Head *pHead,int *pCurrentPosition,int nMaxNumber) { int i; char szFileName[256],*q,*p,szTemp[20]; printf("please input filename:");

相关文档
最新文档