2016-07-13 75 views
2

我正在使用JaCoP--一種用於Java的約束規劃求解器 - 來計算複雜調度問題的解決方案。現在我面臨着找到的解決方案不正確的問題。約束規劃求解器JaCoP解決方案找到但存儲不一致

我施加以下約束:

store.impose(new XplusYeqZ(start, duration, cipStart)); 

完成搜索求解找到解決辦法後,無奈的解決方案顯然是錯誤的,違反上述約束。

我在開始搜索前檢查商店與consistency()的一致性,它返回true,但在搜索後返回false

我還遍歷商店的所有約束的搜索之後和印刷如果使用此代碼滿足:

store.getConstraints().forEach(constraint -> { 
      System.out.println(constraint.id() + " " + constraint.satisfied()); 
}); 

的上述方法返回false上實施該約束。

我的問題是:是否有合理的解釋,爲什麼不是每個約束都必須滿足正確的解決方案?我可以忽略一些東西嗎

附錄:我使用JaCoP 4.4.0

+1

某些求解器在處理某些問題時遇到了整數溢出/下溢問題。你可能會碰到這個。 – TLW

回答

1

首先,當你搜索,你應該檢查搜索結果(真/假)。如果結果爲false,則模型不一致,並且商店處於未定義狀態。你的問題可能是這種情況。

+0

你的意思是檢查後檢查'標籤'的返回值嗎?我正在這樣做,返回值是'true'。或者你的意思是不同的? –