When solving a multi-objective model, the solution process typically proceeds in phases, where each phase solves for one objective. The standard algorithmic parameters influence the strategy used to solve the overall multi-objective model. However, in some cases you may want finer-grain control over the strategies used in each phase. The solver enables this through multi-objective environments.
Multi-objective environments are created via API routines (in C, C++, Java, .NET, or Python). You set parameters on these environments as you would with any other environment, but in this case they only affect one of the several objective solves.
To give a simple example, in Python you could do the following:
# Create multi-objective environments env0 = model.getMultiobjEnv(0) env1 = model.getMultiobjEnv(1) # Set parameters on multi-objective environments env0.setParam('Method', 2) env1.setParam('Method', 1) env1.setParam('Presolve', 0) # Perform multi-objective optimization model.optimize()This would use the barrier solver (
Method=2) for the first objective, and the dual simplex solver (
Method=1) with no presolve (
Presolve=0) for the second. Note that you don't need a multi-objective environment for each objective - only for those where you want parameters to take different values from those of the model itself.