我想用CPLEX-C#解决MILP问题。我的问题的规模很大,为了提高CPU时间,我想使用初始解决方案。我想将这个解决方案添加到cplex中,并开始用这个给定的初始解决方案来解决问题。我用下面的代码:用C#上的给定初始解决方案启动CPLEX(Concert技术)
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;
}
在该代码中,我有多维数组决策变量X[i][j]
(二进制决策变量)和值等于start[i][j]
。 start[i][j]
的值存储为double [] array
作为参数。当我运行的代码,以下错误出现:
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!
我有两个问题:1 ),其中部分型号我必须把这个代码? (我的所有约束后,意味着和增加客观的价值,并呼吁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个继续)在我的MIPSTART中,我只给出其中一个值(X [i] [j])的值。我是否需要为其余两个变量设置初始值? –
我不认为你需要提供所有变量的值。您报告的错误是您尝试为不在模型中的变量提供mipstart值时得到的错误。另外,如何只有2个二进制和1个连续变量 - 代码中的变量数量应该是一个平方数,即numberOfAllNode * numberOfAllNode。 numberOfAllNode有多大? – TimChippingtonDerrick