[英]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]);
}
}
您應該首先將變量定義為rows
和columns
。
然后,您可以使用此文檔繼續。 像這樣的事情可能會有所幫助:
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.