2011-05-10 46 views
4

我有一個優化問題如下。數學編程問題

鑑於正整數,例如數組(y1 = 2, y2 = 3, y3 = 1, y4 = 4, y5 = 3),我的目標是最大化的函數f(x),其中f(x) = x if x + y <= mf(x) = 0否則這些值的總和。 (m是正整數)

例如,在該特定示例中上述(與m = 5),最佳x值爲2,作爲和將2 + 2 + 2 + 0 + 2 = 8,這是其它可能的值中的最高爲x(隱含,可能x將範圍從05

我當然可以詳盡地制定並比較結果通過所有可能的x值的總和,並選擇給出最高總和的X,條件是x的範圍是相當小。但是,如果範圍變大,則該方法可能變得非常昂貴。

我不知道是否有什麼我可以從東西使用像線性規劃,以更普遍,妥善解決這個問題。

+0

你回答了這個問題:http://en.wikipedia.org/wiki/Linear_programming#Standard_form。你能指出特定的問題,我可能看不到? – Igor 2011-05-10 00:59:44

+0

我不明白你的問題陳述。你在哪裏獲得y的價值? – ThomasMcLeod 2011-05-10 01:02:47

+1

你問了10個問題,從不投票。你收到的所有答案都不值得讚賞嗎? – 2011-05-10 02:59:28

回答

3

沒有必要線性規劃在這裏,只是一種和單次以確定最佳的X。

僞代碼:

getBestX(m, Y) { 
    Y = sort(Y); 
    bestSum = 0; 
    bestX = 0; 

    for (i from 0 to length(Y)) { 
     x = m - Y[i]; 
     currSum = x * (i + 1); 
     if (currSum > bestSum) { 
      bestSum = currSum; 
      bestX = x; 
     } 
    } 

    return bestX; 
} 

注意每一個我們知道i,如果x = m - Y[i]然後f(x) = x每個元素直至幷包括i,並f(x) = 0每個元素之後,因爲Y是按升序排列。

+0

這是一個很好的解決方案,因爲該排序提供了veredesmarald上面列出的不錯的屬性。雖然答案以編程的方式解決了這個問題,但我想知道我們如何能夠在數學上解決這個數學問題。 – skyork 2011-05-10 13:24:52