火车调度问题PROJECT

合集下载

同轨多天车调度算法研究

同轨多天车调度算法研究

同轨多天车调度算法研究1.引言1.1 概述概述在铁路运输领域,同轨多天车调度算法是一个极具挑战性的问题。

此算法旨在有效地安排多辆列车在同一轨道上的运行,以确保其之间的运行安全和效率。

该问题的复杂性来自于多个因素:列车之间的相互冲突、车辆之间的运行速度差异、车辆的不同运行模式等。

为了解决这一问题,许多研究人员和学者针对同轨多天车调度算法进行了广泛的研究。

他们提出了各种各样的调度策略和优化方法,以寻求最佳的列车运行方案。

其中,一些算法基于图论和优化理论,利用数学模型来描述列车之间的关系,并通过建立目标函数和约束条件来求解最优解。

其他方法则采用启发式算法和元启发式算法,通过模拟运行过程或者遗传算法等方式来搜索最优解。

本文旨在对同轨多天车调度算法进行深入研究和分析。

首先,我们将介绍调度算法的基本原理和常用的调度策略。

然后,我们将详细分析同轨多天车调度问题的特点和挑战,包括列车冲突的处理、列车速度的优化、车辆运行模式的选择等。

接下来,我们将综述已有的调度算法,并分析它们的优缺点。

最后,我们将总结研究结果,并展望未来该领域的发展方向。

通过对同轨多天车调度算法的研究,我们可以为铁路运输系统提供更加安全高效的调度方案,降低运行成本和提升运输能力。

此外,该研究也可以对其他领域的调度问题提供参考和借鉴。

我们相信,通过不断的努力和创新,同轨多天车调度算法将在未来取得更加显著的进展。

1.2文章结构文章结构分为以下几个部分:1. 引言- 1.1 概述:对同轨多天车调度算法的背景和重要性进行简要介绍。

- 1.2 文章结构:概述文章的整体结构和各个部分的内容安排。

- 1.3 目的:明确研究同轨多天车调度算法的目标和意义。

2. 正文- 2.1 调度算法介绍:介绍常见的调度算法(如先来先服务、最短作业优先等),以及它们在同轨多天车调度中的应用情况。

- 2.2 同轨多天车调度问题分析:对同轨多天车调度问题进行详细分析,包括问题的定义、约束条件、目标函数等。

高铁列车多目标优化调度模型研究

高铁列车多目标优化调度模型研究

高铁列车多目标优化调度模型研究一、引言高铁列车作为当前交通领域的明星产品,以其高速、高效、舒适的特点成为出行的首选方式。

高铁列车的运行管理需要通过对列车的优化调度来实现高效率、低成本、安全可靠的运行。

高铁列车的多目标优化调度模型对高铁列车的运行管理具有重要意义。

本文将阐述高铁列车多目标优化调度模型的研究。

二、高铁列车多目标优化调度模型高铁列车多目标优化调度模型主要是以时间、车辆、人员等多个方面为关键指标建立的一种优化模型。

它可以帮助高铁列车运营方实现列车的高效运行和更好的运营管理。

1. 时间目标高铁列车多目标优化调度模型中的时间目标主要是针对列车在运行过程中的时间效率和到达时间等因素。

针对这些时间目标,调度管理人员需要对列车的运行情况、出发时间和到站时间等作合理规划和调度,从而使列车实现更好的时间效率和更好的到站时间。

2. 车辆目标对高铁列车车辆的调度和管理是现代化高铁运营体系的重要组成部分。

高铁列车多目标优化调度模型中的车辆目标主要是针对车辆的运行情况、载客量等因素。

在高铁列车的运营管理中,调度人员需要进行合理的车辆规划和调度,以满足车辆的运载要求和提高载客量,从而提高整个高铁运营系统的效率。

3. 人员目标高铁列车多目标优化调度模型中的人员目标主要是针对列车员工的工作效率和工作质量等因素。

这就要求调度人员在制定方案时,要考虑到员工工作的科学性、合理性和稳定性,并尽可能避免因员工因素造成的失误和事故。

对于员工的调度和管理对于高铁列车运营管理的决策和实施都有重要作用。

三、高铁列车多目标优化调度模型实践研究高铁列车多目标优化调度模型的研究实践在高铁列车运营管理中得到广泛应用。

对于高铁列车的实际运行,如果不对列车的运行情况、载客量、员工工作等方面进行合理规划和调度,则难以实现各种目标的平衡和兼顾。

在高铁列车的运营管理中,通过优化调度模型来实现列车的高效率、低成本、安全可靠的运行是迫在眉睫的需求。

实践研究中,高铁列车多目标优化调度模型可帮助运营管理人员对列车运行进行规划和管理,在运营过程中实现多目标优化。

列车调度知识点总结

列车调度知识点总结

列车调度知识点总结一、列车调度的概念及作用1、列车调度的概念列车调度是指对列车的开行计划、线路选择、车次编组、排队等工作的组织和管理。

它通过对列车运行进行计划、协调、指挥、控制和监督,保证列车正常运行并达到预定的运输结果。

2、列车调度的作用列车调度是铁路运输的核心环节,它直接影响到列车的安全、运行效率和运输能力。

列车调度的主要作用包括:(1)保证列车的安全运行;(2)提高列车的运行效率;(3)合理利用铁路资源,提高铁路的运输能力;(4)为旅客和货物提供准时、可靠的运输服务。

二、列车调度的组成部分列车调度由许多组成部分构成,主要包括列车运行计划、车次编组、道岔调车和运行控制等环节。

具体包括以下几个方面:1、列车运行计划列车运行计划是列车调度的基础,它是根据铁路线路、信号设备和车辆情况制定的运行方案。

列车运行计划要考虑列车的始发地、途经站和终到地,以及线路的运输能力和行车安全等因素。

2、车次编组车次编组是指根据列车运行计划,将不同始发地、途经站和终到地的车辆编组成列车的工作。

车次编组要考虑列车的始发地、途经站和终到地之间的距离、线路的运输能力和列车的通行能力等因素。

3、道岔调车道岔调车是指对列车进出站、通过站和调车站进行操作的一项工作。

道岔调车要根据列车的始发地、途经站和终到地,按照列车运行计划和车次编组,合理设置道岔,保证列车的正常进出站和通行。

4、运行控制运行控制是列车调度的最核心环节,它包括对列车运行进行指挥、控制和监督的一系列工作。

运行控制要根据列车的运行计划和实际运行情况,及时调整列车的运行方向、速度和停站,保证列车的正常运行。

三、列车调度的方法和技术列车调度涉及到许多方法和技术,包括列车调度系统、计算机辅助调度、列车自动控制等。

这些方法和技术对于提高列车调度的效率和精度起到了关键作用。

1、列车调度系统列车调度系统是通过计算机设备和通信网络,实现列车运行计划、车次编组、道岔调车和运行控制等功能的系统。

调度问题总结

调度问题总结

调度问题总结引言调度问题是在计算机科学和操作管理领域中非常重要的一个概念。

它涉及到如何高效地分配资源、管理任务和优化系统性能等问题。

在本文中,我们将总结一些常见的调度问题及其解决方案。

调度问题的定义调度问题是指如何合理地安排和分配资源,以最大限度地优化系统的性能和效率。

在计算机领域中,调度问题通常涉及到任务的排序、分配和执行等方面。

具体而言,调度问题可以分为以下几类:1.作业调度问题:如何安排任务的执行顺序和优先级,以最大限度地减少总执行时间或提高系统吞吐量。

2.资源调度问题:如何合理地分配有限的资源,以满足不同任务的需求,并尽量减少资源的浪费。

3.进程调度问题:如何合理地分配和管理进程,以最大限度地提高系统的响应能力和资源利用率。

常见的调度问题及解决方案1. 作业调度问题作业调度问题是指如何安排任务的执行顺序和优先级,以最大限度地减少总执行时间或提高系统吞吐量。

常见的作业调度算法包括:•先来先服务(FCFS):按任务到达的顺序进行调度,适用于短作业或无特定要求的情况。

•最短作业优先(SJF):按任务的执行时间进行排序,先执行执行时间最短的任务。

•最高响应比优先(HRRN):根据任务的等待时间和执行时间之比进行排序,执行响应比最高的任务。

•时间片轮转(RR):将任务划分为若干时间片,按照轮转的方式执行任务。

2. 资源调度问题资源调度问题是指如何合理地分配有限的资源,以满足不同任务的需求,并尽量减少资源的浪费。

常见的资源调度算法包括:•静态优先级调度:为每个任务分配一个固定的优先级,根据优先级进行资源分配。

•动态优先级调度:根据任务的实时需求和系统状态进行优先级的动态调整。

•最大最小公平(Max-Min Fairness):以公平的方式分配资源,以满足每个任务的最小需求。

3. 进程调度问题进程调度问题是指如何合理地分配和管理进程,以最大限度地提高系统的响应能力和资源利用率。

常见的进程调度算法包括:•轮转调度:按轮转的方式分配CPU时间片给就绪队列中的进程,可以提高系统的响应速度和公平性。

列车调度问题优化算法研究与应用

列车调度问题优化算法研究与应用

列车调度问题优化算法研究与应用引言:列车调度是铁路运输系统中的重要环节,影响着列车运行效率和客流体验。

针对列车调度问题,优化算法的研究与应用具有重要意义。

本文将介绍列车调度问题的优化算法研究进展,包括基于遗传算法、蚁群算法、模拟退火算法等的优化方法,并探讨其在实际应用中的效果。

一、列车调度问题概述列车调度问题是指如何合理安排列车的发车时间、运行路线和停站,以实现最优化的列车运输效果。

这个问题的复杂性主要体现在:列车之间的相互制约关系、列车与车站之间的时间窗口、列车运行速度和限速要求等多方面因素的综合考虑。

二、遗传算法优化调度问题遗传算法是一种模拟自然进化过程的优化算法。

在列车调度问题中,可以将列车的发车时间、运行路径等视为种群中的个体,通过交叉、变异等操作,生成新的个体,以找到最优解。

遗传算法的优点是能够快速找到解空间中的全局最优解,并且可以灵活地应用于不同的列车调度问题。

三、蚁群算法优化调度问题蚁群算法是模拟蚂蚁觅食行为的优化算法。

在列车调度问题中,可以将列车视为蚂蚁,车站之间的路径视为路径图,而蚂蚁在路径图上寻找最优路径。

蚁群算法通过模拟蚂蚁在路径上释放信息素,并根据信息素浓度来决定下一步的移动方向,以找到最优解。

蚁群算法的优点是能够实现全局搜索,并且具有较强的自适应性。

四、模拟退火算法优化调度问题模拟退火算法是一种模拟固体退火过程的优化算法。

在列车调度问题中,可以将列车的运行路径视为固体的状态,通过不断降温来消除能量。

模拟退火算法通过接受次优解的概率来避免困在局部最优解中,以求得全局最优解。

模拟退火算法的优点是能够在一定程度上避免陷入局部最优解,具有较好的全局搜索能力。

五、优化算法的应用案例优化算法在列车调度问题中的应用已经取得了一定的成果。

例如,在某高速铁路的列车调度中,通过遗传算法优化列车的发车间隔和速度,使得列车在满足时刻要求的情况下,实现了发车间隔的最小化和客流的最大化。

在另一个列车广播系统中,蚁群算法被用于优化车站之间的列车运行路径,以减少运行时间和提高效率。

车厢调度试题及答案

车厢调度试题及答案

车厢调度试题及答案1. 单选题:以下哪种调度策略最适合处理紧急货物的运输需求?A. 先到先服务(FCFS)B. 最短作业优先(SJF)C. 轮询(Round Robin)D. 优先级调度(Priority Scheduling)答案:B2. 多选题:在车厢调度中,哪些因素可能影响调度效率?A. 货物的重量B. 货物的体积C. 货物的紧急程度D. 车厢的容量答案:A、B、C、D3. 判断题:车厢调度系统不需要考虑货物的装卸时间。

答案:错误4. 填空题:在车厢调度中,通常使用______算法来优化货物的装载顺序。

答案:贪心5. 简答题:描述车厢调度中常用的几种调度算法,并简要说明它们的优缺点。

答案:车厢调度中常用的调度算法包括:- 先到先服务(FCFS):优点是简单易实现,缺点是不考虑任务的紧急程度,可能导致紧急任务等待时间过长。

- 最短作业优先(SJF):优点是能够快速处理短任务,减少平均等待时间;缺点是在长任务较多的情况下可能导致“饥饿”现象。

- 轮询(Round Robin):优点是公平性好,每个任务都能得到处理;缺点是可能造成资源的不必要切换。

- 优先级调度(Priority Scheduling):优点是能够优先处理紧急任务;缺点是需要合理设置优先级,否则可能导致低优先级任务长时间得不到处理。

6. 计算题:假设有5个车厢需要调度,每个车厢的容量分别为10、15、20、25、30吨。

现有3批货物,重量分别为5吨、10吨、20吨,请问如何调度才能使车厢的利用率最高?答案:首先调度重量为20吨的货物使用30吨的车厢,然后调度重量为10吨的货物使用20吨的车厢,最后调度重量为5吨的货物使用10吨的车厢。

这样安排可以使车厢的利用率最高。

铁路调度指挥问题及对策分析

铁路调度指挥问题及对策分析

铁路调度指挥问题及对策分析随着铁路运输的日益发展,铁路调度指挥问题也日益凸显出来。

铁路调度指挥是指对列车运行进行合理安排、控制和指挥的工作。

在铁路交通中,调度指挥是非常重要的环节,它直接关系到列车的运行安全、准点率和运行效率。

当前存在着一些铁路调度指挥问题,为了更好地解决这些问题,需要对其进行深入分析,提出科学的对策措施。

一、铁路调度指挥问题1.调度指挥系统老化随着铁路交通的发展,原有的调度指挥系统已经逐渐老化,存在着一些技术装备陈旧、性能不稳定、操作不便等问题。

这使得调度指挥工作受到一定的影响,无法满足日益增长的列车运行需求。

2.信息化水平不高目前,铁路调度指挥还存在着信息化水平不高的问题,主要表现在信息化设备不完善、信息共享不畅、数据分析能力不足等方面。

这导致了调度指挥工作的效率和质量无法得到有效提升。

3.运行标准不统一由于铁路调度指挥工作在不同地区、不同线路、不同车站之间存在着一定的差异,导致了运行标准不统一的情况。

这使得列车在运行过程中遇到一些问题时,无法做到及时有效的处理和协调。

4.应急处理能力不足由于铁路调度指挥工作存在一定的复杂性,一旦出现突发事件或者意外情况时,调度指挥部门的应急处理能力往往显得不足。

这给列车运行安全和准点率带来了一定的风险。

二、铁路调度指挥对策分析1.加快更新系统设备针对调度指挥系统老化的问题,应加快更新系统设备,引进新的调度指挥技术和设备,提升系统性能和稳定性。

同时要积极推进信息化建设,提高系统的智能化水平,实现数据共享和协同运行。

2.提升信息化水平要针对信息化水平不高的问题,加强信息化设备的更新和完善,提高信息的全面性和准确度。

加强信息系统之间的联通和数据交换,提高数据分析能力,实现信息共享和资源整合,以提升调度指挥的工作效率和质量。

3.规范运行标准要加强对不同地区、线路、车站的运行标准的统一管理,制定统一的调度指令和运行规程,提升列车运行的流畅度和有序性。

铁路运输调度工作—车流调整(铁路行车组织)

铁路运输调度工作—车流调整(铁路行车组织)
2.分界站接入某去向的重车不足或增多时,应首先采 取增加或减少自局装往该去向装车数量。如重车不足 或增多延续时间较长,自局调整又有一定困难时,应 将情况及时报总公司,由总公司统一调整。
重车调整 限制装车或停止装车
1.装车数超过区段通过能力或编组站作业能力时。 2.装车数超过卸车地的卸车能力时。 3.因自然灾害、事故,线路封闭中断行车时。 4.因其他原因发生车辆积压或堵塞时。
3.各种备用车的状况,均需经备用车基地检车员检 查。
当货流、车流发生变化或 重车流增加时,在不影响接空 局重点物资装车需要的前提 下,经总公司批准,依据下达 的日计划命令可采取以规定排 空车种相同的重车顶替一部分 空车,在分界站按同车种的重 车和空车总数计算的综合调整 方法。
为保证特殊紧急运输任务
需要所采取的非常措施。
10-2-3备用车调整的方法
备用车调整
远期车流推算
1.总公司调度处每日6:00将全路昨日各铁路局去向 别装车通知各铁路局。
2.各局根据其他局到本局和通过本局的装车数及运 行期限,结合本局自装自卸和自装交出车流,制定 远期车流推算表。
车流动态掌握
近期车流推算
局调度所计划调度员在第一班结束后,根据各分 界站实际出入车数和列车运行计划推算全日预计出入 车数、预计全日的装卸车数,推算出18:00预计结存 的管内工作车、空车和各分界站需要移交的重车数等 车流资料,报总公司。
10-2-1 重车车流调整
重车调整
重车在全路运用车总数中约占2/3左右,数量较 大;重车的流向又决定了空车的流向。因此重车车调 整是整个车流工作的重点。
去向别装车调整
重车调整的 主要方法
限制装车或停止装车 变更车流输送径需要增加或减少日均装车计划时, 应首先调整自铁路局管内装车数量;如需增加或减少 外铁路局的装车时,须经总公司批准。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Project1火车车厢重排调度年级:2014级学院:电子与信息工程学院班级:智能科学与技术、自动化姓名:*** 14350046 姓名:*** 14350045 姓名:*** 14350069【题目要求】1.问题:一列火车要将n节车厢分别送往n个车站,车站按照n,n-1,…,1的编号次序经过车站。

假设车厢的编号就是其目的地车站的编号。

2.要求:给定一个任意的车厢排列次序。

重新排列车厢,使其按照从1到n的次序排列。

规定重排调度时车厢只能从入轨到缓冲铁轨,或者从缓冲铁轨到出轨。

【数据结构与算法】本程序将栈的空间设为25(可以通过全局常量maxstack直接修改),栈的最大数量设为100(可以直接修改)。

可以处理任意少于100个任意次序车厢的火车重排调度问题。

流程图如图1:图1 总流程图【测试数据、结果及分析】实验1:顺序输入车厢节数:10车厢顺序:1 2 3 4 5 6 7 8 9 10测试结果如图2。

图2 实验1测试结果测试序列重排成功,使用0个栈,返回值正常,实验程序运行良好。

实验2:倒序输入车厢节数:10车厢顺序:10 9 8 7 6 5 4 3 2 1测试结果如图3。

图3实验2测试结果测试序列重排成功,使用1个栈,实验程序运行良好。

实验3:乱序输入车厢节数:10车厢顺序:3 2 4 5 7 8 9 6 1 10测试结果如图4。

图4实验3测试结果测试序列重排成功,使用7个栈,实验程序运行良好。

实验4:乱序输入车厢节数:25车厢顺序:25 2 6 4 5 3 7 23 9 19 11 12 16 14 15 13 17 18 10 22 21 20 8 24 1测试结果如图5。

图5 实验4测试结果测试序列重排成功,使用13个栈,实验程序运行良好。

实验五:乱序输入车厢节数:50车厢顺序:46 47 50 38 32 29 21 39 1 37 12 22 2 30 11 31 41 3 20 36 19 23 5 14 44 4 45 1335 8 24 40 7 28 43 16 27 34 6 42 15 26 10 17 9 33 18 25 49 48测试结果如下(由于太长无法完全截图,只能粘贴):请输入火车车厢的个数:50请输入火车车厢次序(中间有间隔):46 47 50 38 32 29 21 39 1 37 12 22 2 30 11 31 41 3 20 36 19 23 5 14 44 4 45 1335 8 24 40 7 28 43 16 27 34 6 42 15 26 10 17 9 33 18 25 49 48将第46车厢移动到缓冲轨道1将第47车厢移动到缓冲轨道2将第50车厢移动到缓冲轨道3将第38车厢移动到缓冲轨道1将第32车厢移动到缓冲轨道1将第29车厢移动到缓冲轨道1将第21车厢移动到缓冲轨道1将第39车厢移动到缓冲轨道2将第1车厢从入站轨道移动到出站轨道将第37车厢移动到缓冲轨道2将第12车厢移动到缓冲轨道1将第22车厢移动到缓冲轨道2将第2车厢从入站轨道移动到出站轨道将第30车厢移动到缓冲轨道3将第11车厢移动到缓冲轨道1将第31车厢移动到缓冲轨道4将第41车厢移动到缓冲轨道5将第3车厢从入站轨道移动到出站轨道将第20车厢移动到缓冲轨道2将第36车厢移动到缓冲轨道5将第19车厢移动到缓冲轨道2将第23车厢移动到缓冲轨道3将第5车厢移动到缓冲轨道1将第14车厢移动到缓冲轨道2将第44车厢移动到缓冲轨道6将第4车厢从入站轨道移动到出站轨道将第45车厢移动到缓冲轨道7将第5车厢从缓冲轨道1移动到出站轨道将第13车厢移动到缓冲轨道2将第35车厢移动到缓冲轨道5将第8车厢移动到缓冲轨道1将第24车厢移动到缓冲轨道4将第40车厢移动到缓冲轨道6将第7车厢移动到缓冲轨道1将第28车厢移动到缓冲轨道5将第43车厢移动到缓冲轨道7将第16车厢移动到缓冲轨道3将第27车厢移动到缓冲轨道5将第34车厢移动到缓冲轨道6将第6车厢从入站轨道移动到出站轨道将第42车厢移动到缓冲轨道7将第7车厢从缓冲轨道1移动到出站轨道将第15车厢移动到缓冲轨道3将第8车厢从缓冲轨道1移动到出站轨道将第26车厢移动到缓冲轨道5将第10车厢移动到缓冲轨道1将第17车厢移动到缓冲轨道4将第9车厢从入站轨道移动到出站轨道将第33车厢移动到缓冲轨道6将第10车厢从缓冲轨道1移动到出站轨道将第18车厢移动到缓冲轨道5将第11车厢从缓冲轨道1移动到出站轨道将第25车厢移动到缓冲轨道6将第12车厢从缓冲轨道1移动到出站轨道将第49车厢移动到缓冲轨道8将第13车厢从缓冲轨道2移动到出站轨道将第48车厢移动到缓冲轨道8将第14车厢从缓冲轨道2移动到出站轨道将第15车厢从缓冲轨道3移动到出站轨道将第16车厢从缓冲轨道3移动到出站轨道将第17车厢从缓冲轨道4移动到出站轨道将第18车厢从缓冲轨道5移动到出站轨道将第19车厢从缓冲轨道2移动到出站轨道将第20车厢从缓冲轨道2移动到出站轨道将第21车厢从缓冲轨道1移动到出站轨道将第22车厢从缓冲轨道2移动到出站轨道将第23车厢从缓冲轨道3移动到出站轨道将第24车厢从缓冲轨道4移动到出站轨道将第25车厢从缓冲轨道6移动到出站轨道将第26车厢从缓冲轨道5移动到出站轨道将第27车厢从缓冲轨道5移动到出站轨道将第28车厢从缓冲轨道5移动到出站轨道将第29车厢从缓冲轨道1移动到出站轨道将第30车厢从缓冲轨道3移动到出站轨道将第31车厢从缓冲轨道4移动到出站轨道将第32车厢从缓冲轨道1移动到出站轨道将第33车厢从缓冲轨道6移动到出站轨道将第34车厢从缓冲轨道6移动到出站轨道将第35车厢从缓冲轨道5移动到出站轨道将第36车厢从缓冲轨道5移动到出站轨道将第37车厢从缓冲轨道2移动到出站轨道将第38车厢从缓冲轨道1移动到出站轨道将第39车厢从缓冲轨道2移动到出站轨道将第40车厢从缓冲轨道6移动到出站轨道将第41车厢从缓冲轨道5移动到出站轨道将第42车厢从缓冲轨道7移动到出站轨道将第43车厢从缓冲轨道7移动到出站轨道将第44车厢从缓冲轨道6移动到出站轨道将第45车厢从缓冲轨道7移动到出站轨道将第46车厢从缓冲轨道1移动到出站轨道将第47车厢从缓冲轨道2移动到出站轨道将第48车厢从缓冲轨道8移动到出站轨道将第49车厢从缓冲轨道8移动到出站轨道将第50车厢从缓冲轨道3移动到出站轨道共用8个缓冲轨道结果分析:本程序可对少于100个任意次序车厢的火车进行调度。

进行多次乱序重排,实验程序均成功运行,且结果全部与人工计算相符合,实验程序满足实验要求。

【分工、贡献%、自我评分】王金顶:算法设计,主程序,调试,实验报告 34% 100分王帆:算法设计,栈程序,测试,实验报告 33% 100分张宇航:算法设计,流程图设计,实验报告 33% 100分【项目总结】本次题目较为简单,考察了我们对栈的学习与理解情况,同时也让我们复习了类的相关知识。

大家都为终于能够解决实际问题而感到开心。

在算法设计中也遇到了很多问题,如我们发现标准库中的栈占用内存过大,因此导致程序在处理车厢数很大时经常崩溃。

因此我们自己写了一个简单的栈,节省了大量内存,因此能够处理更加复杂的问题。

我们也增加了好几处错误处理代码,增加了程序的容错性。

如栈满、栈空现象等。

但是该程序在处理不连续序列时会出现问题,这也是我们一直在改进的地方,但是输出一直不稳定,有时正确有时错误,因此在程序清单中删除了这一部分。

总体而言,本次的实验让我们对自己有了更大的信心。

【程序清单】1.stack.h/*文件名:stack.h作用:栈的类定义*/#ifndef STACK_H#define STACK_Hconst int maxstack=25;class Stack{public:Stack();bool empty() const;bool full() const;int top() const;void push(int item);void pop();private:int count;int entry[maxstack];};#endif2.stack.cpp/*文件名:stack.cpp作用:栈的类成员函数的实现*/ #include<iostream>#include"stack.h"using namespace std;void Stack::push(int item){if (count<maxstack){entry[count++]=item;}}void Stack::pop(){if (count>0){--count;}}int Stack::top() const{if (count>0){return entry[count-1];}elsereturn 0;}bool Stack::empty() const{if(count>0) return false;return true;}bool Stack::full() const{if(count==maxstack) return true;return false;}Stack::Stack(){count=0;3.train.cpp/*文件名:train.cpp作用:主程序*/#include<iostream>#include"stack.h"using namespace std;int main(){int n, now_out=1;int stack_count=0;cout<<"请输入火车车厢的个数:" <<endl; //输入数据并储存cin>>n;int array[n];cout<<"请输入火车车厢次序(中间有间隔):"<<endl;for (int i=0; i<n; i++){cin>>array[i];}//输入部分Stack stack_array[100];for (int i=0; i<n; i++){if (array[i]==now_out) //判断当前车厢数是否恰好满足输出条件{cout<<"将第"<<now_out<<"车厢从入站轨道移动到出站轨道"<<endl; //如果满足直接输出now_out++;continue;}else //不满足则将数压入合适的栈{for (int j=0; j<stack_count+1; j++){if (stack_array[j].empty()){cout<<"将第"<<array[i]<<"车厢移动到缓冲轨道"<<j+1<<endl;stack_array[j].push(array[i]);if (j==stack_count){stack_count++;}break;}else if (stack_array[j].full()) //栈满时另找新栈{continue;}else if(array[i]<stack_array[j].top()){cout<<"将第"<<array[i]<<"车厢移动到缓冲轨道"<<j+1<<endl;stack_array[j].push(array[i]);break;}else;}}for (int s=0; s<stack_count; s++)//遍历各个栈顶是否有满足输出条件的数{if (stack_array[s].top()==now_out){cout<<"将第"<<now_out<<"车厢从缓冲轨道"<<s+1<<"移动到出站轨道"<<endl;stack_array[s].pop();now_out++;break;}}}for (int m=now_out; now_out<=n; m++){for (int s=0; s<stack_count; s++)//遍历各个栈顶是否有满足输出条件的数{if (stack_array[s].top()==now_out){cout<<"将第"<<now_out<<"车厢从缓冲轨道"<<s+1<<"移动到出站轨道"<<endl;stack_array[s].pop();now_out++;break;}}}cout<<"共用"<<stack_count<<"个缓冲轨道"<<endl;return 0;}。

相关文档
最新文档