批處理作業排程問題 回溯法

2021-10-04 04:14:12 字數 1543 閱讀 6598

給定n個作業,集合j=(j1,j2,j3)。每乙個作業ji都有兩項任務分別在2臺機器上完成。每個作業必須先有機器1處理,然後再由機器2處理。作業ji需要機器j的處理時間為tji。對於乙個確定的作業排程,設fji是作業i在機器j上完成處理時間。則所有作業在機器2上完成處理時間和,稱為該作業排程的完成時間和。即f12+f22+f32+…+fn2

簡單描述:

對於給定的n個作業,指定最佳作業排程方案,使其完成時間和達到最小。

從n個作業中找出有最小完成時間和的作業排程,所以批處理作業排程問題的解空間是一棵排列樹。

類flowshop的資料成員記錄解空間的結點資訊,m輸入作業時間,bestf記錄當前最小完成時間和,陣列bestx記錄相應的當前最佳作業排程。

陣列x[i],bestx[i],二維陣列m[j][i];

陣列x記錄當前排程;

bestx記錄當前最優排程;

初始時,x[i]=i ; bestx[i]=∞; (i=0,1,…,n)

二維陣列m記錄各作業分別在兩台機器上的處理時間;

m[j][i]表示在第i臺機器上作業j的處理時間

變數f1,f2,cf,bestf;

f1記錄作業在第一台機器上的完成時間和;

f2記錄作業在第一台機器上的完成時間和;

cf記錄當前在第二台機器上的完成時間和;

bestf記錄當前最優排程的完成時間和;

示例:tji 機器1 機器2

作業1 2 1

作業2 3 1

作業3 2 3

最優排程順序:1 3 2

在遞迴函式backtrack中,

當i>n時,演算法搜尋至葉子結點,得到乙個新的作業排程方案。此時演算法適時更新當前最優值和相應的當前最佳排程。

當i<=n時,當前擴充套件結點在i層,以深度優先方式,遞迴的對相應子樹進行搜尋,對不滿足上界約束的結點,則剪去相應的子樹。

//非葉子結點

f1-=m[x[j]][

1]; cf-

=f2;

f2=tempf;}}

}int

main()

/*測試資料:

回溯法 批處理作業排程 回溯法 批處理作業排程

問題描述 給定n個作業的集合j j1,j2,jn 每乙個作業ji都有兩項任務分別在2臺機器上完成。每個作業必須先有機器1處理,然後再由機器2處理。作業ji需要機器j的處理時間為tji。對於乙個確定的作業排程,設fji是作業i在機器j上完成處理時間。則所有作業在機器2上完成處理時間和f f2i,稱為該...

回溯法 批處理作業排程問題

給定n個作業的集合j j1,j2,jn 每乙個作業ji都有兩項任務分別在2臺機器上完成。每個作業必須先由機器1處理,然後再由機器2處理。作業ji需要機器j的處理時間為tji i 1,2,n j 1,2。對於乙個確定的作業排程,設fji是作業i在機器j上完成處理的時間。則所有作業在機器2上完成處理的時...

批處理作業排程(回溯法)

1.問題描述 給定n個作業,集合j j1,j2,j3 每乙個作業ji都有兩項任務分別在2臺機器上完成。每個作業必須先有機器1處理,然後再由機器2處理。作業ji需要機器j的處理時間為tji。對於乙個確定的作業排程,設fji是作業i在機器j上完成處理時間。則所有作業在機器2上完成處理時間和,稱為該作業排...