2017-09-21 6 views
0

複雑な変数が制約を満たしているかどうかチョコをチェックインする方法は? CONFIG1 = {20、24、10、3、4}とCONFIG2 = {20、13、1、3、4}チョコの複雑な変数

int[][] configurations = new int[][] { 
     {20, 24, 10, 3, 4}, 
     {20, 13, 1, 3, 4}}; 

:例えば、私は構成の次のリストを持っている場合

int[] constraints = new int[]{21, 15, 2, 10, 10}; 

は、構成内の各要素が対応する制約よりも高い(または低い)必要があるような制約のリストです。例えば:すべての制約が満たされている場合 CONFIG1 = {20、24、10、3、4} 制約= {21、15、2、10、10}

check if config1[0] < constraints[0] AND config1[1] < constraints[1] AND ... 

は、次にちょうどとしてマーク溶液。これは私が持っているものです。

// c = number of configurations 
// q = number of elements in each configuration 
// p = configurations matrix 

for (int i = 0; i < c; i++) { 
     for (int j = 0; j < q; j++) { 
      model.arithm(model.intVar(p[i][j]), "<", model.intVar(k[j])).post(); 
     } 
} 

答えて

1

CPは変数と制約に依存しています。最初に変数を作成してから制約を設定する必要があります。あなたの問題のちょっとした入力であるint配列を "constraints"と呼んではいけません。

ここで簡単なチョコの例を見つけることができます: - https://www.cosling.com/choco-solver/hello-world 私はこのこんにちは単語が必要なもので十分だと思います。もっと深く知りたいのなら、これを読んでください:http://choco-tuto.readthedocs.io/en/latest/

+0

私の質問は、全体の構成をとるように制約と変数をどのように定義するのですか?例えば、私の構成に3つの要素(a、b、c)と制約の配列(x、y、z)があり、制約を満たすだけでなく、それらのうちのいくつかを最小化(および最大化)したい場合、 Andrei

関連する問題