2013-11-23 36 views
0

我有LP問題 它類似於工人 我有一個約束分數3次分配(約束1比限制2更重要)線性規劃 - 多目標優化。如何建立單一功能

     Constraint1 Constraint2 
assign1    590   5    

assign2    585   580    

assign3    585   336    

我現在的貪心求解器分配問題比較第一個約束的分配。最好的一個成爲一個解決方案。求解器將比較約束條件2當且僅當他找到兩個具有先前約束的相同得分值的賦值,等等。

對於第一輪中的給定示例,assign2和assign3將被選中,因爲它們具有相同的最低限制分數。第二輪求解器選擇assign3後。所以我需要一個代表這種行爲的成本函數。

所以我預計

assign1_cost> assign2_cost> assign3_cost。

它可以做嗎? 我相信我可以應用一些加權數學函數或類似的東西。

+0

不知道這是否是LP。看起來你需要一些if-then-else邏輯來實現,循環遍歷。它是否必須是LP? –

回答

0

有兩種方法可以簡單地做到這一點,我所知道的:

  1. 假設你可以把一個上限每個目標函數(除了第一個)。然後你重寫你的目標如下:(objective_1 * max_2 + objective_2) * max_3 + objective_3等,並儘量減少所述目標。舉例來說,你知道objective_2將小於1000.然後你可以解決,最小化objective_1*1000 + objective_2。如果你的上限過大,這可能會導致一些求解器失敗。

  2. 該方法需要n求解器迭代,其中n是目標的數量,但是通用 - 它並不要求您事先知道上限。解決,儘量減少objective_1並忽略其他目標函數。添加約束條件即objective_1 == <value you just got>。求解,最小化objective_2並忽略剩餘的目標函數。重複,直到你完成了每一個目標函數。