2

私は minizinc で書かれた単純なモデルを持っており、最初に flat-zinc にコンパイルすることで解決するために gecode を使用しています。入力として、モデルはいくつかの定数、配列、および行列 (2 次元配列の形式) を取ります。モデルの出力は、いくつかの制約を満たす必要がある別の 2 次元マトリックスです。

ターゲットの最適化は、出力マトリックスの特定の関数であり、次のように定義される「ターゲット」の値を最小化することです。

var float: target = sum(i in 1..nodes, j in 1..nodes) (F(i, j) * output_matrix[i, j]);
solve minimize target;

このモデルを次のように実行すると:

mzn2fzn model.mzn model.dzn
fzn-gecode -a model.fzn

リストの最後のソリューションが最適であるという一連の可能なソリューションを見ることができます。ただし、出力ステートメントをモデルに追加して「ターゲット」変数の値を出力すると、解決策がまったく見つからずに gecode が何時間もハングし、中断された場合は ==UNKNOWN== が出力されます。

output [
"target: ", show(target), "\n"
];

これは予想される動作ですか? もしそうなら、その理由を説明していただけますか?

乾杯

4

2 に答える 2