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

2021-05-26 13:48:47 字數 693 閱讀 5446

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

批處理作業排程問題要求對於給定的n個作業,制定最佳作業排程方案,使其完成時間和達到最小。

分析:批處理作業排程問題要從n個作業的所有排列中找出最小完成時間和的作業排程,所以批處理作業排程的解空間是一顆排列樹。按照回溯法搜尋排列樹的演算法框架,設開始時x=[1,2,...,n]是所給的n個作業,則相應的排列樹由x[1:n]的所有排列構成。

遞迴回溯

#include using namespace std;

class flowshop;

int flow(int **,int, int );

void swap(int &a, int &b)

class flowshop

;void flowshop::backtrack(int i)

else

for(int j=i; j<=n; ++j) // 因為問題的解空間是一顆由x[1:n]的所有排列構成的排列樹

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

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

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

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

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

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