Originally posted by: UDOPS
The distribution example for Lagrangian relaxation has the following pieces,
in the flow control:
norm = 0;
for(i in thisOplModel.cities) {
slack[i] = 0;
for (var j in thisOplModel.cities) {
slack[i]+= m2.Ship[j][i];
}
slack[i] -= thisOplModel.request[i];
norm += Opl.pow(slack[i],2);
}
in the related model:
dexpr float lagrangian_obj = sum(i in cities, j in cities) ship_cost
i,j * Ship
i,j + sum(j in cities) mult[j] * (request[j] - sum(i in cities) Ship
i,j);
Do you think I could rewrite this as below? In addition to making it easier to read, would it be more efficient?
in the model:
dexpr float request_slack
j in cities=sum(j in cities)(request[j] - sum(i in cities) Ship
i,j)
dexpr float lagrangian_obj = sum(i in cities, j in cities) ship_cost
i,j * Ship
i,j + sum(j in cities) mult[j] * request_slack[j];
changing the flow control:
norm = 0;
for(i in thisOplModel.cities) {
norm += Opl.pow(request_slack[i],2);
}
#DecisionOptimization#OPLusingCPLEXOptimizer