2016-09-30 14 views
0

Ilog Cplexを使ってC++で数学モデルを実装しました。私の決定変数の大半は、最適解では分数値を持っています。それらの中には、cplexが0として出力するものが非常に小さいものもあります。そのような変数の値がまだわかるように精度を上げる方法はありますか?計算の精度C++ Cplex

また、cplex.getBestObjValue()を使用すると、「-Inf」と表示されます。 (これは、最大化問題である。)

答えて

0

あなたがのParam ::強調::

は数値的に不安定または困難な問題の精度を強調した数値設定IloCplex ::を使用することを試みることができます。このパラメータを使用すると、CPLEXに、数値的に困難または不安定な問題の精度を強調し、時間とメモリのパフォーマンス上のトレードオフを強調する必要があることを指定できます。

あなたの2番目の質問について、あなたのモデルはLPですか?

に関して非常に正常である(ただし、厳密に)整数値に近い整数の変数の値を持つ

+0

あなたの答えをありがとう。 IloCplex :: Param :: Emphasis :: Numericalの設定を使用しているとき、どのように精度を指定できますか?このパラメータの使用方法の例を教えてください。そして、はい、私のモデルはLPです。 – user2147241

+0

デフォルト値は0です。数値精度を強調しないでください。しかし、1は、計算において運動に非常に注意を払うことを意味する –

1

。 CPLEXは、これらの値が正しい整数値に十分近づくように、完全性公差を持っています。標準のC++出力関数を使用して、これらの値を任意の精度で出力するだけです。

ほとんどの場合これは問題ではありませんが、必要に応じてより小さい値に統合性許容値を設定できます。私は通常、これらの値を最も近い整数値に丸め、それを私の解決策として使用します。これらの決定変数を丸められた整数値に固定してモデルを再解析して、そのソリューションが本当に有効であることを確認することもできます。それが十分であるかどうかわからない場合は、アレックスの数値的な強調についてもお試しください。

関連する問題