Minimax-Function with the AOA Solver?

  • 2 August 2019
  • 3 replies

Hi all,

i still need to implement a Minimax-Regret Function into Aimms. The Goal--Function is based on a deviation calculation by using the goal-programming approach. Therefore i added all the necessary constraints and variables. My main model looks like that:

MathProgramm: Minimax_Regret
Decision Variable Regret: max(k,sum(j,abs_Regret(j,k))) (k=scenarios and j= potential locations)

myGmp := GMP::Instance::Generate(Minimax_Regret);

GMPOuterApprox::CreateStatusFile :=1;
GMPOuterApprox::UseMultistart :=1;

GMPOuterApprox::DoOuterApproximation (myGmp);

But my model still genereates the following error:
GMP::Instance::CreateMasterMIP(): The objective column should be in the coefficient matrix exactly once.

Does someone know how to fix this?

Thank you very much!

3 replies

Userlevel 4
Badge +4
A better approach to model a minimax function is explained in Chapter 6.2 in the AIMMS Optimization Modeling book. With that approach the model remains linear.

With your current approach you have transformed your model into a nonlinear model. Note that there is no guarantee that AOA will find a global optimal solution, which is a disadvantage of this approach. The AOA error indicates that the objective variable Regret is used in a constraint with an index (or in multiple constraints), and AIMMS then generates multiple rows containing the objective variable which AOA cannot handle. To resolve this you would have to create a new variable RegretDummy with definition Regret and then define this new variable as the objective variable. But I advise you to use the modeling trick from the Optimization Modeling book.
Hi Marcel,

thanks for the quick answer. I completely understand your valid objection and i understand the description of the AIMMS Handbook for modeling a minimax function, but i don't know if i can apply this approach on my problem. I need to specify my Regret (R) as the maximum over all szenarios and over the sum of all potential locations. (the abs_Regret(j,k) is calculated by the real deviation of a location j minus the optimal deviation (=the minimum deviation) of a location in scenario k)

Minimize Regret
Regret = max(k,sum(j,abs_Regret(j,k)))
contraint like in the AIMMS Handboock would be than = sum(j, abs_Regret(j,k)) <= Regret (for all k) ??

In my opinion something is missing than, because when i want to determine my math. program (for example "Minimize" & Objective "Regret") than my Objective-Variable "Regret" needs a definition. It is not enough to put the Variable just in one constraint or am i wrong?

Of course i would like to handle a linear model, but i think it is not possible for a Minimax-Regret Function?

Userlevel 4
Badge +4
The objective variable should not have a definition. It should be sufficient to use a constraint with definition:

sum(j, abs_Regret(j,k)) <= Regret (for all k)


Didn't find what you were looking for? Try searching on our documentation pages:

AIMMS Developer & PRO | AIMMS How-To | AIMMS SC Navigator