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?
Best answer by Chris Kuip
I created an example using GMP::Column::SetAsMultiObjective and drafted an associated How To article.
This example is based on the DietProblem from the AIMMS examples modified to minimize both price and calories.
Please find the example and the draft in pdf form enclosed.
With kind regards,