2

ビルトイン Gecode 6.1.1 で minizinc を使用しており、max int 32 よりもはるかに大きい値で目的関数を最大化したいと考えています。32 ビットの整数の最大値は 2147483646 です。多くの情報はないようですが、minizinc の参照で整数の最大値に関連して利用できるようにします。ただし、次のテストは、Minizinc が 32 ビット整数を使用していることを示しています。

テストは非常に単純で、var int を最大化しようとするだけです。

var int: maxInt;
constraint maxInt>0;

solve maximize maxInt;

output ["maxInt = \(maxInt)"];

結果は

maxInt = 2147483646

結果は int32 の最大値に近く、miniZinc はそれ以上「最大化」できないようです。次の例では、奇妙なエラーが返されます。

var int: maxInt;
constraint maxInt>2147483646;

solve maximize maxInt;

output ["maxInt = \(maxInt)"];

エラーメッセージは次のとおりです。エラー メッセージはあまり有益ではありませんが、2147483646 より大きい数値を使用しようとすると表示されます。

エラー: 行番号の整数リテラルが無効です。2 エラー: 構文エラー、予期しない ',' 行番号。2 プロセスはゼロ以外の終了コード 1 で終了しました

私の質問は次のとおりです: int64 ビット整数またはその他の大きな整数表現を minizinc で使用できますか? (フロートの使用はオプションではありません)理想的には、何かを最大化する方法の例が欲しいです

constraint maxLargeInt>2147483647;
4

2 に答える 2