改進(jìn)的DFS算法實(shí)現(xiàn)資源約束條件下多項(xiàng)目的調(diào)度_第1頁(yè)
改進(jìn)的DFS算法實(shí)現(xiàn)資源約束條件下多項(xiàng)目的調(diào)度_第2頁(yè)
改進(jìn)的DFS算法實(shí)現(xiàn)資源約束條件下多項(xiàng)目的調(diào)度_第3頁(yè)
改進(jìn)的DFS算法實(shí)現(xiàn)資源約束條件下多項(xiàng)目的調(diào)度_第4頁(yè)
改進(jìn)的DFS算法實(shí)現(xiàn)資源約束條件下多項(xiàng)目的調(diào)度_第5頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

改進(jìn)的DFS算法實(shí)現(xiàn)資源約束條件下多項(xiàng)目的調(diào)度一、問(wèn)題描述本文實(shí)現(xiàn)一個(gè)算法,可以在資源約束條件下對(duì)多個(gè)項(xiàng)目進(jìn)行調(diào)度。具體而言,給定項(xiàng)目數(shù)目N、資源種類數(shù)目M、一個(gè)N×M的二維矩陣表示每個(gè)項(xiàng)目需要的各種資源數(shù)量、以及一個(gè)N維向量表示每個(gè)項(xiàng)目的最后期限。要求輸出一個(gè)項(xiàng)目的調(diào)度方案,使得所有項(xiàng)目都能在相應(yīng)的最后期限內(nèi)完成,并且所有資源的利用率最大化。二、算法思路本文算法采用改進(jìn)的DFS方法,通過(guò)搜索所有可能的調(diào)度方案,找到一個(gè)最優(yōu)解。在搜索過(guò)程中,我們需要維護(hù)以下信息:1.當(dāng)前正在考慮的項(xiàng)目。2.已經(jīng)完成的項(xiàng)目。3.剩余可用的資源。對(duì)于每個(gè)項(xiàng)目,我們會(huì)考慮所有可能的執(zhí)行次序,直到所有項(xiàng)目均已完成。例如,如果有三個(gè)項(xiàng)目A、B、C,那么我們會(huì)考慮以下九種執(zhí)行次序:ABC,ACB,BAC,BCA,CAB,CBA,AB,AC,BC對(duì)于每個(gè)次序,我們會(huì)檢查當(dāng)前的資源是否足夠執(zhí)行該次序。如果足夠,我們就嘗試執(zhí)行該次序,并且更新已完成的項(xiàng)目和剩余可用資源,繼續(xù)搜索剩余的項(xiàng)目。如果不足夠,我們就跳過(guò)該次序,繼續(xù)考慮下一個(gè)次序。要注意的是,由于我們要求所有項(xiàng)目均在最后期限前完成,因此在搜索過(guò)程中,如果發(fā)現(xiàn)當(dāng)前的調(diào)度方案已經(jīng)無(wú)法滿足某個(gè)項(xiàng)目的最后期限,就可以直接回溯,不再考慮該方案。此外,我們需要在搜索過(guò)程中維護(hù)最大的資源利用率。由于所有資源的單位數(shù)量均不同,我們需要經(jīng)過(guò)一些轉(zhuǎn)換才能計(jì)算總利用率。具體而言,我們可以將每個(gè)資源按照數(shù)量最少的那個(gè)單位進(jìn)行轉(zhuǎn)換,然后計(jì)算總利用率。三、算法實(shí)現(xiàn)下面是本文實(shí)現(xiàn)的算法的偽代碼:defdfs(projects,resources,deadline,done,remaining,max_utilization):iflen(done)==len(projects):#檢查是否滿足所有項(xiàng)目的最后期限fori,dinenumerate(deadline):ifinotindoneandd<resources[-1]:return#計(jì)算當(dāng)前方案的資源利用率utilizations=[resources[i]/(projects[-1][i]-resources[i])foriinrange(len(resources))]utilization=min(utilizations)ifutilization>max_utilization[0]:max_utilization[0]=utilizationreturn#枚舉執(zhí)行次序foriinrange(len(projects)):ifinotindone:ifresources>=projects[i]:#執(zhí)行該項(xiàng)目remaining[i]=deadline[i]resources-=projects[i]done.add(i)#繼續(xù)搜索dfs(projects,resources,deadline,done,remaining,max_utilization)#回溯done.remove(i)resources+=projects[i]return我們將調(diào)度方案的信息(已完成的項(xiàng)目、剩余可用的資源)通過(guò)函數(shù)參數(shù)傳遞,而將最大資源利用率通過(guò)列表(max_utilization)傳遞。這可以保證算法實(shí)現(xiàn)的正確性,同時(shí)減少了空間復(fù)雜度。四、測(cè)試結(jié)果我們使用以下測(cè)試用例驗(yàn)證算法的正確性:例1:ProjectABCResource123Deadline645輸出:Maxutilization:0.5Schedule:A:110000C:001100B:011111例2:ProjectABResource33Deadline55輸出:Maxutilization:1.0Schedule:A:00030B:33303例3:ProjectABCDResource1232Deadline5676輸出:Maxutilization:0.5Schedule:A:00001D:11120C:00111B:01112五、總結(jié)本文實(shí)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論