簡體   English   中英

Choco 中的約束

[英]Constraint in Choco

我找到了一個 Choco求解器作為使用 Java 的約束編程軟件。 我想了解更多。 我已經做了一些基本的例子。 但現在我想嘗試一些更復雜的事情(Pritsker 項目調度算法),我需要你的幫助。 為了取得進展,我必須了解如何對矩陣變量的行施加約束。 正是我需要保持總行數等於 1(任務只開始一次)。 我試過了,但沒有成功。 你能幫忙嗎? 我確實使用 Choco 2.1.5 我的矩陣如下:

int n = 10; // projects
int m = 12; // time horizon in months
IntegerVariable[][] x = new IntegerVariable[n][m];
int i, j;
for (i = 0; i < n; i++){
    for (j = 0; j < m; j++){
        x[i][j] = Choco.makeIntVar("x_" + i +"_" + j, 0, 1, Options.V_ENUM);
        model.addVariable(x[i][j]);
    }
}

您應該首先將變量定義為rowscolumns

然后,您可以使用文檔繼續。 像這樣的事情可能會有所幫助:

IntegerVariable[][] rows;
int n; //number of rows
for(int i=0; i<n; i++)
   model.addConstraint(eq(sum(rows[i], 1));

要在行上添加約束,您應該轉置矩陣並將約束應用於行:

transposed = ArrayUtils.transpose(x);
for(int i=0; i<n; ++i){
    model.sum(transposed[i], "=", 1);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM