I would like to do a multiple optimization in AIMMS. For example I would concurrently minimize the costs and maximize the amount of captured carbon dioxide.
How can I set this kind of optimization in AIMMS?
Best answer by Marcel HuntingView original
Note that you can specify only one optimization direction for the whole set of multi-objectives (minimization or maximization). However, by specifying a negative weight for an objective, you can reverse the optimization direction of any objective.
thanks for your responses. However, how can I set it in AIMMS?
For example, if I have to minimaze only the costs, I have to define the objective function and then select the mathematical programm that minimize it.
In the case of you objective function how can I write it?
You said you wanted to minimize costs and maximize CO2 captured
As Marcel already mentioned, you can only have a single direction to the multiple math programs to use CPLEX multi-objective. Say, vTotalCosts is the total cost objective and vCarbonCapture is the total CO2 captured.
thanks for your response.
Why have I to multiply vCarbonCapture for -1? Do you mean the value that should have the objective function? What are the meaning of priority, weight, abstol and reltol and how can I define these?
Is this the epsilon constraint method or just a method to solve the MOO?
I would have to find the pareto solution also.
Thank you very much.
AIMMS uses CPLEX or Gurobi to solve multi-objective optimization models. They can uses two methods, namely blended objective and lexicographic objective. If the lexicographic objective method is used then CPLEX/Gurob will return a pareto optimal solution (if both the relative and absolute tolerances are 0). The lexicographic objective method implies that you have to specify unique priorities for each objective. The meaning of priority, weight, abstol and reltol is explained in section 16.7 of the AIMMS Language Reference. How to set these values is illustrated by the example code provided by Mohan.
AIMMS (to be more precise, CPLEX/Gurobi) does not use the epsilon constraint method for solving multi-objective optimization problems.
thanks for your response. In the model vCarbonCapture is defined as a variable nonnegative? If so, how can I multiply it for -1?
Using lexicograph method priority is defined by the optimization order. Is the weight set as in the shown model above?
Can I use the epsilon constraint model if I write a code for it?
(vCarbonCapture should have a definition or be used in a constraint otherwise the model would be unbounded.)
The weight is indeed set as in the above model. If all priorities are unique then the weights are not important and you can just use 1 for all weights.
You could implement the epsilon constraint model in AIMMS but it could be a lot of work. You could first try the lexicograph method to see whether you obtain good results.
thanks for your response and your help.
If I want to implement it with the epsilon contraint, can you give me some indications?
I want to write a code in the MainExecution section.
I want to consider in the first cycle a constraint, but I wan't to consider this constraint in the second cycle.
How can I write this?
can I consider acceptable a pareto front with the trend in the figure?