科研成果应用电子计算机编制铁路月度货运计划的几个问题铁道部科学院运输及经济研究所组织一些特殊数据的补充校验和数据的平衡调整等内容、。王楚群,〔本文主要介绍应用电子计算机编制铁路局月度货物运输计划中几个问题的处理方法提要〕包括程序设计、数据关于各铁路局月度货物运输计划(以下简称货运计划)的编制,果起。以后,又继续与济南局电子中心的同志一、2传统的做法是从每月1,经过不断完善扩充,1985年在济南铁路日至2日编制路局下月份的货运计划,所用的原始数据是货主提出的要车计划表。每月21日车站将下月份的要车计划表集中,由分局、路局逐级计算货物运输量。在编制货运计划的过程中,分局、路局要反复修改要车计划表的数据,分别计算原提、核实、核定三个阶段的运输量,编制各阶段所需要的表格。由于每个路局都有上万以至几万张要车计划表,数据量大,计算起来时间紧,重复计算多,因此编制货运计划是一项十分紧张而繁琐的工作,每月需要集中各分局货运人员完成这项任务。为了改变现有状况,我们运输所和济南铁路局电子中心共同在PDP一n系列电子计算机上编制了京沪圈货运计划应用软件,用以代替部分人工劳动,提高编制货运计划的效率和质量。应用软件为编制货运计划提供了几种不同类型的表报,包括:发站别货物品类装车计划(分站货源表);分局货物品类装车计划表;路局货物品类装车计划表(核定表);分局发到铁路局运输计划表(棋盘表);路局发到铁路局运输计划表;报铁道运输计划表;路分局口表;原提货源装车计划表;核减计划分析表及各种查定表。应用软件在上海、济南、北京三个铁路局进行京沪圈运输计划管理系统总联调,每个铁路局都用每月实际要车计划表进行试算,北京局为5万多条,上海局为3万多条,济南局近2万条。虽然各铁路局都有大量的原始数据,但试算结果,软件灼可靠性、通用性都达到预期效一30一同志的大力支持配合下,正式投产使用。投产三年来,己取得明显的效益。大大提高计划编制速度,由原来人工编制的1815小时,减少到只用384小时,提高工效37倍;由于软件的查询、修改功能十分得心应手,计划编制可以达到省时、省力;由于软件的可靠性,使准确率达到10%,同时,提高计划编制质量,减少了不合理运输,提高了直达比重,减轻了编组站的压力。1985年始发直达比重由5%提高到1987年的563%,仅此一项,全年可节约42万多车小时,年节约221万多元,由于计划安排合理,提高了综合运输能力,1986年货运收入比1985年增加1亿多元。应用软件于1988年1月通过局级鉴定,现就其主要内容分述如下。一、程序设计货运计划应用软件是采用COBOL语言编写的。程序组织采用模块结构,各个模块可以运行,有较大的通用性和灵活性。应用软件由几十个模块组成。由一套间接命令把模块连接起来,模块可以任意删除或连接,以适应各个路局编制货运计划的需要。应用软件对各种报表的计算方法和处理手段不尽相同,但是编制每组报表都有一定基本流程。为了减少计算过程中访问盘文件的次数,提高编表速度,在报表计算之前,要对原始数据按所需的数据项进行分类排序,然后建立计算过程需要的各种文件,再转入报表计算,最后编制报表打印格式,再把计算结果及计算过程进行校验的出错信息表输出。如果数局运输处据出现出错信息,必须对原始数据文件进行纠错,重新进行运算,直到全分局数据没有错误为止。每个分局都按以上方法处理,直到全路局所辖各分局计算无误,可以利用各分局的计算结果,进行路局各种报表的计算和编制,最后输出路局报表,各个阶段(原提、核实、核定)的货运计划编制任务到此结束。二、数据组织数据是应用软件的基础,数据内容和数据织是实现软件功能的重要条件。下面分别介两个最基本的数据文件。1要车计划表数据文件。这是编制货运,是以分局为单,文件名是由带有分局号的标识。数据文件由分局的要车计划表记录,记录长度为82个字符,记录内容及格1。要车计划表记录格式表1lǐ到剔计序发到发收品品原核车原核运峰分分发到径径副划贸贸““提节号号站站人人类名吨吨种车车征缨黯因口口知点点站臀站码622366244223333443其中分界出口、入口,发节点、到节点、码、径路到站码为计算口径路提,副码将在“车站码校验”中说明。从数据出,基础数据为软件的通用性和今后的发及数据共享提供了充分的条件。2参数文件。这是为实现应用软件通用功必不可少的参数,是一个单记录的顺,内容是随着需要的信息随时更新,参记录的格式及内容见表2。参数记录格式裘2数分号局年号月份月数天当数局分局路号顺标识段阶号略路局据名叠…2`’2”“在货运计划编制过程中,可向参数文件送入需要参数,使应用软件能够灵活地处理所期望的事件,山于参数文件是各个程序模块的公用文件,因此,使应用软件在计算过程中参数变量的一致性得以保证,并且也避免各个模块相同参数的重复输入。三、车务段码校验要车计划表经过规格化,预处理以后,数据基本上是正确的。但是,有些特殊数据项还必须进行补充校验,如车务段发站码、到站码、都要进行校验和判断。因此,在报表进行运算之前,对要车计划表的某些数据项进行校验处理,可以提高计算结果的准确性。车务段码校验是检查车务段码是否超出编码范围,为此,必须介绍车务段发站码的编码原则和车务段查询表。1车务段发站码的编码原则在要车计划表记录中,副码就是车务段编,长度为三位数字码,是发站的另一种代码,是编制分站货源报表的主要数据项。它的编码原则是以车务段为单位进行编。三位数字码是这样定义的:第一位是车务,其余两位是车站代码。车务段号从。一9按车务段顺序编码,其中局各直属站集中为一个单位,编为O车务段,码从1一20,其它车务段所属车站编码21一99。2车务段查询表每个分局的车务段数以及每个车务段所属,车务段码校验必须依赖信息做为校验根据,提供这些信息的表就段查询表。它是以路局为单位建立起来,文件的相对键是分局号,一个分局段有关信息构成一个不等长记录,记录。记录的内容由记录头和若车务段信息所组成,一个车务段为一组信,组的数量由分局的车务段数决定,最大组1。,车务段查询表记录格式及内容详一抓一绍组计划各种报表的基础数据文件位的顺序文件值所构成所组成式见表码形式码段号径路发站内容看分供的其车站编则从开的车站数都不尽相同是车务能提供的序文件这些数的相对文件的车务数由分局数所决定息干组数不超过见表3。(1)出错的要车计划表,(2)出错标志,即车务段查询表表3数据项{{{一记录头}一二1到到型熟一}_一一__}`~一月共竺二州塑兰斗且兰长度{2一12}1221}{分直车车直一处属务务属般理局方段段站站标号式数号数数志当计算某一分局分站货源表时,读入这个分局相应的车务段查询记录,这个分局的车务段数以及每个车务段现有车站数都在内存,这些就是车务段发站码校验的基础信息。3车务段发站码的校验方法当从要车计划表文件中读入一条记录时,首先取出车务段发站码第一位(即车务段号),与车务段查询记录中的车务段数进行比较,若车务段号+1大子车务段数,则说明发站码出错,填写出错参数,转入出错处理。如果不出错,则转入车站号检杏,首先根据车务段号在车站数栏中找到对应车务段号这一组信息,如果是直属站,与直属站数比较;如果是一般站,则站号减20后再与一般站数进行比较;如果车站码大于车站数,说明车务段发站码出错,填写有关出错信息后,转入出错处理。如果两层检查未发现错误,可以转入计算处理程序进行运算。再读入一条要车计划表记录时,如果车务段号与上一条记录的车务段号不相同时,需重新进行校验。如果只是车站号不同,只做车站号校验;如果完全相同,则不做任何校验,直接转入计算处理程序。4校验出错后,转入出错处理程序,其主要功能是根据出借参数拼装出错信息表,写入出错文件,然后再竹失读入一条新的要车计划表记录。出羊钻息文件,是一个顺序文件,为了提高运算速度,出错信息集中在运算结果后输出。出《专信息的记录包括以下三方面的内容;一32一出错性质;(3)控制号,即出错信息对应的最大允许值,用于分析出错原因。因、数据的平衡调整各类报表经过运算处理以后,报表中各相关数据必须保持平衡。如各分量的累加数必须与合计数相等。但是,有时两者之间会出现误差,这是由于在分量运算过程产生出来的。因此报表计算以后还必须对数据进行平衡调整。调整的原则是以合计数为准,调整某一个分量或几个分量的数据,使整个数据体系达到平衡。这种调整方法,使数据比较接近实际,也使各类报表之间的结果具有统一性。对各分量的调整我们采用“余数调整法”。现以运输计划报表为例,说明数据平衡处理。我们设计的表格是以品类为行,其它各项内容为列,现有品类2种,如日车这一项的合计数就是由22.卜品类的日车分量组成。而每个分量的日车数由以下公式求得:日车(四舍五入)=月车/当月天数从公式可以看出,它是由两数相除求得,虽然进行了四舍五入的取整处理,但是日车数与计算值还有一定的误差(不是整除的情况),由于分量的计算过程存在误差,因此,各品类的日车累加数就可能不等于合计日车数,用公式表示:至乞RT二RH一艺RP式中只T是日车误差,RH是日车合计,后一项是各品类日车的累加数。当RT今o,说明合计日车与累加日车出现了误差,必须对分品类日车进行调整,调整哪一个品类日车及怎么调整,这需要依赖于RT值及余数表中的余数值。余数表是在计算各品类日车时建立的。每一个分量对应一个余数值,因除数是两位数字,因此余数长度也定为2位,日车有2个分量,余数表长为2项,余数值对应品类项从1~2顺序存放。当计算某一品类日车时,把计算此品类的余数值送到余数表中对应的余数项,同时把该品类日车值进行累计。当所有品类的日车计算结束,余数表的各余数项也被填满,各品类的累计日车也计算出来。余数表格式见表4。余数表表4数据名}余数,{余数:}……{余数`}余数::}长度22…}!}22…}有了各品类的累加日车数和日车合计数,用以上公式计算日车误差RT,根据RT确定分品类日车的调整方法和调整次数。当RT>0时,则找RT个品类日车+1当RT
0时,要增加分品类的日车数为RT车,须找到舍去最大数所对应的分量进行增补。当RT<。时,必须减少分品类的日车数RT,须找到进位最小的数所对应的分量进行删减。调整时,一个分量只能调整1日车,误差RT日车就需要找出RT个“恰当”的品类日车分量进行调整。查找“恰当”分量还必须引入一个参数,就是计算日车的除数(当月天数)的折半数。折半数:ZP(四舍五入)二当月天数/2当余数ZP时,说明这个余数所对应的品类日车数在四舍五入取整过程中是把尾数“进位”。根据这种关系,当RT>0时,在余数表中查找一个小于ZP的最大余数,找到了这个余,它所在的位置就是品类号,根据品类号就找到对应这个品类的日车数,把原来的车十1,同时,对余数表中对应项的余数置为O,了,下次如果需要调整,就不会再选到这一项余数,而是选到小于ZP的次大余数。以此类推,直到调整次数等于误差数RT的绝对值为止,这样,日车数据也就平衡了。当RT