I have often found it easiest to just do the naming in a separate loop over all the variables in an array, so something like (apologies for the approximate syntax):
for (i=0; i<M; i++)
for (j=0; j<N; j++)
X[i][j].setName(resourceName[i] + "_" + taskName[j]);
Obviously the setName() calls could be folded into the loop(s) where you actually create the variables if that is more convenient
But I never use the naming of the variables to convey useful information other than for my own debugging etc. I would usually walk over the variables in my code and use the values from CPLEX to decide what to draw in a user interface, create reports etc. based on the solution
manpreet
Best Answer
2 years ago
I have a straightforward (I hope) issue that I have been grappling with all day. I am trying to name a 2D decision variable in C++ using concert technology. My model is a real life assignment problem - so I need to index my variables with the actual resource and task names in order to provide the solution to the decision makers. This is easy with OPL using tuples. However, I am confused with concert technology. I have 2 decision variables (a) a 2D variable boolean variable that indicates which resource has been assigned to which task, and (b) a 1D boolean indicator variable that indicates if a particular resource has been selected in the assignment solution. It has been straightforward to name the 1D variable. I have the following Map which holds the name of the resources and their experience levels. I use this Map to iterate the variable and name it as follows:
So how do I do the following for the 2D variable. It is of the form Xij where i is the Resource Name and j is the Task Name. I have declared the variable as follows:
I have another Map which indicates the fit between i & j. It is:
Any ideas will be very appreciated!