나는 하루 종일 갈고 섰다. 콘서트 기술을 사용하여 C++에서 2D 결정 변수의 이름을 지정하려고합니다. 내 모델은 실생활 할당 문제입니다. 따라서 의사 결정자에게 솔루션을 제공하기 위해 실제 자원 및 작업 이름으로 변수를 색인해야합니다. 튜플을 사용하는 OPL에서는 쉽습니다. 그러나 나는 콘서트 기술과 혼동을 느낀다. 나는 2 개의 결정 변수 (a) 어떤 자원이 어떤 작업에 할당되었는지를 가리키는 2 차원 변수 부울 변수와 (b) 할당 솔루션에서 특정 자원이 선택되었는지를 나타내는 1D 부울 지시자 변수를 가진다. 1D 변수의 이름을 지정하는 것이 쉽습니다. 나는 자원의 이름과 그들의 경험 수준을 보유하고있는 다음지도를 가지고있다. 이 맵을 사용하여 변수를 반복하고 다음과 같이 이름을 지정합니다.이름 2D 변수 CPLEX 콘서트 기술 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;
난 내가 & J 사이의 적합성을 나타내는 또 다른지도를 다음과 같이 나는 변수를 선언했다. 그것은 :
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.
모든 아이디어는 매우 감사하겠습니다!