2016-02-04 56 views
0

我正嘗試在IBM CPLEX中編寫混合整數模型,並且遇到問題。問題如下:如何在建模LP時根據條件選擇參數?

學生可以採取幾種不同的課程,學生從課程中獲得的效用取決於學生和課程。具有挑戰性的部分是;某些課程的效用有時會與其單個公用事業的總和不同,如果它們被同一個學生聚集在一起。如果這個聯合公用設施爲零,則應考慮個別公用事業。在這一點上,我打算做的是編寫一個條件,使得該模型獲得共同的效用值,而不是這兩個課程的個別值,如果這些學生被這個學生錄取的話,但我無法做到這一點沒有非線性。

感謝您的幫助。

回答

1

首先,你的問題缺乏一個非常重要的信息:目標。

我假設我的目標是爲學生分配課程,讓學生通過課程獲得的總效用最大化。在這種情況下,任何學生可以通過任何課程獲得的所有工具都是已知的。從你的問題,我也明白,共同的公用事業也是已知的。因此,我們可以定義一個新的「參數」命名損失這樣損失(K,L)意味着「失去效用」當課程ķ由學生在同一時間採取量。這些值可以很容易地使用給定的數據來計算。然後,我們可以通過以下方式解決問題:

  • 瓦特(I,K)參數確定效用學生收益通過這門課k的量

  • X(I,K)是整型二進制可變確定是否學生需要當然ķ與否。

  • U(I,K)可變確定效用的實際量,從服用過程中的學生增益。

目標函數:

  • 最大化sumof(U(I,K))對所有學生和課程。

條件:

  • X(I,K) *瓦特(I,K)> = U(I,K)(面向全體學生和課程)

    這保證了學生i在課程k中的最大效用不能超過假定的(給定的,最大可能的)效用。當x(i,k)爲零時,這也保證u(i,k)被設置爲零。

  • X(I,K)瓦特(I,K) + X(I,L)W(I,L))> = U(I,K)+ U(I, l) - 所有「課程對」和所有學生的損失(k,l)

    這保證了學生在同一時間參加兩門課程獲得的公用事業總和不能超過聯合公用事業。