漏家俊
1.上海市基礎工程集團有限公司 上海 200002;2.上海市非開挖建造工程技術研究中心 上海 200002
隨著建筑業的熱度不斷減緩,建筑市場的競爭也日益加劇,利潤空間的壓縮導致不少建筑企業舉步維艱。承建方一方面要具備雄厚的技術實力和經濟實力,另一方面要有科學管理的能力,需要通過不斷對地項目成本進行優化與控制以尋求最大限度的成本節約,確保整個工程的盈利目標[1]。鋼筋作為建筑設計、施工和造價的重要組成部分,其造價占據整個項目造價的30%~40%[2],因此對于鋼筋下料優化的研究能為企業創造巨大的利益。
針對鋼筋優化下料研究較多有一維線性規劃法、啟發式的遺傳算法、混合遺傳算法、模擬退火算法等[3],其中后幾種方法對鋼筋優化人員專業化要求高,難于在項目實際應用過程中推廣。而傳統的人工優化下料方法受人為影響因素大,過程繁瑣,難以保證能夠十分有效地進行鋼筋下料優化。
隨著信息化時代的到來,計算機的應用面越來越廣泛,本文建議通過采用現代化信息技術MATLAB輔助進行鋼筋下料優化,通過簡潔的編譯實現優化過程,達到為企業節省鋼筋損耗開支的目的。
鋼筋優化下料問題可以簡單表述為:企業擁有原材為定尺長度(l)的鋼筋一批,下料長度為a1、a2、…、an,鋼筋對應下料數量分別為b1、b2、…、bn根;c(j,i)為針對單根原料分割方法中相應下料長度的數量;x1、x2、…、xn代表每一種分割方法所采用的次數。要求在滿足鋼筋下料需求的情況下,實現鋼筋原材用料最省。
對于單根原料進行分割,枚舉。為防止枚舉遺漏,采用循環的方式列舉出所有可行方案。首先對下料長度a1、a2、…、an從大到小進行排序,優先選取長的下料長度進行切割,同時便于后續設置約束條件。
原材料定尺長度為l,最多可以切割出:

其中,int為余數向下取整,因此ai的選擇方法有0~int(l/ai)種選項,假設l=9,ai=2.3,那么就有(0,1,2,3)4種選擇方式。假設a1對應的選擇方式為c(j,1),ai對應c(j,i),an對應c(j,n)。

另外,要使得下料方法最優,必然切割所剩下的余料不得大于下料長度最小的那一段[4],即需要滿足:
其中,矩陣A、矩陣X代表每一種分割方法對應的采用數目,矩陣b代表對應鋼筋下料需求數目。
針對一維線性鋼筋下料問題,常用的方法是線性規劃或整數規劃,包括Excel規劃求解[5]、LINGO求解、LINDO求解以及MATLAB求解。在調研及分析每種方法的實用性上,篩選出Excel求解、LINGO求解,以及MATLAB求解,分析求解效果如下。
采用Excel電子表格,其功能較為簡單,在完成規劃求解之前,必須手動列舉出所有可行解。隨著工程越來越復雜,當下料長度種類多且短時,枚舉種類達上百種,因此列可行解的過程非常繁瑣。同時該過程不具有通用性,在應對不同的實際問題時,表格需要不斷地進行修改調整,因此表格法在數據量大時,難于勝任輔助下料工作。
在LINGO中,我們不必確定具體的分割方案[6],分割方案可以由軟件自動運行后得出,但是我們需要確定分割方案的數目,這個數目在列出具體的分割方案之前是不可知的,所以往往是賦予一個預估值,同樣,預估值越小,軟件進行求解的時間越短,而預估值越大,軟件需要求解時間相應成幾何倍數增長,如當x數目為15時,運行了5 h,仍未運行完畢,盡管在開始運行的3 min內,軟件就給出了最優化的方案,但是出于嚴謹的考慮,在其他實際案例中,必須要等待程序完整運行完畢才能得出最優解,運行時間漫長。
在Excel以及LINGO的鋪墊下,MATLAB可以很好地處理實際工程問題,其自帶循環語句可以迅速列舉出所有可行解,可用linprog語句進行線性規劃,用intlinprog語句進行整數規劃。最終得到滿足工程實際要求的可行解。從時間上來看,MATLAB運行時間短,可以迅速給出最優解;從應對不同問題的程序修改上來看,很多數據都可以作為矩陣直接輸入,只需要應對實際下料類型的數目進行相應的修改。因此,結合程序運行時間以及程序通用性考慮,提出以MATLAB來求解下料優化問題效果最佳。
以實際的工程案例為例:現供應長為9 m的鋼筋原材,需求下料長為2.3 m鋼筋200根,1.9 m鋼筋400根,1.3 m鋼筋200根。在不考慮切割損耗的情況下,求解最佳鋼筋下料方法,要求使用9 m鋼筋原材最省。
因此,l=9,a1=2.3,a2=1.9,a3=1.3,通過程序運行可以得到表1。

表1 組合方式
表1中數據為從MATLAB工作區中直接導出數據。至此,對于單根原料分割方法的列舉已經完成。
針對該實際問題,設表格內深色部分數據為矩陣a,而矩陣a的轉置矩陣即為矩陣A,矩陣b=[b1,b2,b3]T,其中:b1=b3=200,b2=400,而目標待求矩陣為X。
矩陣A如下:

矩陣A、矩陣X、矩陣b需要滿足AX =b。
當滿足公式時,必然可以求得所需求的最優化下料方法,將上述公式代入MATLAB自帶的linprog函數后,可以獲得矩陣X:x4=33.3,x6=66.7,x15=66.7。其余為0,總計需要使用鋼筋原材165根。
矩陣X即為所求理想狀態下最優解,但是實際上來說,采用的整料不可能出現小數,即代表當出現完美AX=b的時候所求最優解在實際情況中不存在。因此,只要滿足原切割后每一種下料數目不少于需求數目即可。因此,對公式作出更改:AX≥b。
在滿足該公式的情況下,在MATLAB中調用intlinprog函數進行整數規劃后,可以獲得矩陣X:x3=1,x4=31,x6=67,x8=2,x15=66。其余為0,總計需要使用鋼筋原材167根,完成了對于最優解的探索,如表2所示。
表2中的每一行代表了每一種分割方法所對應的切割出下料多少根,以及對應的余料長度。最后一列代表了完成目標下料優化每一種分割方案所對應使用的次數,將最后一列求和便可完成下料優化。總計需要使用長9 m的原材167根。

表2 最終結果
本文結合工程實際中鋼筋下料優化問題,提出了一種切實可行且十分有效的求解方法,即通過MATLAB進行優化的鋼筋下料辦法。
針對超出定尺長度鋼筋進行整料分割取剩余下料長度,然后列舉出了單根原材料所有可行的切割方法,最后用整數規劃來解決下料最優解。整體條理清晰,操作過程簡單實用,并且便于項目現場使用,該方法對于一般情況下的實際鋼筋下料問題都能適用,從而盡可能地提高原材料的利用率,進而節省企業成本。