我遇到了一個特定問題。我必須安排5名員工在14天內工作。每個員工只能在14天內工作9天,每天必須安排3名員工。關鍵部分是每個員工在某一天工作都會有一定的懲罰。因此,如果他們當天無法工作,如果他們能夠工作,並且不介意其懲罰爲零,並且最後如果他們能夠但不希望其懲罰爲5,那麼他們的懲罰爲10。每個員工每天都有一個懲罰值矩陣。我試圖找到一種方法來寫出我的限制。 (i,j)= A(i,j)* B(i,j),我想到了矩陣A(罰分矩陣)和矩陣B(調度矩陣)和矩陣C.如果A(i,j)等於0(員工不工作),則給定此設置,那麼將不考慮懲罰,反之亦然。多對多「廣義分配」問題
於是我可以說作爲我的約束:
A(1,1)+ A(1,M)+ A(1,n)的< = 9
和
甲(1,1)+ A(m,1)+ A(n,1)= 3
並且我最小化:C(1,1)+ C(m,m)+ C(n,n)
我這樣看待它的問題是試圖在優化算法中使用它。單純形算法應該能夠解決任何LP問題,但它可能是最慢的。我被卡住了,現在我確信我正在看着這個錯誤的方式。如果任何人都可以給我一個新的眼睛,並可能解釋爲什麼我看着這個錯誤的方式,我將不勝感激。
您是否因爲需要更快速度而卡住了? – 2013-02-19 04:41:47
目前還不清楚你的問題是什麼。由於A(i,j)是二元變量,所以也不可能使用單純形法來解決這個問題。如果你的問題規模相當小,一個好的MIP求解器應該能夠達到足夠的容差。提供更多細節! – raoulcousins 2013-02-19 06:41:43
此問題與[護士名冊競賽]非常相似(http://docs.jboss.org/drools/release/5.5.0.Final/drools-planner-docs/html_single/index.html#d0e1680)。如果你正在尋找一個開源的實現來複制,[這裏是一個(不是MIP,但是metaheuristics)](https://github.com/droolsjbpm/drools-planner/tree/master/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain)(請參閱[本視頻](http://www.youtube.com/watch?v=7nPagqJK3bs)中的操作) – 2013-02-19 10:01:35