簡體   English   中英

分配分配(線性編程)看起來很像

[英]Assignment allocation (linear programming) lookalike

我的工作需要在14天內完成。 我有5個工人。 有一天需要3名工人。 每個工人最多只能工作9天。 每個工人都有自己的日常偏好,每個工人每天都有不同的成本。

現在,我如何在數學術語中解決這個問題? 如何找到工人分配的最低成本?

我不認為這是賦值問題,因為匈牙利算法的設計使我只能找到1對1的賦值。 (在這種情況下,1名工人1天)

您需要解決此問題的是IP(整數編程)公式。 你的直覺是正確的,這與任務問題非常相似 - 我們基本上是指派工人在某些日子工作。

以下是制定問題的步驟:

決策變量 :(英文)哪個工作在哪幾天工作?

讓我們標記日期t (1..14)和工人w1到w5

所以,

X_wt = 1 if worker w works on day t

X_wt = 0 otherwise

這些約束現在相當簡單地寫下來了。 每天只需要3名工人。

X_1t + X_2t + X_3t + X_4t + X_5t = 3 for each t (1..14)

每個工人最多可以工作9天:

(sum over t=1..14) X_wt <= 9 for each w (1..5)

最后, 目標函數

C_wt成為第t天招聘工人的成本。 雙重總和:

Min (sum over w 1..5)(sum over t 1..14) C_wt

而且為了適應工人的偏好天數,你可以將另一組成本分層,比如P_wt

這是基本的表述。 然后,您將需要IP / LP解算器(例如CPLEXExcel Solver或R的optim庫)來獲得實際解決方案。

希望有所幫助。

這可以作為二分圖上的最小成本網絡流問題來解決。 每個工人代表一個供應9個單位的來源,每天代表一個需求為3的匯。每個供應和需求之間的弧都有容量1,並且相應於他們的偏好當天關閉的成本。 如果沿弧線流動,則意味着特定工人當天應該工作。

雖然這不能用匈牙利方法解決,但有幾種快速算法,包括網絡單純形

在代數上,該公式是

minimize sum_w sum_d p_wd x_wd
subject to
\sum_w x_wd = 3    forall d
\sum_d x_wd <= 5   forall w

如果p_wd是工人對第d天的偏好。 這是一個完全單模的約束矩陣,因此它不需要混合整數求解器。

它可能是bin-packing和tsp問題。 尋找容量的車輛路線問題。 它有許多問題,但你有3個工人。 在容量車輛路由中有x個工人。 它認為你需要更多的信息。

暫無
暫無

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

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