首先根据工程项目的工序及工序间的逻辑关系,确定工序的开始节点和结束节点,即工序编号;然后再将节点与工序以适当的方式(主要是确定节点之间的相对位置)放置于画布上,即布点;最终形成双代号网络图。
定义
根据
双代号网络图绘制的基本原则,双代号网络图的自动绘制可定义为:首先根据工程项目的工序及工序间的逻辑关系,确定工序的开始节点和结束节点,即工序编号;然后再将节点与工序以适当的方式(主要是确定节点之间的相对位置)放置于画布上,即布点;最终形成双代号网络图。
双代号网络图的自动绘制必须遵循双代号网络图的绘制原则,那么在自动绘制双代号网络图时,就必须解决这两个关键的核心问题。
(1)为每一个工序或活动设置开始节点及结束节点,也就是为工序编号。
(2)按照一定的规则,为上一步中得到的节点设置坐标,将节点置于合适的位置。
核心问题
编号思路
(1)使用邻接矩阵来存储工序之间的逻辑关系,基于邻接矩阵,同时结合双代号网络图的绘图原则对工序进行编号,在编号的过程中完成虚工序的检测与添加。
(2)首先设置一个最初的起始节点,由此起始节点开始,将所有无紧前工序的起始节点设置为该节点,同时为其添加结束节点。然后采用广度优先添加各工序的紧后工序编号,在此过程中完成虚工序的检测和处理。当所有工序都编号完毕时,将网络图汇集到一个汇点。
节点布置
(1)节点分级。第一个节点的级为1,遍历所有节点,根据相关规则,确定遍历中当前节点的级数。
(2)节点分层。第一个节点的层为1,在对节点分级的基础上,依次对各级进行以下操作:对于当前级中的节点,当前节点的层等于其前驱节点中最小的层;完成对当前级中所有节点的分层之后,按照当前级中各节点层的大小,从小到大依次完成各节点的后续节点的分层操作。
(3)完成节点的发级、分层之后,节点在画布上的位置也就已经确定,即完成了布点工作。
基本步骤
信息录入
用户输入工序信息或者由优化模型得出相应的优化工序信息,将数据从录入的工序信息表转存入待处理的工序信息表。信息表至少应具有紧前工序属性,对于时标网络图则另外需要提供开工时间和完工时间两个属性。
读数据
从数据库读取工序表,对工序进行排序,按照工序最早开工时间升序、最早完工时间升序排序。对予时标网络图直接按照开工及完工时间排序即可,为编号作准备。
工序编号
按照绘图规则给实工序定义起始节点与结束节点,同时处理工序间的逻辑关系,建立相应的虚工序。更新工序信息表,在节点表中添加节点。
定义节点z坐标
在非时标网络图中,z坐标按照逐级递增的模式设置。在双代号时标网络图中,节点的z坐标标识工序的开始和结束。依次读取工序表,根据工序的开始时间确定相应起始节点的卫坐标,将信息存人数据库。
定义节点Y坐标
按照网络图中的路线依次设置节点y坐标,将信息存人数据库。
图形绘制
利用工序表、节点信息表的数据,将节点、箭线绘制在带有时标的图纸上。
人工调整
绘制网络图很难避免交叉的出现,或者用户认为图形的布局不是很理想,此时,需要用户对网络图进行人工调整。在网络图的调整过程中,用户可以直接点击图形上的节点箭线进行拖动,但是节点被限制只能改变其y坐标。待调整到满意便可以输出保存。