我有作業和員工的資料框,每個員工可以完成每項作業的持續時間。我想使用匈牙利演算法將每個作業分配給 1 個員工,每個員工只能分配 1 個作業。
這是資料:
J1 J2 J3
E1 3 5 2
E2 7 3 9
E3 4 2 7
E4 2 7 5
E5 6 8 8
預期的結果是:
J1 J2 J3
E1 0 0 1
E2 0 0 0
E3 0 1 0
E4 1 0 0
E5 0 0 0
然后列印出這個:
Job Employee
1 4
2 3
3 1
任何人都可以幫助我解決這個問題嗎?提前致謝!
uj5u.com熱心網友回復:
假設df輸入資料幀,您可以使用scipy.optimize.linear_sum_assignment:
from scipy.optimize import linear_sum_assignment
x,y = linear_sum_assignment(df)
out = pd.DataFrame({'Job': df.columns[y], 'Employee': df.index[x]})
輸出:
Job Employee
0 J3 E1
1 J2 E3
2 J1 E4
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/374293.html
