杜 鍍,王肖輝
(河南建筑職業(yè)技術(shù)學(xué)院 a. 工程管理系; b. 土木工程系, 河南 鄭州 450064)
中國的城市化進(jìn)程越來越快,為了滿足城市居民出行需求,城市地鐵項目建設(shè)也在逐步進(jìn)入正軌,現(xiàn)國內(nèi)一些城市正在開始或完善地鐵項目建設(shè)。地鐵隧道施工一般采用兩種或兩種以上的開挖方法(明挖法,新奧法,盾構(gòu)法等),整個施工的距離較長,施工強(qiáng)度大,施工工序繁多[1],因此施工周期比較長,當(dāng)然整個施工項目投資也比較大。如何在地鐵隧道項目施工過程中對進(jìn)度和成本進(jìn)行有效管理是非常關(guān)鍵的。
進(jìn)度 - 成本優(yōu)化方法中屬于網(wǎng)絡(luò)計劃方法的PERT(Program Evaluation and Review Technique)和CPM(Critical Path Method)是最早被美國海軍采用的方法[2]。為實現(xiàn)進(jìn)度和成本的優(yōu)化,葉天翔[3]采用了邊際成本法進(jìn)行進(jìn)度和成本的優(yōu)化。該方法通過不斷壓縮關(guān)鍵工作,反復(fù)人工操作計算實現(xiàn)。汪萬竹[4]針對工程項目進(jìn)度 - 成本優(yōu)化問題,采用CPM法建立了進(jìn)度 - 成本的線性規(guī)劃模型,基于該模型同時引入極限成本,通過求解線性規(guī)劃模型的方法實現(xiàn)進(jìn)度 - 成本優(yōu)化。李遷等[5]在考慮空間干涉的作用下,建立了該情況下工程調(diào)度進(jìn)度和成本優(yōu)化的數(shù)學(xué)模型,最后通過元啟發(fā)式算法進(jìn)行優(yōu)化。在保證工程質(zhì)量的前提下,宋寶軍[6]研究了進(jìn)度 - 成本優(yōu)化問題,利用企業(yè)實踐數(shù)據(jù),創(chuàng)建了進(jìn)度 - 成本優(yōu)化的數(shù)學(xué)模型,然后運用遺傳算法實現(xiàn)進(jìn)度成本的尋優(yōu)。分析以上學(xué)者所采用的方法可知,通過人工操作計算來反復(fù)調(diào)整實現(xiàn)進(jìn)度 - 成本優(yōu)化過程是非常復(fù)雜的,隨著工程項目越來越復(fù)雜,這種方法將會很難執(zhí)行;通過相關(guān)數(shù)據(jù)來首先建立進(jìn)度 - 成本的數(shù)學(xué)模型,然后再基于相關(guān)算法實現(xiàn)優(yōu)化對于小型的工程比較適用,但是當(dāng)工程項目比較復(fù)雜時,進(jìn)度和成本之間的關(guān)系將很難用數(shù)學(xué)公式準(zhǔn)確表達(dá),有的甚至無法表達(dá)相互關(guān)系。因此,對于復(fù)雜項目下的進(jìn)度 - 成本優(yōu)化方法需要進(jìn)一步研究。
本文基于計算智能技術(shù)的發(fā)展,將計算智能技術(shù)中的方法相結(jié)合,用非線性處理能力較好的神經(jīng)網(wǎng)絡(luò)[7~9]來表達(dá)約束系統(tǒng),再采用智能優(yōu)化算法進(jìn)行尋優(yōu),對于復(fù)雜的涉及工序較多的工程,就可以避免采用復(fù)雜或不準(zhǔn)確的數(shù)學(xué)公式。基于這種思路,本文提出運用一種基于遺傳神經(jīng)網(wǎng)絡(luò)和免疫粒子群算法的組合方法來解決復(fù)雜工序下的進(jìn)度 - 成本優(yōu)化問題。為驗證該組合方法的性能,選取一般可以建立準(zhǔn)確數(shù)學(xué)公式的案例進(jìn)行驗證,分別采用基于數(shù)學(xué)模型的單純形法和該組合方法來求解進(jìn)度 - 成本優(yōu)化問題。從而以數(shù)學(xué)模型方法所求的準(zhǔn)確結(jié)果為參照,若相對誤差較小(控制在10%以內(nèi)),則說明該組合方法能夠較為準(zhǔn)確地解決進(jìn)度 - 成本優(yōu)化這一類問題,從而可以將其應(yīng)用于大型城市地鐵隧道施工進(jìn)度 - 成本優(yōu)化問題中。
計算智能屬于智能的范疇,是由美國學(xué)者James首次提出,計算智能主要是從生物進(jìn)化的角度學(xué)習(xí)和模擬智能,也被稱之為“軟計算”。計算智能技術(shù)方法一方面在各自獨立地進(jìn)行研究和發(fā)展,另一方面計算智能所包含的各種方法之間以及計算智能技術(shù)和其他方法之間也在互相融合發(fā)展,其中,各種技術(shù)或方法的融合發(fā)展往往可以解決單一方法難以解決的問題[10]。遺傳神經(jīng)網(wǎng)絡(luò)和免疫粒子群算法均屬于該領(lǐng)域。
BP(Back Propagation)神經(jīng)網(wǎng)絡(luò)屬于一種誤差逆向傳播的多層前饋神經(jīng)網(wǎng)絡(luò),該網(wǎng)絡(luò)采用梯度下降法對層間的權(quán)值和節(jié)點的閾值進(jìn)行修正,通過網(wǎng)絡(luò)的不斷訓(xùn)練,即對權(quán)值和閾值的不斷修正,來實現(xiàn)實際輸出和期望輸出的均方差達(dá)到最小。
BP神經(jīng)網(wǎng)絡(luò)的應(yīng)用比較多,但在發(fā)展應(yīng)用的同時也存在一些缺陷,其中,BP神經(jīng)網(wǎng)絡(luò)很容易陷入到局部極值,從而導(dǎo)致訓(xùn)練失敗。因此,本文為了降低BP神經(jīng)網(wǎng)絡(luò)陷入局部極值的可能性,采用遺傳算法對BP神經(jīng)網(wǎng)絡(luò)的初始權(quán)值和閾值進(jìn)行優(yōu)化[11],從而提高BP神經(jīng)網(wǎng)絡(luò)的訓(xùn)練效果,更好地對進(jìn)度和成本之間的關(guān)系進(jìn)行擬合。
粒子群算法屬于計算智能中的群智能算法,該算法來源于對鳥群覓食過程的模擬,通過個體極值和群體極值不斷的去搜索最優(yōu)值。從算法結(jié)構(gòu)來說,該算法比較簡單,運行速度較快,因此,被廣泛采用。與此同時,該算法中粒子也因為自身缺乏調(diào)節(jié)機(jī)制,導(dǎo)致在迭代后期粒子的多樣性較差,這便很容易導(dǎo)致在迭代后期陷入局部極值。所以,為了更準(zhǔn)確地進(jìn)行進(jìn)度 - 成本優(yōu)化,本文將免疫自我調(diào)節(jié)機(jī)制用于粒子群算法的迭代[12],提高該算法在迭代過程中的粒子多樣性,從而能夠更準(zhǔn)確地獲取到全局最優(yōu)值。
基于遺傳神經(jīng)網(wǎng)絡(luò)和免疫粒子群算法的組合方法解決一般約束系統(tǒng)優(yōu)化問題的流程如圖1所示。
圖1 基于遺傳神經(jīng)網(wǎng)絡(luò)和免疫粒子群算法的組合方法解決一般約束系統(tǒng)優(yōu)化問題的流程
在工程項目施工前,一般需要編制工程項目進(jìn)度計劃,其中進(jìn)度計劃都由許多必要的工序組成,這些工序在實際施工時將消耗相應(yīng)的資源,包括人力、材料、機(jī)械等。其中評估進(jìn)度計劃編制的科學(xué)性和可行性的重要經(jīng)濟(jì)指標(biāo)就是成本,因此,需要對初次編制的進(jìn)度計劃不斷的優(yōu)化。進(jìn)度 - 成本優(yōu)化[13]在不同條件下的優(yōu)化結(jié)果是不同的,本文考慮的是在資源充分和關(guān)鍵線路保持不變的條件下,實現(xiàn)對進(jìn)度 - 成本的優(yōu)化,從而在滿足工期條件的情況下,費用最低。
利用整個工程所有工序的直接壓縮費率來確定出一定樣本量的各工序不同壓縮時間組合與對應(yīng)的直接壓縮費用數(shù)據(jù),用這些樣本訓(xùn)練遺傳神經(jīng)網(wǎng)絡(luò),從而建立不同壓縮時間組合與直接壓縮費用關(guān)系的神經(jīng)網(wǎng)絡(luò)模型,再運用免疫粒子群算法并結(jié)合工程施工工期、各工序時間和關(guān)鍵線路不變的要求進(jìn)行尋優(yōu)。具體步驟如下:
Step1:基于進(jìn)度成本相關(guān)數(shù)據(jù)和MATLAB編程,獲取各工序壓縮時間組合與對應(yīng)直接壓縮費用的數(shù)據(jù)樣本。
Step2:建立初始BP神經(jīng)網(wǎng)絡(luò)模型,同時使用遺傳算法來實現(xiàn)對BP神經(jīng)網(wǎng)絡(luò)權(quán)值和閾值進(jìn)行優(yōu)化。
Step3:運用各工序壓縮時間組合與對應(yīng)直接壓縮費用的訓(xùn)練樣本對優(yōu)化后遺傳神經(jīng) (GA-BP,Genetic Algorithm and Back Propagation) 網(wǎng)絡(luò)進(jìn)行訓(xùn)練,并用測試樣本檢驗網(wǎng)絡(luò)擬合和泛化效果,反復(fù)訓(xùn)練與檢驗,保存可行的網(wǎng)絡(luò)(net)。
Step4:設(shè)置免疫粒子群算法參數(shù),并對免疫粒子群算法中各粒子位置(各工序壓縮時間的組合)進(jìn)行初始化,以及初始化粒子各方向速度(各工序壓縮時間的變化量)。
Step5:采用上面保存的網(wǎng)絡(luò)(net)進(jìn)行初始各粒子適應(yīng)度值計算。粒子i適應(yīng)度值fitness(i)計算采用的核心代碼為:
w(i)=sim (net, input (i));
fitness(i)=mapminmax(‘reverse’,w(i),outputps)
其中:input (i)為粒子i的位置經(jīng)過歸一化后的向量;w(i)為未反歸一化的適應(yīng)度值。
Step6:進(jìn)行個體極值設(shè)置,同時,個體極值中fitness數(shù)值最小的設(shè)為群體極值。
Step7:運用式(1)(2)進(jìn)行粒子速度和位置的更新。
vik=ωvik+c1r1(pik-xik)+c2r2(pgk-xik)
(1)
xik=x′ik+vik
(2)
式中:ω為權(quán)值;c1,c2為學(xué)習(xí)因子;r1,r2為(0,1)之間的隨機(jī)數(shù);vik為第i個粒子第k個方向的速度;pik為第i個粒子第k個方向上的位置;pgk為群體極值在第k個方向的位置;xik為第i個粒子的第k個方向的位置。
Step8:檢驗更新后的各粒子位置(各工序壓縮時間的組合)是否符合壓縮條件,以及粒子速度是否在要求范圍之內(nèi)。
Step9:對當(dāng)前粒子進(jìn)行適應(yīng)度值的計算,同時再更新群體極值和個體極值。
Step10:對計算出的各粒子fitness值進(jìn)行從小到大排序,保留fitness值較低的,且保留數(shù)量為種群規(guī)模的一半,舍棄另外粒子。然后再重新初始化舍棄的粒子,并計算對應(yīng)的適應(yīng)度值,與保留下來的粒子構(gòu)成下一代粒子種群。群體極值和新初始化的粒子個體極值更新。
Step11:循環(huán)Step7~Step10到迭代次數(shù)結(jié)束。
運用可建立準(zhǔn)確數(shù)學(xué)公式的文獻(xiàn)[14]項目進(jìn)度 - 成本優(yōu)化問題來驗證組合方法的可行性。各工序工期、方差、壓縮范圍、壓縮費率如表1所示。
表1 工序數(shù)據(jù)
各工序壓縮時間變量見表2,分別采用基于遺傳神經(jīng)網(wǎng)絡(luò)和免疫粒子群算法的組合方法和基于數(shù)學(xué)公式的單純形法求解。
表2 工序壓縮時間表示符號
MATLAB中的randint()函數(shù)可以在一定取值范圍內(nèi)以均勻分布方式隨機(jī)取值,因此,本文根據(jù)以上表格數(shù)據(jù)和閉合圈原理[14],利用randint()函數(shù)獲取訓(xùn)練樣本和測試樣本的取值。
根據(jù)每個工序的時間壓縮范圍設(shè)置randint( )函數(shù)取值范圍,從而獲得符合壓縮時間要求的每個工序壓縮時間,再通過所有工序單位時間壓縮費用得出相應(yīng)的增加成本,最終獲得多組符合要求的所有工序壓縮時間的組合和對應(yīng)壓縮費用,從而作為神經(jīng)網(wǎng)絡(luò)輸入和輸出樣本。本文取170組訓(xùn)練樣本和8組測試樣本[12]。
(1)擬合壓縮時間和直接壓縮費用關(guān)系的神經(jīng)網(wǎng)絡(luò)訓(xùn)練和測試
因該算例中的變量為8個(x1~x8),目標(biāo)函數(shù)為直接壓縮費用C,所以輸入層節(jié)點數(shù)(inputnum)為8個,輸出層節(jié)點數(shù)(outputnum)為1個[15]。通過不同隱含層節(jié)點數(shù)(hiddennum)的BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練后,比較最終擬合效果,從而確定隱含層節(jié)點的數(shù)目[16],經(jīng)過試驗后,隱含層節(jié)點數(shù)確定為15,訓(xùn)練迭代次數(shù)取值為1000,學(xué)習(xí)效率取值為0.1,目標(biāo)誤差取值為0.01。建立初步BP神經(jīng)網(wǎng)絡(luò)的代碼如下:
net=newff(inputn,outputn,hiddennum)
遺傳算法參數(shù)設(shè)置[17~19]:迭代次數(shù)取值為20,種群規(guī)模取值為20,交叉概率取值為0.4,變異概率取值為0.2。
運用rands()函數(shù)初始化遺傳算法種群中各染色體,然后通過選擇、交叉和變異過程反復(fù)進(jìn)行染色體更新。最后把最優(yōu)染色體x中的對應(yīng)基因值賦給神經(jīng)網(wǎng)絡(luò)各個權(quán)值和閾值,其核心代碼為:
w1=x(1:inputnum*hiddennum);
B1=x(inputnum*hiddennum+1:inputnum*hiddennum+hiddennum);
w2=x(inputnum*hiddennum+hiddennum+1:inputnum*hiddennum+hiddennum+hiddennum*outputnum);
B2=x(inputnum*hiddennum+hiddennum+hiddennum*outputnum+1:inputnum*hiddennum+hiddennum+hiddennum*outputnum+outputnum);
net.iw{1,1}=reshape(w1,hiddennum,inputnum;
net.lw{2,1}=reshape(w2,outputnum,hiddennum);
net.b{1}=reshape(B1,hiddennum,1);
net.b{2}=reshape(B2,outputnum,1)
經(jīng)過優(yōu)化、訓(xùn)練、和測試,最終訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)測試結(jié)果如表3所示,保存擬合好的神經(jīng)網(wǎng)絡(luò)(netBp)。
表3 測試結(jié)果
(2)基于訓(xùn)練得到的網(wǎng)絡(luò)模型(netBp)和免疫粒子群算法進(jìn)行尋優(yōu)
免疫粒子群算法參數(shù)設(shè)置[20,21]:群體迭代次數(shù)取值為100,種群規(guī)模取值為50,學(xué)習(xí)因子c1,c2取值為2,粒子速度控制在[-1 1]。
基于進(jìn)度成本數(shù)據(jù)和閉合圈原理,初始化各粒子位置x(i),同時初始化粒子速度v(i)。通過訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)得到初始粒子的適應(yīng)度值,粒子i的適應(yīng)度值fitness(i)計算如下:
w(i)=sim (netBp, x_g(i));
fitness(i)=mapminmax(‘reverse’,w(i),outputps)
其中:x_g(i)為x(i)歸一化后的位置向量。
進(jìn)入迭代,根據(jù)式(1)(2)反復(fù)進(jìn)行粒子速度和位置更新、群體極值和個體極值更新、以及利用免疫淘汰機(jī)制更新粒子群體等過程,直到迭代結(jié)束。
(3)結(jié)果
迭代過程如圖2所示,最終得出的最優(yōu)粒子的適應(yīng)度值fitnesszbest=137.52,最優(yōu)粒子的位置zbest=(3,0,3,0,0,1,0,3)。所以進(jìn)度 - 成本經(jīng)過優(yōu)化的各工序壓縮時間為:x1=3,x2=0,x3=3,x4=0,x5=0,x6=1,x7=0,x8=3,相應(yīng)的壓縮費用為:137.52元。
圖2 迭代過程
根據(jù)進(jìn)度、成本數(shù)據(jù)和閉合圈原理,建立線性規(guī)劃數(shù)學(xué)模型如下:
minC=20x1+10x2+7x3+5x4+25x5+
30x6+4x7+8x8
首先,進(jìn)行模型標(biāo)準(zhǔn)化,在約束條件中添加松弛變量x9~x20和人工變量x21,令Z=-C,則標(biāo)準(zhǔn)形式如下:
由約束系數(shù)矩陣可知,P9~P19,P21組成一個基,將所有非基變量的值設(shè)為零,即得到基可行解為x=(0, 0, 0, 0, 0, 0, 0, 0, 6.8, 7.2, 17.1, 3, 2, 3, 4, 7, 6, 2, 3, 0, 10),據(jù)此列出初始單純形表,并根據(jù)式(3)計算初始單純形表檢驗數(shù),初始單純形表如表4所示。
(3)
式中:aij為系數(shù)矩陣中第i行第j列的數(shù);m為基變量的總數(shù);cj為目標(biāo)函數(shù)中變量xj前的系數(shù)。
表4 初始單純形
根據(jù)表4可知,檢驗數(shù)有大于零的,所以此時的基可行解不是最優(yōu)解,其中最大的是M-7(M表示足夠大的數(shù)),因此x3確定為換入基。用b列數(shù)字除以x3列同行數(shù)字(分母小于等于零的舍棄),取最小值對應(yīng)的基變量作為換出基,經(jīng)過計算可知x14為換出基,x3列和x14行相交的數(shù)字1為主元素,加上“[ ]”符號。用x3替換基變量中x14,并列出對應(yīng)的新單純形表,基于Matlab編程實現(xiàn)新單純形表中數(shù)據(jù)的換算。同時進(jìn)行新單純形表檢驗數(shù)計算,從而檢驗基可行解是否為最優(yōu)解。重復(fù)進(jìn)行基變量替換、更新單純形表以及驗證檢驗數(shù)是否小于等于零,最終獲得最優(yōu)解。通過操作計算,后續(xù)依次替換為:x8替換x19,x1替換x12,x6替換x21。最終的單純形表如表5所示。
表5 最終單純形
根據(jù)表5,所有的檢驗數(shù)均不大于零,因此,對應(yīng)的基可行解就是最優(yōu)解,最優(yōu)解為x1=3,x2=0,x3=3,x4=0,x5=0,x6=1,x7=0,x8=3,x9=0.8,x10=3.2,x11=10.1,x12=0,x13=2,x14=0,x15=4,x16=7,x17=5,x18=2,x19=0,x20=0,x21=0,帶入目標(biāo)函數(shù)為Z=-135,即對應(yīng)的C為135。
所以進(jìn)度 - 成本經(jīng)過優(yōu)化的各工序壓縮時間為:x1=3,x2=0,x3=3,x4=0,x5=0,x6=1,x7=0,x8=3,相應(yīng)的直接壓縮費用為:135元。
根據(jù)表3,由擬合各工序壓縮時間與直接壓縮費用關(guān)系的GA-BP神經(jīng)網(wǎng)絡(luò)測試結(jié)果可知,最小測試結(jié)果相對誤差為0.88%,最大測試結(jié)果相對誤差為7.70%,因此,所有測試結(jié)果的相對誤差均控制在10%以內(nèi)[22],且相對誤差平均值=(0.88%+5.50%+1.11%+4.38%+3.63%+2.94%+7.70%+3.70%)/8=3.73%,這表明了GA-BP神經(jīng)網(wǎng)絡(luò)的實際輸出值與期望輸出值較為接近,從而訓(xùn)練好的GA-BP神經(jīng)網(wǎng)絡(luò)能夠較為準(zhǔn)確地表達(dá)進(jìn)度和成本之間的關(guān)系。
算例中,運用遺傳神經(jīng)網(wǎng)絡(luò)和免疫粒子群算法的組合方法尋優(yōu)結(jié)果為(x1,x2,x3,x4,x5,x6,x7,x8)=(3,0,3,0,0,1,0,3),對應(yīng)的直接壓縮費用是137.52元?;跀?shù)學(xué)模型的單純形法求解結(jié)果為(x1,x2,x3,x4,x5,x6,x7,x8)=(3,0,3,0,0,1,0,3),對應(yīng)的直接壓縮費用是135元?;谶z傳神經(jīng)網(wǎng)絡(luò)和免疫粒子群算法的尋優(yōu)結(jié)果相對于單純形法求解結(jié)果的相對誤差為1.87%。所以,基于遺傳神經(jīng)網(wǎng)絡(luò)和免疫粒子群算法的組合方法是可以較為準(zhǔn)確地解決進(jìn)度 - 成本優(yōu)化問題。另外,由圖2可知,基于遺傳神經(jīng)網(wǎng)絡(luò)和免疫粒子群算法的尋優(yōu)在第10次迭代之前就已經(jīng)接近最優(yōu)結(jié)果,說明該組合方法尋優(yōu)效果較好。
綜合以上分析,對于復(fù)雜工序的地鐵隧道施工進(jìn)度 - 成本優(yōu)化,為了避免數(shù)學(xué)公式不能準(zhǔn)確表達(dá)或者無法表達(dá)進(jìn)度成本之間的關(guān)系,就可以采用基于遺傳神經(jīng)網(wǎng)絡(luò)和免疫粒子群算法的組合方法進(jìn)行求解。
(1)對于施工工序較多的地鐵隧道施工進(jìn)度 - 成本優(yōu)化問題,本文提出了基于遺傳神經(jīng)網(wǎng)絡(luò)和免疫粒子群算法的組合方法解決進(jìn)度 - 成本優(yōu)化問題,并構(gòu)建了該組合方法求解進(jìn)度 - 成本優(yōu)化問題的模型。
(2)基于算例,采用基于遺傳神經(jīng)網(wǎng)絡(luò)和免疫粒子群算法的組合方法以及單純形法分別進(jìn)行進(jìn)度 - 成本優(yōu)化。通過結(jié)果對比分析,得出了該組合方法可以較為準(zhǔn)確地實現(xiàn)進(jìn)度 - 成本優(yōu)化。
(3)大型地鐵隧道施工項目進(jìn)度 - 成本優(yōu)化時,數(shù)學(xué)公式通常比較復(fù)雜或者無法用數(shù)學(xué)公式準(zhǔn)確表達(dá)。因此,基于遺傳神經(jīng)網(wǎng)絡(luò)和免疫粒子群算法的組合方法為此類問題提供了一個新的解決方法。