李 煒,吳群群,張以文
(安徽大學(xué)計算機科學(xué)與技術(shù)學(xué)院,合肥 230601)
隨著傳統(tǒng)開發(fā)與互聯(lián)網(wǎng)協(xié)作開發(fā)相結(jié)合的理念[1]被提出,軟件開發(fā)不再受限于小型群體,而是延伸到各個開發(fā)團隊之間的共同協(xié)作[2-3],來自不同地域、不同組織的開發(fā)者依托互聯(lián)網(wǎng)為媒介,進行開源軟件的在線協(xié)作開發(fā)[4-7],誕生了以眾包[8]、開發(fā)者社區(qū)為代表的群智協(xié)同開發(fā)平臺。開發(fā)者社區(qū)將地理位置上分散的開發(fā)者和以企業(yè)為代表的雇主結(jié)合起來,以較少的成本調(diào)動豐富的開發(fā)者資源。雇主將任務(wù)發(fā)布到開發(fā)者社區(qū),并將任務(wù)分解成一系列相關(guān)聯(lián)的子任務(wù)集合,在開發(fā)者社區(qū)進行搜索匹配,最終尋找到合適的開發(fā)者完成軟件開發(fā)任務(wù)。以開發(fā)者社區(qū)GitHub 為例,它擁有超過1 000 萬的開發(fā)者,共同協(xié)作完成了接近4 000 萬的軟件開發(fā)項目[9]。在帶來巨大利益的同時,開發(fā)者社區(qū)龐大的用戶、項目等資源數(shù)目,不可避免地造成了信息過載問題,使得尋求合適的開發(fā)者變得困難。
在此背景下,對開發(fā)者能力評估以及開發(fā)者推薦技術(shù)的研究成為熱點。然而,開發(fā)者推薦具有新的特征:1)開發(fā)者能力具有明顯的動態(tài)和不確定性;2)軟件開發(fā)的顯著特征是協(xié)作性,多個開發(fā)者共同協(xié)作完成軟件開發(fā)任務(wù)。因此,本文引入模糊評價思想[10],在優(yōu)化開發(fā)者能力評估結(jié)果的基礎(chǔ)上,將軟件開發(fā)過程描述為基于角色的協(xié)作(Role-Based Collaboration,RBC)[11]問題并對其建模,從而優(yōu)化開發(fā)者推薦結(jié)果。
本文的主要工作如下:
1)針對開發(fā)者綜合能力值的動態(tài)性和不確定性,首先,使用模糊層次分析(Fuzzy Analytic Hierarchy Process,F(xiàn)AHP)法構(gòu)建模糊判斷矩陣,得到開發(fā)者能力指標(biāo)權(quán)重,進而求得開發(fā)者歷史綜合能力集合;然后,結(jié)合云模型理論,利用歐氏距離度量綜合能力云模型相似度,求得開發(fā)者完成各項任務(wù)的綜合能力值,最終得到開發(fā)者綜合能力評估矩陣。
2)將開發(fā)者協(xié)同開發(fā)過程描述為基于角色的協(xié)作問題,并使用E-CARGO(Environment-Class,Agent,Role,Group,and Object)模型對其建模,提出了基于E-CARGO 模型的開發(fā)者推薦方法。在復(fù)雜的約束條件下,通過cplex 優(yōu)化包對開發(fā)者推薦問題求解,最終得到開發(fā)者推薦矩陣。
隨著互聯(lián)網(wǎng)協(xié)作開發(fā)浪潮的興起,開發(fā)者社區(qū)資源和人員數(shù)量呈指數(shù)型增長,造成信息過載,按任務(wù)需求匹配合適的開發(fā)者變得困難,于是,將推薦技術(shù)引入開發(fā)者社區(qū)應(yīng)運而生。Sun 等[12]提出了一種名為EDR SI(Enhancing Developer Recommendation with Supplementary Information)的方法,通過考慮開發(fā)人員的專業(yè)知識和開發(fā)習(xí)慣來增強開發(fā)人員推薦。Zhang 等[13]提出了 DevRec(Developer Recommendation system for open source repositories)混合推薦系統(tǒng),將基于開發(fā)活動的方法和基于知識共享活動的方法相結(jié)合,為開源項目推薦合適的開發(fā)人員;此外,基于協(xié)同過濾(Collaborative Filtering,CF)[14-16]的開發(fā)者推薦取得了巨大成功,首先計算待完成任務(wù)和已完成任務(wù)之間的相似性,然后為待完成任務(wù)分配與之相似的已完成任務(wù)的開發(fā)者。Xie等[17]提出了一種多關(guān)系融合的開發(fā)者推薦方法,該方法考慮了多元隱式關(guān)系,然后基于聯(lián)合矩陣分解來整合這些關(guān)系,并基于深度神經(jīng)網(wǎng)絡(luò)來生成推薦結(jié)果。Zhang 等[18]提出了一種基于元學(xué)習(xí)的策略模型,它首先過濾掉那些不太可能參與給定挑戰(zhàn)的開發(fā)者,然后推薦可能贏得挑戰(zhàn)的前k名開發(fā)者?,F(xiàn)有方法更注重學(xué)習(xí)開發(fā)者的專業(yè)能力以及與任務(wù)間的交互信息,忽略了開發(fā)者之間的協(xié)作性,造成任務(wù)的整體完成質(zhì)量不高。為解決開發(fā)者間協(xié)作性低的問題,彌補任務(wù)完成質(zhì)量不高的缺陷,本文考慮開發(fā)者之間的協(xié)作性并將開發(fā)者協(xié)作開發(fā)描述為RBC 問題,以優(yōu)化整體任務(wù)完成質(zhì)量為導(dǎo)向,進行開發(fā)者推薦。
RBC 是一種計算方法,從角色的角度出發(fā),考慮角色間合作及約束條件,使用一系列方法對真實世界的復(fù)雜關(guān)系進行模擬、分解。2006 年,朱海濱等[11,19]在RBC 的基礎(chǔ)上,提出E-CARGO 模型并迅速成為研究RBC 問題中使用最為廣泛的框架。E-CARGO 模型將RBC 系統(tǒng)定義為∑::=〈C,O,A,M,R,E,G,s0,H〉,各元素含義為:C是類(Class);O是對象(Object);A是代理(Agent);M是消息(Message);R是角色(Role);E是系統(tǒng)環(huán)境(Environment);G是群組(Group);s0是協(xié)作系統(tǒng)的初始狀態(tài);H是用戶。
使用E-CARGO 模型建模RBC 系統(tǒng)的關(guān)鍵在于解決組角色分配問題,即在復(fù)雜約束條件下,為角色分配滿足需求的多個代理,進而形成一個群組,群組中各代理之間相互協(xié)作,共同完成協(xié)作任務(wù)[11,19-20]。近年來,使用E-CARGO 模型解決組角色分配問題的研究包括:組角色分配(Group Role Assignment,GRA)[20];代理間包含沖突的組角色分配(GRA with Conflicting Agents on Roles,GRACAR)[21];組多角色分配(Group Multi-Role Assignment,GMRA)[22],包含沖突和合作因素的組角色分配[23];樹形結(jié)構(gòu)的任務(wù)分配[24];考慮代理偏好的組角色分配[25]等。最近,朱海濱等[26]對具有角色和代理雙重沖突的組多角色分配(group multi-role assignment with conflicting roles and agents)問題進行了研究。開發(fā)者推薦問題的本質(zhì),是研究如何將任務(wù)分配給合適的開發(fā)者,可以轉(zhuǎn)化為組角色分配問題。因此,本文首次將E-CARGO 模型應(yīng)用到開發(fā)者推薦場景中,結(jié)合cplex 優(yōu)化包求解開發(fā)者推薦問題。
假設(shè)雇主將任務(wù)Ω發(fā)布到開發(fā)者社區(qū)。首先,將任務(wù)Ω分解成相關(guān)聯(lián)的子任務(wù)集合,即Ω={Ω1,Ω2,…,Ωn},Ωn表示第n個子任務(wù),每個子任務(wù)由一個或多個開發(fā)者來協(xié)作完成;然后,從開發(fā)者社區(qū)獲取開發(fā)者歷史信息,令Λ={Λ1,Λ2,…,Λm},Λm代表第m個開發(fā)者,每個開發(fā)者一次只能完成一項子任務(wù)。令表示開發(fā)者Λm完成子任務(wù)Ωn的第k個能力指標(biāo)值。由于每個雇主的要求不同,開發(fā)者完成同一項任務(wù)獲得的評分存在差異,并且不同開發(fā)者的能力不盡相同,完成同一項任務(wù)的質(zhì)量也存在差異。因此,針對開發(fā)者完成各項任務(wù)的能力度量是首要重點。最后,使用E-CARGO 模型建模開發(fā)者和任務(wù)間的映射關(guān)系,求解開發(fā)者推薦問題。
將E-CARGO 模型應(yīng)用于開發(fā)者推薦場景中,重點關(guān)注E、C、O、R、A、G六個元素,賦予的實際含義分別為:E表示求解開發(fā)者推薦所涉及的各種問題環(huán)境;C是一組將概念進行抽象的類,和E關(guān)聯(lián);O是實例化C的具體對象;R表示開發(fā)子任務(wù)集合;A是候選開發(fā)者集合;G是一個開發(fā)組,即完成開發(fā)者推薦流程后,所有開發(fā)者共同協(xié)作完成任務(wù),形成一個開發(fā)團隊。基于以上定義,使用E-CARGO 進行建模,流程如圖1 所示:首先,將任務(wù)分解成相關(guān)聯(lián)的子任務(wù)集合并發(fā)布到開發(fā)者社區(qū);然后,搜索候選開發(fā)者集合,為每項任務(wù)推薦合適的開發(fā)者。其中,將任務(wù)映射為角色,任務(wù)集合Ω={Ω1,Ω2,…,Ωn}對應(yīng)角色集合R={R1,R2,…,Rn};將開發(fā)者映射為代理,開發(fā)者集合Λ={Λ1,Λ2,…,Λm}對應(yīng)代理集合A={A1,A2,…,Am};將開發(fā)者完成任務(wù)映射為代理扮演角色,開發(fā)者能力指標(biāo)集合SS=對應(yīng)代理資格值集合VV=。到此,E-CARGO 建模完成。于是,可使用求解組角色分配的方法求解開發(fā)者推薦問題,最終通過cplex 得到開發(fā)者推薦結(jié)果。求解開發(fā)者推薦問題還需以下定義:
圖1 基于E-CARGO的開發(fā)者推薦模型Fig.1 Developer recommendation model based on E-CARGO
定義1任務(wù)范圍向量L。L是n維整數(shù)向量,L[j](0≤j
定義2開發(fā)者綜合能力評估矩陣Q。Q是m×n維的矩陣,Q[i,j](0≤i 定義3任務(wù)整體完成質(zhì)量值ρ。ρ代表開發(fā)者之間協(xié)作完成各項子任務(wù)后的任務(wù)總體質(zhì)量。ρ越大,代表任務(wù)完成質(zhì)量越高。 定義4開發(fā)者推薦矩陣T。T是m×n維的矩陣,表示開發(fā)者推薦結(jié)果,T[i,j](0≤i 定義5沖突矩陣C。C是m×m維的矩陣,C[i,j](0≤i 基于以上定義,開發(fā)者推薦問題即求得一個開發(fā)者推薦矩陣T。目標(biāo)函數(shù)如下: 其中:式(2)表示開發(fā)者只有被推薦和不被推薦兩種可能;式(3)表示開發(fā)者人數(shù)應(yīng)當(dāng)滿足任務(wù)范圍向量L的約束;式(4)表示每個開發(fā)者一次只能完成一個任務(wù);式(5)表示完成同一個任務(wù)的兩個開發(fā)者應(yīng)當(dāng)滿足沖突矩陣C的約束。 開發(fā)者能力評估矩陣Q的計算過程主要包含兩個部分:首先基于各個專家的模糊判斷矩陣X,運用FAHP 來計算指標(biāo)的權(quán)重向量W;然后基于云模型理論和權(quán)重向量W即可獲得開發(fā)者能力評估矩陣Q。 2.3.1 基于FAHP的指標(biāo)權(quán)重計算 開發(fā)者在項目上的能力體現(xiàn)為不同的度量指標(biāo),而每個指標(biāo)的重要程度明顯又是不同的,因此,在對開發(fā)者綜合能力評估之前,需要先計算各個指標(biāo)的重要性。本文采用經(jīng)典的FAHP 方法[10]來計算各項能力指標(biāo)的權(quán)重。FAHP 是層次分析(Analytic Hierarchy Process,AHP)法[27]的一個衍生,是定性和定量相結(jié)合的多評價指標(biāo)優(yōu)選排序方法。FAHP 方法確定各項指標(biāo)權(quán)重的步驟如下: 步驟1 首先,依托FAHP 方法,根據(jù)能力評估的具體任務(wù)構(gòu)建合適的層次模型,即專家對開發(fā)者能力量化的依據(jù)。如圖2 所示,層次模型自上而下分別為目標(biāo)層、中間層和最低層。其中目標(biāo)層是開發(fā)者能力指標(biāo),中間層包括基本指標(biāo),任務(wù)完成質(zhì)量指標(biāo)以及任務(wù)完成效率指標(biāo),最低層是對中間層的細粒度刻畫。然后,專家對n個指標(biāo)進行評估,即可獲得模糊判斷矩陣X,其中,X中的元素xij(1≤i≤n,1≤j≤n)是集合{0.1,0.2,…,0.9}中的一個元素。具體地,若xij∈[0.1,0.5),則表示指標(biāo)i沒有指標(biāo)j重要;若xij∈(0.5,0.9],則表示指標(biāo)i比指標(biāo)j重要;若xij=0.5,表示指標(biāo)i和指標(biāo)j同等重要。特別地,如果xii=0.5,xij+xji=1,則稱X為模糊互補判斷矩陣。如果沒有特別說明,本文采用的均為模糊互補判斷矩陣。 圖2 開發(fā)者能力指標(biāo)層次結(jié)構(gòu)Fig.2 Developer ability index hierarchical structure 接下來,根據(jù)得到的模糊互補判斷矩陣X,即可計算出指標(biāo)權(quán)重,計算公式如下所示: 步驟2 根據(jù)等式(6)求得的指標(biāo)權(quán)重W是否合理,還應(yīng)將模糊互補判斷矩陣X與其對應(yīng)的特征矩陣進行相容性驗證。 定義6給定兩個矩陣A=(aij)n×n和B=(bij)n×n,規(guī)定: 為A與B的相容性指標(biāo)。 定義7設(shè)模糊互補判斷矩陣X的權(quán)重向量為W=(w1,w2,…,wn),滿足wi≥0,=1(1≤i≤n)。則X的特征矩陣W*=定義如下: 在實際問題中,一般由m(m≥2)個專家對某一特定任務(wù)進行指標(biāo)權(quán)重評估,建立m個模糊互補判斷矩陣Xk=,從而求得對應(yīng)的指標(biāo)權(quán)重向量Wk=和特征矩陣Wk*。為驗證指標(biāo)權(quán)重的合理性,還需完成如下兩個步驟: 1)m個模糊互補判斷矩陣與其相對應(yīng)的特征矩陣的相容性驗證: I(Xk,Wk*)≤α;1≤k≤m 2)m個模糊互補判斷矩陣之間的相容性驗證: I(Xk,Xp)≤α;k≠p,1≤k,p≤m 其中:α一般取值為0.1。當(dāng)滿足以上兩個條件時,m個指標(biāo)權(quán)重集的均值則可以作為某一特定任務(wù)的指標(biāo)權(quán)重值。最終,確定指標(biāo)權(quán)重向量為: 其中:wi=。 舉例說明,每完成一項任務(wù),雇主會對開發(fā)者的溝通協(xié)作能力、專業(yè)技能水平、任務(wù)完成質(zhì)量、任務(wù)完成效率四個指標(biāo)進行打分。獲取開發(fā)者完成某任務(wù)的歷史能力指標(biāo)評價集合SS={(0.5,0.5,0.6,0.6),(0.6,0.8,0.8,0.9)},假設(shè)通過FAHP 方法計算出指標(biāo)權(quán)重向量W=(0.2,0.2,0.3,0.3),最終,加權(quán)求和得到開發(fā)者的綜合能力集合QS={0.56,0.79}。 2.3.2 基于云模型理論的綜合能力評估 在2.3.1 節(jié)中,通過FAHP 方法得到了開發(fā)者針對某一特定任務(wù)的客觀合理的綜合能力評價集合QS,然而,Q矩陣的建立需要的是單一的綜合能力評價值,因此,為了準(zhǔn)確衡量開發(fā)者Λm對某一子任務(wù)Ωn的勝任能力,引入了云模型理論[28-29]。云模型由三個數(shù)值特征組成,即期望Ex(expectation)、熵En(entropy)和超熵He(hyper entropy),定義為cm={Ex,En,He}。Ex是綜合能力最具代表性的值,En表示綜合能力的粒度范圍,He描述了綜合能力粒度的不確定性。眾多云滴組成綜合能力云模型,開發(fā)者綜合能力值可被視為云滴,發(fā)送到反向云生成器中,綜合能力云模型的三個數(shù)值特征可由如下公式計算: 其中:Ex是集合QS的平均值;σ是Ex的標(biāo)準(zhǔn)差;S2是Ex的樣本方差;total是集合QS 中的元素個數(shù)。為了推薦合適的開發(fā)者完成任務(wù),通過計算綜合能力云模型間的相似性來識別綜合能力差異是至關(guān)重要的。本文使用歐氏距離計算相似性,公式如下: 將所有候選開發(fā)者的綜合能力值轉(zhuǎn)化為綜合能力云模型,若歷史記錄中開發(fā)者只完成過一次子任務(wù),則設(shè)p為唯一的綜合能力值,得到一個具體的綜合能力云模型{p,0,0}。因此,對m個開發(fā)者進行綜合能力評價的云模型矩陣可以描述為: 其中:cmi,j=是開發(fā)者Λi對于子任務(wù)Ωj的綜合能力云模型。由于開發(fā)者狀態(tài)存在波動性以及任務(wù)類型的不同,同一開發(fā)者執(zhí)行多次任務(wù)會得到不同的綜合能力值。而一個好的開發(fā)者應(yīng)當(dāng)提供穩(wěn)定的綜合能力值。En和He的值越小,綜合能力值越穩(wěn)定,根據(jù)這一性質(zhì),定義cm+代表最好和cm-代表最壞情況下的理想解: 因此,開發(fā)者Λi對于子任務(wù)Ωj的勝任能力可用如下公式計算: Q[i,j]的值越大,說明開發(fā)者Λi完成子任務(wù)Ωj的質(zhì)量越高,Q[i,j]即作為Q矩陣中開發(fā)者Λi完成子任務(wù)Ωj的綜合能力值。最終,完成Q矩陣的取值。 基于上述分析,解決開發(fā)者推薦問題的關(guān)鍵步驟描述如下: 步驟1 確定開發(fā)任務(wù)的范圍向量L,開發(fā)者之間的沖突矩陣C。 步驟2 利用FAHP 方法分析指標(biāo)間的相對重要程度,并根據(jù)式(9)計算出開發(fā)者能力指標(biāo)權(quán)重,最終加權(quán)求和得到開發(fā)者歷史綜合能力評價集合。 步驟3 進一步將開發(fā)者綜合能力值轉(zhuǎn)化為綜合能力云模型,通過式(14)計算出開發(fā)者對每個任務(wù)的勝任能力,得到開發(fā)者綜合能力評估矩陣Q。 步驟4 在滿足式(2)~(5)的約束條件下求解式(1),最終得到開發(fā)者推薦矩陣T。 依據(jù)上述步驟,本文使用Java 中的cplex 優(yōu)化包來實際獲得一個開發(fā)者推薦問題的解決方案。首先,確定cplex 所需的約束系數(shù)、目標(biāo)函數(shù)系數(shù)、右側(cè)約束值以及上界和下界。通過Q、L、C、T來定義cplex 中的線性規(guī)劃問題。其中:T是一個變量,它的上界為1,下界為0。Q是目標(biāo)函數(shù)系數(shù)。然后,添加約束和目標(biāo)表達式,開發(fā)者推薦問題的目標(biāo)應(yīng)使用矩陣C、Q、T的一維數(shù)組形式以及L的線性表達式來描述。偽代碼如算法1 所示。 不同于傳統(tǒng)的推薦方法,基于E-CARGO 模型的開發(fā)者推薦的重點是考慮推薦完成后開發(fā)者之間的協(xié)作性,即開發(fā)者協(xié)同合作以求高質(zhì)量地完成特定的項目。因此,為了解決這一問題,本文考慮了開發(fā)者之間的協(xié)作性并使用E-CARGO 建模,以優(yōu)化整體任務(wù)完成質(zhì)量為導(dǎo)向,進行了開發(fā)者推薦。通過上述cplex 求解算法可以得到任務(wù)完成質(zhì)量達最大值ρ的推薦矩陣T。 假設(shè)某公司向開發(fā)者社區(qū)發(fā)布一項Web 開發(fā)任務(wù)Ω={Ω1,Ω2,Ω3},共有5 位開發(fā)者愿意接受任務(wù),構(gòu)成候選開發(fā)者集合Λ={Λ1,Λ2,Λ3,Λ4,Λ5}。由于Ω1、Ω2任務(wù)較重,各需2 人一起完成,任務(wù)范圍向量L=(2,2,1)。指標(biāo)集合k={k1,k2,k3,k4},分別表示溝通協(xié)作能力、專業(yè)技能水平、任務(wù)完成質(zhì)量、任務(wù)完成效率。通過開發(fā)者社區(qū)獲取各開發(fā)者完成同類任務(wù)的歷史能力指標(biāo)評價信息如表1 所示。 表1 能力指標(biāo)評價信息Tab.1 Ability index evaluation information 為了評估指標(biāo)權(quán)重,公司邀請兩位領(lǐng)域?qū)<覍Ω髦笜?biāo)進行一一比較,得到模糊互補判斷矩陣。由第一位專家給出的模糊互補判斷矩陣為: 根據(jù)式(6)計算出指標(biāo)權(quán)重向量W1=(0.275,0.225,0.250,0.250),根據(jù)式(8)得到X1的特征矩陣為: 由式(7)得到I(X1,W1*)=0.056 <0.1,滿足相容性,所以指標(biāo)權(quán)重向量W1的計算是正確合理的。同理,第二位專家給出的模糊互補判斷矩陣為: 計算出權(quán)重向量W2=(0.275,0.242,0.250,0.233),X2的特征矩陣為: I(X2,W2*)=0.038 <0.1,滿足相容性,故W2的計算正確合理。驗證X1、X2的相容性I(X1,X2)=0.038 <0.1,滿足相容性。最后,綜合兩位專家的評估結(jié)果,根據(jù)式(9)確定最終指標(biāo)權(quán)重向量W=(0.275,0.234,0.250,0.241)。對表1 進行加權(quán)求和,得到開發(fā)者歷史綜合能力集合如表2所示。 表2 開發(fā)者歷史綜合能力集合Tab.2 Historical comprehensive ability set of developers 根據(jù)式(10),計算出各開發(fā)者對各子任務(wù)的綜合能力云模型如表3 所示。 表3 各開發(fā)者對各子任務(wù)的綜合能力云模型Tab.3 Comprehensive ability cloud model of developers for different subtasks 根據(jù)式(13),得到綜合能力云模型的理想解為:cm+={0.809,0,0},cm-={0.626,0.081,0.03}。再根據(jù)式(14)得到開發(fā)者綜合能力評估矩陣Q如下所示: 另外,考慮開發(fā)者之間可能存在的沖突因素,添加沖突矩陣為: 最終,通過cplex 計算出任務(wù)完成質(zhì)量最大值ρ=3.236,得到開發(fā)者推薦矩陣T如表4 所示。 表4 開發(fā)者推薦矩陣TTab.4 Developer recommendation matrix T 因此,推薦開發(fā)者Λ3、Λ5完成子任務(wù)Ω1;開發(fā)者Λ1、Λ4完成子任務(wù)Ω2,開發(fā)者Λ2完成子任務(wù)Ω3。共同協(xié)作,得到最大的任務(wù)完成質(zhì)量ρ=3.236。 為了驗證所提方法的有效性和性能,通過使用仿真數(shù)據(jù),將本文方法與窮舉法及貪心法[21,29]相比較,進行實驗分析。本實驗在采用Intel Core i5-6200U 處理器@2.3 GHz 和8 GB 內(nèi)存的聯(lián)想筆記本上執(zhí)行,并使用Windows 10 操作系統(tǒng)、Eclipse 開發(fā)環(huán)境和Java 開發(fā)語言。在每一輪測試中,重復(fù)實驗100 次,每一次的Q、L、C隨機生成,并記錄下問題求解所花費的最大時間、最小時間、平均時間。實驗設(shè)定了不同的沖突率、不同的任務(wù)數(shù)和開發(fā)者人數(shù)比率,對比本文方法與窮舉法、貪心法的求解時間,N/A 表示超過30 min 沒有得到結(jié)果,同時對比本文方法求解值大于及等于貪心法的次數(shù),實驗數(shù)據(jù)如表5 所示。 從表5 可以看出:隨著開發(fā)者人數(shù)的增加,求解所耗費的時間也在增長。本文方法性能優(yōu)于窮舉法,例如,當(dāng)m=10,n=5,沖突率為0.1 時,本文方法平均求解時間為11.52 ms,窮舉法平均求解時間為86.96 ms。因為窮舉法考慮每一步中的所有情況,所以耗費大量時間,并且只有當(dāng)m=10 時,窮舉法才可以在30 min 內(nèi)獲得想要的結(jié)果,因此,窮舉法不適用于實際的開發(fā)者社區(qū)中。從表5 還可以看出,隨著沖突率的上升,本文方法所耗費的時間也在增加,而窮舉法所耗費的時間與沖突率之間沒有關(guān)聯(lián)。和貪心法進行對比,由于貪心算法只考慮小范圍內(nèi)的局部最優(yōu)解,所以求解時間更短,但在ms 的量級上可以忽略不計;而且貪心法獲得最優(yōu)解的次數(shù)遠遠小于本文方法,當(dāng)問題增大到一定規(guī)模時,貪心法并不能獲得全局最優(yōu)解,這說明,本文方法是優(yōu)于貪心法的。 從表5 還可以發(fā)現(xiàn),隨著n∶m的比值增大,問題求解的時間耗費更多,例如,當(dāng)m=40,n=13,沖突率為0.1(n∶m=1∶3)變?yōu)閙=40,n=20,沖突率為0.1(n∶m=1∶2)時,本文方法的平均求解時間由45.99 ms 增長為74.03 ms??梢妌和m的比值對本實驗的性能有很大影響。為了詳細研究其影響,設(shè)立了兩組實驗進行對比,每一組的m由10 變?yōu)?00,步長為10,n和m的比值分別為1∶5 及1∶3,沖突率為0.1,每一組重復(fù)實驗300 次,實驗結(jié)果如圖3 所示。 表5 本文方法與窮舉法及貪心法求解性能對比Tab.5 Solving performance comparison among the proposed method,exhaustive method and greedy method 由圖3 可以觀察到,隨著開發(fā)者人數(shù)和任務(wù)數(shù)的增長,求解時間也在增加,說明在實際求解過程中,隨著問題規(guī)模的增大,所耗費的時間也會增加。同時,當(dāng)任務(wù)數(shù)和開發(fā)者人數(shù)的比率(n∶m)出現(xiàn)增長,所耗費的求解時間也會增加,例如,當(dāng)m=100,比率由1∶5 增長為1∶3 時,最大、最小、平均求解時間由0.79 s、0.10 s、0.17 s 增加到1.28 s、0.20 s、0.30 s。盡管隨著問題規(guī)模增大,耗費時間會增加,但從實驗結(jié)果來看,問題規(guī)模即使提升到最大時,所耗費的最大時間也僅為1.28 s,完全在可接受范圍內(nèi)。因此,本文方法能夠以較快的速度求得最優(yōu)的開發(fā)者推薦結(jié)果,在實際的應(yīng)用中是有效的且性能良好的。 圖3 n∶m不同比值的性能對比Fig.3 Performance comparison of different ratios of n∶m 本文考慮軟件開發(fā)具有協(xié)作性這一顯著特點,將其描述為基于角色的協(xié)作系統(tǒng),并使用E-CARGO 模型對其建模,通過E-CARGO 模型中求解組角色分配的方法解決開發(fā)者推薦問題,提出了一種基于E-CARGO 模型的開發(fā)者推薦方法。首先使用E-CARGO 模型建模開發(fā)者與任務(wù)間的映射關(guān)系,然后結(jié)合FAHP 方法和云模型理論計算開發(fā)者的綜合能力值,最終通過cplex 得到最優(yōu)開發(fā)者推薦結(jié)果。在未來的研究工作中,將考慮開發(fā)者與任務(wù)間以及任務(wù)與任務(wù)間存在的沖突因素,解決在更為復(fù)雜約束條件下的開發(fā)者推薦問題。2.3 開發(fā)者綜合能力評估矩陣Q
2.4 開發(fā)者推薦問題求解
3 實驗與結(jié)果分析
3.1 實例
3.2 實驗分析
4 結(jié)語