2013-10-15 11 views
2

我正嘗試在Java中使用JaCoP library進行優化,但是在翻譯我的函數時遇到了一些問題。在Java中使用JaCop來優化函數

我有一堆變量,說:x1到xn,我有一個函數使用它們輸出最大似然估計量(儘管它可能只是使用這些參數的任何函數)。

我知道如何在變量上設置約束,比如x1 + .. + xn < C(常量)。我無法弄清楚的是如何獲得最大化我上述功能的解決方案,如在中得到x1到xn,其中max(a_function(x1,..,xn))。

我現在沒有發佈任何代碼,因爲我唯一能做的就是對我的初始變量設置簡單的約束,如here所述。隨着JaCoP的進步,我會更新這個問題。

如果任何人都可以給我一個正確的方向如何設置這樣一個條件,它將不勝感激。

感謝

[編輯]

嗯,我騙......既然我已經Rcaller預先安裝在我的Java項目中,我將使用R鍵計算我的最大似然型號的限制。我被JaCop擊敗了。從數學的角度來看,R使用起來更加直觀,而且由於Rcaller「與Java」談得很好,所以我對結果非常滿意。

回答

1

它很好地隱藏,但有一個example包含成本函數。

所以IIUIC你需要像

IntVar cost = new IntVar(store, "cost", 0, 1000); 
net.setCostVariable(cost); 

如果你不HABE成本變量,只是創建和使用限制,以確保cost == a_function(x1,..,xn)。如果您想最大化,請翻轉標誌。

+0

謝謝。我已經放棄了JaCop,並將在Raller的幫助下使用R來計算我的約束函數,這些函數橋接Java和R.更直觀(對我來說)。 – Pane