Skip to main content
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)



MainExecution:

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!

Alex
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)



Modell:

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?



Thanks

Alex
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)

Reply


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

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