Cplex is not considering multiple initial solution

When i provide multiple initial solution to cplex. it only consider first initial solution.

case 1: I gave 2 initial solution. below is the code and node file Code:

cplex.addMIPStart(startVar1, startVal1); cplex.addMIPStart(startVar, startVal);

Node file:

1 of 2 MIP starts provided solutions. MIP start 'm1' defined initial solution with objective 2107.1259. Aggregator has done 4433 substitutions... Tried aggregator 11 times. MIP Presolve eliminated 121597 rows and 66747 columns. MIP Presolve modified 423500 coefficients. Aggregator did 4922 substitutions. Reduced MIP has 87011 rows, 15912 columns, and 2020871 nonzeros. Reduced MIP has 15114 binaries, 0 generals, 0 SOSs, and 0 indicators. Presolve time = 26.58 sec. (20114.66 ticks) Probing fixed 462 vars, tightened 0 bounds. Probing time = 14.33 sec. (2238.26 ticks) Tried aggregator 2 times. MIP Presolve eliminated 3295 rows and 557 columns. MIP Presolve modified 11275 coefficients. Aggregator did 13 substitutions. Reduced MIP has 83703 rows, 15342 columns, and 1963759 nonzeros. Reduced MIP has 14557 binaries, 9 generals, 0 SOSs, and 0 indicators. Presolve time = 13.25 sec. (5471.85 ticks) Probing fixed 17 vars, tightened 0 bounds. Probing time = 3.92 sec. (285.75 ticks) Clique table members: 997492. MIP emphasis: balance optimality and feasibility. MIP search method: dynamic search. Parallel mode: deterministic, using up to 12 threads. Root relaxation solution time = 289.55 sec. (57735.17 ticks)

Case: 2 I gave only one initial solution Code: cplex.addMIPStart(startVar, startVal); Node file: 1 of 1 MIP starts provided solutions. MIP start 'm1' defined initial solution with objective 80.1562. Aggregator has done 4433 substitutions... Tried aggregator 11 times. MIP Presolve eliminated 121597 rows and 66747 columns. MIP Presolve modified 423500 coefficients. Aggregator did 4922 substitutions. Reduced MIP has 87011 rows, 15912 columns, and 2020871 nonzeros. Reduced MIP has 15114 binaries, 0 generals, 0 SOSs, and 0 indicators. Presolve time = 25.45 sec. (20114.66 ticks) Probing fixed 462 vars, tightened 0 bounds. Probing time = 6.91 sec. (2238.26 ticks) Tried aggregator 2 times. MIP Presolve eliminated 3295 rows and 557 columns. MIP Presolve modified 11275 coefficients. Aggregator did 13 substitutions. Reduced MIP has 83703 rows, 15342 columns, and 1963759 nonzeros. Reduced MIP has 14557 binaries, 9 generals, 0 SOSs, and 0 indicators. Presolve time = 7.50 sec. (5471.85 ticks) Probing fixed 17 vars, tightened 0 bounds. Probing time = 0.91 sec. (285.75 ticks) Clique table members: 997492. MIP emphasis: balance optimality and feasibility. MIP search method: dynamic search. Parallel mode: deterministic, using up to 12 threads. Root relaxation solution time = 127.17 sec. (57735.17 ticks)

Am i missing something or do i need to provide any other parameter. Please Help. Thank you in advance.

Upvotes: 0

Views: 323

Answers (1)

sascha
sascha

Reputation: 33522

(No CPLEX-user)

According to the docs (i'm not able to link directly to the part; ugly docs...):

There is not a method to create a MIP start from a multidimensional array of variables. In order to create a MIP start from a multidimensional array of variables, you first must copy all those variables into a flat array. See the topic "Starting from a solution: MIP starts" in the CPLEX User's Manual for a sample of this method with a multidimensional array.

and their C++ counterpart:

Unlike the method setStart, the method addMIPStart is not incremental. In other words, each call of addMIPStart creates a new MIP start.

it seems you need to do some preprocessing first and call a single-time!

But the non-incremental nature (mentioned in the C++ docs) is not mentioned in the Java-docs i think, so for me as non-CPLEX-user this is quite confusing, but after your observation, i would think i need the mentioned approach in the C++-docs.

Upvotes: 0

Related Questions