Hi Daniel.
This is the piece of code I am using to set the parameters for each iteration:
IloArray<IloCplex::ParameterSet> params(env, 6);
for (int i = 0 ; i < 6; i++)
{
params[i] = IloCplex::ParameterSet(env);
params[i].setParam(IloCplex::Param::TimeLimit, 57600);
params[i].setParam(IloCplex::Param::Threads, 1);
params[i].setParam(IloCplex::Param::ClockType, 1);
params[i].setParam(IloCplex::Param::Advance, 1);
params[i].setParam(IloCplex::Param::Preprocessing::Symmetry, 5);
params[i].setParam(IloCplex::Param::SolutionType, CPX_BASIC_SOLN);
params[i].setParam(IloCplex::Param::Emphasis::MIP, 5);
params[i].setParam(IloCplex::Param::MIP::Tolerances::MIPGap, 0.05);
params[i].setParam(IloCplex::Param::MIP::PolishAfter::Nodes, 1);
params[i].setParam(IloCplex::Param::NodeAlgorithm, (*cplexModelParams), 2);
params[i].setParam(IloCplex::Param::RootAlgorithm, (*cplexModelParams), 4);
params[i].setParam(IloCplex::Param::MIP::Pool::Capacity, 20);
params[i].setParam(IloCplex::Param::MultiObjective::Display, 2);
params[i].setParam(IloCplex::Param::MIP::Display, 5);
params[i].setParam(IloCplex::Param::MIP::Limits::CutPasses, -1);
}
--------------------------
All the parameters are exactly the same as the ones I have configured for the global solve.
And here is the beginning of the resolution:
Version identifier: 12.10.0.0 | 2019-11-26 | 843d4de
CPXPARAM_ClockType 1
CPXPARAM_LPMethod 4
CPXPARAM_QPMethod 4CPXPARAM_Threads 1
CPXPARAM_SolutionType 1
CPXPARAM_MultiObjective_Display 2
CPXPARAM_MIP_Strategy_StartAlgorithm 4CPXPARAM_MIP_Strategy_SubAlgorithm 2
CPXPARAM_Emphasis_MIP 1
CPXPARAM_Preprocessing_Symmetry 5
CPXPARAM_MIP_Pool_Capacity 20
CPXPARAM_MIP_Limits_CutPasses -1
CPXPARAM_MIP_PolishAfter_Nodes 1
CPXPARAM_TimeLimit 345600
CPXPARAM_MIP_Tolerances_MIPGap 0.05
Multi-objective solve log . . .
Starting optimization #1 blending 8 objectives with priority 6.
CPXPARAM_ClockType 1
CPXPARAM_LPMethod 4
CPXPARAM_Threads 1
CPXPARAM_SolutionType 1
CPXPARAM_MultiObjective_Display 2
CPXPARAM_MIP_Display 5
CPXPARAM_MIP_Strategy_SubAlgorithm 2
CPXPARAM_Emphasis_MIP 1
CPXPARAM_Preprocessing_Symmetry 5
CPXPARAM_MIP_Pool_Capacity 20
CPXPARAM_MIP_Limits_CutPasses -1
CPXPARAM_MIP_PolishAfter_Nodes 1
CPXPARAM_TimeLimit 57600
CPXPARAM_MIP_Tolerances_MIPGap 0.05
------------
As you can see, everything is the same except for the ones in BOLD.
And when the optimization starts, CPLEX is using the dual simplex to solve the roor node instead of the Barrier algorithm.
But if I don<t specify any parameter set at all, then Barrier is used at the root node.
Serge
------------------------------
Serge Bisaillon
------------------------------
Original Message:
Sent: Thu September 10, 2020 01:21 AM
From: Daniel Junglas
Subject: Question about parameter sets for multiobjective solve with CPLEX in C++
Can you show your code? Is it analogous to what is done in the multi-objective example that ships with CPLEX (ilodiet.cpp).
------------------------------
Daniel Junglas
------------------------------
Original Message:
Sent: Wed September 09, 2020 01:31 PM
From: Serge Bisaillon
Subject: Question about parameter sets for multiobjective solve with CPLEX in C++
In fact, this C++ parameter ( IloCplex::Param::RootAlgorithm ) seems to be ignored whatever the algorithm chosen when used in parameter sets which is not the case for the NodeAlgorithm parameter.
------------------------------
Serge Bisaillon