動態規劃 達到最高效益的排程

2021-05-26 07:49:19 字數 1143 閱讀 1788

問題: 假設有一台機器,以及在此機器上處理的n個作業a1,a2,...an的集合。每隔作業aj有乙個處理時間tj,效益pj,以及最後期限dj。機器在乙個時刻只能處理乙個作業,而且作業aj必須在tj連續時間單位內不間斷地執行。如果作業aj在最後期限dj之前完成,則獲得效益pj,但如果在最後期限之後才完成,則沒有效益。請給出乙個動態規劃演算法,來尋找能獲得最大量效益的排程,假設所有的處理時間都是1到n之間的整數。

分析:

其實這個問題類似於01揹包問題。

1.    將a1,a2,…,an按照dj值排序,從小到大。假設接下來的分析中,已經保證當in),s[0][j] = 0(j = 0->d[n])。

3.    求s[i][j]的值,select[i][j]用於記錄是否選擇i。這裡遞迴包含了一種思想:如果第i個作業被排程,那麼最好使其在期限時正好結束,這樣能夠保證i之前的作業能夠在更充裕的時間內被排程。

view plaincopy to clipboardprint?

for i = 1->n  

for j = 1->d[i]  

//不排程i  

s[i][j] = s[i-1][min(j, d[i-1])]  

select[i][j] = false 

//排程i  

if j>t[i]  

if s[i][j] < s[i-1][min(j-t[i], d[i-1])]+p[i]  

s[i][j] = s[i-1][min(j-t[i], d[i-1])]+p[i]  

select[i][j] = true 

for i = 1->n

for j = 1->d[i]

//不排程i

s[i][j] = s[i-1][min(j, d[i-1])]

select[i][j] = false

//排程i

if j>t[i]

if s[i][j] < s[i-1][min(j-t[i], d[i-1])]+p[i]

s[i][j] = s[i-1][min(j-t[i], d[i-1])]+p[i]

select[i][j] = true

4.    最終s[n][d[n]]即為所求最高效益值。如果要求出所排程的作業序列,可以通過select取得。

動態規劃 達到最高效益的排程

問題 假設有一台機器,以及在此機器上處理的n個作業a1,a2,an的集合。每隔作業aj有乙個處理時間tj,效益pj,以及最後期限dj。機器在乙個時刻只能處理乙個作業,而且作業aj必須在tj連續時間單位內不間斷地執行。如果作業aj在最後期限dj之前完成,則獲得效益pj,但如果在最後期限之後才完成,則沒...

達到最高效益的排程

問題 假設有一台機器,以及在此機器上處理的n個作業a1,a2,an的集合。每隔作業aj有乙個處理時間tj,效益pj,以及最後期限dj。機器在乙個時刻只能處理乙個作業,而且作業aj必須在tj連續時間單位內不間斷地執行。如果作業aj在最後期限dj之前完成,則獲得效益pj,但如果在最後期限之後才完成,則沒...

雲計算中想實現最高效益比要看這5點

但是雲 混合模型的最大好處是,與傳統解決方案相比,它可以是成本的一半或更低,並且可以微調其實踐,以更好地在日益擁擠的市場中競爭。但是,雲容科技會提示您在雲中實現最高的成本 收益比,企業必須關注多種因素 雲計算中想實現最高效益比要看這5點 1 軟體許可和支援 大多數協議都是漫長而複雜的,規則通常會對遷...