定義
根據雙代號網路圖繪製的基本原則,雙代號網路圖的自動繪製可定義為:首先根據工程項目的工序及工序間的邏輯關係,確定工序的開始節點和結束節點,即工序編號;然後再將節點與工序以適當的方式(主要是確定節點之間的相對位置)放置於畫布上,即布點;最終形成雙代號網路圖。
雙代號網路圖的自動繪製必須遵循雙代號網路圖的繪製原則,那么在自動繪製雙代號網路圖時,就必須解決這兩個關鍵的核心問題。
(1)為每一個工序或活動設定開始節點及結束節點,也就是為工序編號。
(2)按照一定的規則,為上一步中得到的節點設定坐標,將節點置於合適的位置。
核心問題
編號思路
(1)使用鄰接矩陣來存儲工序之間的邏輯關係,基於鄰接矩陣,同時結合雙代號網路圖的繪圖原則對工序進行編號,在編號的過程中完成虛工序的檢測與添加。
(2)首先設定一個最初的起始節點,由此起始節點開始,將所有無緊前工序的起始節點設定為該節點,同時為其添加結束節點。然後採用廣度優先添加各工序的緊後工序編號,在此過程中完成虛工序的檢測和處理。當所有工序都編號完畢時,將網路圖匯集到一個匯點。
節點布置
(1)節點分級。第一個節點的級為1,遍歷所有節點,根據相關規則,確定遍歷中當前節點的級數。
(2)節點分層。第一個節點的層為1,在對節點分級的基礎上,依次對各級進行以下操作:對於當前級中的節點,當前節點的層等於其前驅節點中最小的層;完成對當前級中所有節點的分層之後,按照當前級中各節點層的大小,從小到大依次完成各節點的後續節點的分層操作。
(3)完成節點的發級、分層之後,節點在畫布上的位置也就已經確定,即完成了布點工作。
基本步驟
信息錄入
用戶輸入工序信息或者由最佳化模型得出相應的最佳化工序信息,將數據從錄入的工序信息錶轉存入待處理的工序信息表。信息表至少應具有緊前工序屬性,對於時標網路圖則另外需要提供開工時間和完工時間兩個屬性。
讀數據
從資料庫讀取工序表,對工序進行排序,按照工序最早開工時間升序、最早完工時間升序排序。對予時標網路圖直接按照開工及完工時間排序即可,為編號作準備。
工序編號
按照繪圖規則給實工序定義起始節點與結束節點,同時處理工序間的邏輯關係,建立相應的虛工序。更新工序信息表,在節點表中添加節點。
定義節點z坐標
在非時標網路圖中,z坐標按照逐級遞增的模式設定。在雙代號時標網路圖中,節點的z坐標標識工序的開始和結束。依次讀取工序表,根據工序的開始時間確定相應起始節點的衛坐標,將信息存人資料庫。
定義節點Y坐標
按照網路圖中的路線依次設定節點y坐標,將信息存人資料庫。
圖形繪製
利用工序表、節點信息表的數據,將節點、箭線繪製在帶有時標的圖紙上。
人工調整
繪製網路圖很難避免交叉的出現,或者用戶認為圖形的布局不是很理想,此時,需要用戶對網路圖進行人工調整。在網路圖的調整過程中,用戶可以直接點擊圖形上的節點箭線進行拖動,但是節點被限制只能改變其y坐標。待調整到滿意便可以輸出保存。