簡體   English   中英

如何為這個調度和資源分配問題建模

[英]How to model this scheduling and resource allocation problem

我要實現以下作業/資源調度問題:

  • 一個DAG作業,其中邊緣編碼優先級關系。
  • 如果作業沒有優先級關系,則可以並行執行
  • 多個資源池,每個資源池包含一個或多個相似資源。
  • 一項作業可能取決於一個或多個池中的一個或多個資源。 即,作業J1表示類似:“我需要池P1中的2個資源和池P2中的7個資源。”
  • 一份工作可能表示它想要與其直屬前任之一完全相同的資源。 也就是說,作業J2可能會說:“我需要池P1中有1個資源,但是它必須是作業J1被分配的資源之一。” 為了簡化起見,我假設作業J2必須是此類約束的J1的直接后繼。
  • 可以讀取或寫入資源依賴關系,或者同時讀取或寫入資源,或者“無關緊要”
  • 當作業J1說它向池P1中的資源進行寫操作時,其后續作業J2對“與從P1中獲得的J1相同的資源”具有讀取依賴性。 在這兩者之間,由於資源是有狀態的,因此該資源不可用於其他作業進行寫入。
  • 我不知道每個工作的提前執行時間,也沒有工作的優先級和截止時間要求。

我在尋找:

  1. 在正式領域表達這個問題的方法,
  2. 離線可調度性測試,回答是否可以在給定的要求和約束下執行作業圖的問題。
  3. 關於在線調度算法的建議

如果沒有資源池,但是每種類型只有一個資源,則問題可能會簡單得多。 我熟悉圖論和簡單數據流分析算法的基礎知識。

我想我會通過引入“命名資源”的概念來修改您的描述,其中命名資源是名稱和未命名資源的集合。 然后,作業可以依賴於已命名和未命名的資源,並且每個已命名的資源必須從使用該資源的第一個作業開始到使用該資源的最后一個作業結束之間都保持駐留狀態。

正式地,我們有

  • n個工作J = {0,1,…,n-1}
  • J上的一個不反身的,可傳遞的優先級關系≺
  • 一組資源類型R
  • 一組名稱X
  • 從R到ℕ的映射A指示可用資源(其中ℕ= {0,1,2,…}是自然數)
  • 地圖自J到ℕřû指示未命名的資源需求(ℕR是選自R到ℕ映射)
  • 從J到2 X的映射Y,指示命名資源需求(2 XX的子集)
  • 從X到R的映射Z,指示命名資源的組成。

為了檢查計划的可行性,沒有必要並行運行作業。 因此,我們想要的是適合的<的線性擴展。 用更接近求解器處理能力的形式,我們可以定義<從J到滿足的{0,1,…,n-1}的雙射π中

  • 所有J任務1≺Ĵ2,我們有π(j 1)<π(j 2)[<是一個線性延伸]
  • 對於{0,1,…,n-1}中的每次t,使用的資源均不超過可用資源。 形式上(urgh),對於每個命名資源x∈X,令s x和e x為{π(j)|的最小值和最大值。 j∈J∧x∈Y(j)} [即,每個作業的時間取決於x]。 那么對於所有t,我們想要

Σ 的x∈X [秒X≤噸≤E X] Z(x)的+ U(π-1(t))的≤A,

其中[condition]是Iverson括號(如果滿足條件,則為1,否則為0),≤是向量上的標准偏序。

為了測試日程安排的可行性,我將向CP-SAT求解器(例如https://developers.google.com/optimization/cp/cp_solver )提供類似這種表述的內容。

為了進行在線調度,我將使用Dijkstra的Banker算法的變體,該算法使用脫機測試來查看是否可以安全地開始依賴項已完成的作業。 因為可以開始多個作業,所以這將使並行性恢復。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM