Try our new documentation site (beta).
Multi-objective environments
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.