For one of my projects, I would like to use the functionality multi-objective optimization with tolerance via the procedure GMP::Column::SetAsMultiObjective. Unfortunately, the results are not as I expected. Therefore I made a very small example to test this procedure.
In the example, we have one variable (x1) which is nonnegative, one constraint (c1: x1 smaller or equal than 10) and two objectives: (obj1: x1 and obj: -x1). Moreover, the direction of the model (ex1) is maximize. To solve the example, I used the following code:
myGMP := GMP::Instance::Generate( ex1 );
GMP::Column::SetAsMultiObjective( myGMP, obj1, 2, 1, 2, 0);
GMP::Column::SetAsMultiObjective( myGMP, obj2, 1, 1, 0, 0);
GMP::Instance::Solve( myGMP );
Based on the first objective (with the highest priority), I would expect the solution to be x1 = 10. Then, since we also have a second object and we allow the obj1 to have an absolute tolerance equal to 2, I would expect that the final solution would be x1 = 8. Instead the solution is x1 = 0.
Is there something I am missing?
Kind regards,
Tom Luijten
Best answer by Chris Kuip
View original