У меня есть простая (я надеюсь) проблема, с которой я боролся весь день. Я пытаюсь назвать переменную двумерного решения в C++, используя технологию концерта. Моя модель представляет собой проблему с реализацией жизненного цикла - поэтому мне нужно индексировать мои переменные с фактическими именами ресурсов и задач, чтобы обеспечить решение лицам, принимающим решения. Это легко с помощью OPL с использованием кортежей. Однако меня путают с технологиями концерта. У меня есть две переменные решения (a) двузначная переменная boolean, которая указывает, какой ресурс был назначен для какой задачи, и (b) 1D логическая индикаторная переменная, которая указывает, был ли выбран конкретный ресурс в решении назначения. Непосредственно назвать 1D переменную. У меня есть следующая Карта, которая содержит название ресурсов и их уровни опыта. Я использую эту карту, чтобы перебирать переменную и назовите его следующим образом:Имя 2D-переменные CPLEX Concert Technology C++
map<string, string> Map; // The first string holds the name and the second string the experience level
IloNumVarArray Y(env); // My 1D variable
map<string, string>::iterator Name; // Iterator for the Map
for (Name = Map.begin(); Name != Map.end(); Name++)
{
string getName = Name->first;
char convertedName[100];
strcpy_s(convertedName, getName.c_str());
Y.add(IloNumVar(env, 0, 1, ILOINT, convertedName));
}
Так как же я могу сделать следующее для переменной 2D. Он имеет вид Xij, где i - имя ресурса, а j - имя задачи. Я объявил переменную следующим образом:
IloArray<IloNumVarArray> X;
У меня есть другая карта, которая указывает на соответствие между я & у. Это:
Map<string, map<string, float>> fitMap; //first string is the resource name, second string is the` task name and the float is the fit value.
Любые идеи будут очень благодарны!