給定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上完成處理時間和,稱為該作業排...