2016-05-01 10 views
0

私はチョコのミニモデルを移植しようとしています。私は変数や他の基本的なものを定義する方法を知っていますが、チュートリアルといくつかのコード例を読んだにもかかわらず、私はいくつかの些細な制約を定義する上で問題があります。 チョコソルバースタイルで次のコード(ちょうどz)をどのように翻訳するのかアドバイスをくれますか?チョコソルバー制約/変数定義

array[1..n,1..n] of int: c; 
array[1..n] of var 0..10: next; 

var 0..sum(c): z = sum(i in 1..n)(c[i,next[i]]); 

ありがとうございます!

答えて

0

私はあなたが行のiと列next [i]の行列cの整数を取り出すc [i、next [i]]にあるように、総和制約を投稿する方法を知っていると思います。問題はnext [i]が変数なので、(Java)配列に直接アクセスすることはできません。あなたは要素の制約(つまり、minizincでもある)を使用する必要があり

/** 
* Creates an element constraint: value = table[index] 
* 
* @param value an integer variable taking its value in table 
* @param table an array of integer values 
* @param index an integer variable representing the value of value in table 
*/ 
default Constraint element(IntVar value, int[] table, IntVar index) 

を使用すると、マトリックスと連携して、あなたはそれぞれの行のためにそれを行うし、それらの上に合計を掲示する必要があります。

Javaでは、配列セルは0からn-1まで(minizincは1からnまで)アクセスされるため、モデルを適切に更新するか、オフセットを使用する必要があるかもしれません。

希望これは

https://www.cosling.com/

を支援します