CPLEX-C#でMILPの問題を解決したい。私の問題のサイズは大きく、CPU時間を改善するために、私は初期のソリューションを使いたいと思っています。このソリューションをcplexに追加して、この初期ソリューションで問題を解決したいと思います。 Iは、多次元配列決定変数X[i][j]
(バイナリ決定変数)を有しており、値がstart[i][j]
に等しいこのコードでCPLEXをC#(コンサート技術)で与えられた初期解で起動する
try
{
startvar = new INumVar[numberOfAllNode * numberOfAllNode];
startval = new double[numberOfAllNode * numberOfAllNode];
for (int i = 0, idx = 0; i < numberOfAllNode; i++)
for (int j = 0; j < numberOfAllNode; j++)
{
startvar[idx] = X[i][j];
startval[idx] = start[i][j];
idx++;
}
startvar = null;
startval = null;
cplex.AddMIPStart(startvar, startval,Cplex.MIPStartEffort.SolveMIP);
}
catch (ILOG.Concert.Exception)
{
throw;
}
:私は、次のコードを使用します。 start[i][j]
の値は、パラメータとしてdouble [] array
として格納されます。私は、コードを実行すると、以下のエラーが登場している:私はこのコードを配置する必要がモデルの一部が 1):
Warning: No solution found from 1 MIP starts.
Root node processing (before b&c):
Real time = 5.07 sec. (2238.50 ticks)
Parallel b&c, 4 threads:
Real time = 0.00 sec. (0.00 ticks)
Sync time (average) = 0.00 sec.
Wait time (average) = 0.00 sec.
------------
Total (root+branch&cut) = 5.07 sec. (2238.50 ticks)
Couldn't Solve The Problem!
は、I 2つの質問がありますか? (私はすべての制約の後を意味し、目標値を追加し、addMinまたはaddMaxを呼び出すか、それらの前に?)
2)私はstartvar = null; startval = null;
を称賛すると、私はエラー、次のしている:
An unhandled exception of type 'ILOG.CPLEX.Cplex.UnknownObjectException' occurred in CPLEX.exe
Additional information: CPLEX Error: object is unknown to IloCplex
をあなたができれば、私は感謝この問題に対処するために助けてください。
ご返信ありがとうございます。私の問題は3つの決定変数(2つのバイナリと1つ続けている)を持っています。私はそれらのうちの1つ(X [i] [j])だけの値を与えます。残りの2つの変数の初期値を設定する必要がありますか? –
すべての変数に値を指定する必要はないと思います。報告したエラーは、モデルに含まれていない変数のmipstart値を指定しようとした場合のエラーです。また、2つのバイナリと1つの連続変数のみを持つこともできます。コード内の変数の数は、numberOfAllNode * numberOfAllNodeの2乗でなければなりません。 numberOfAllNodeの大きさはどれくらいですか? – TimChippingtonDerrick