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
Page 1 / 1
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.
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
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)
sum(j, abs_Regret(j,k)) <= Regret (for all k)
Reply
Sign up
Already have an account? Login
Please use your business or academic e-mail address to register
Login to the community
No account yet? Create an account
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.