【发布时间】:2014-09-12 23:33:39
【问题描述】:
我有一个直截了当(我希望如此)的问题,我整天都在努力解决这个问题。我正在尝试使用 Concert 技术在 C++ 中命名一个 2D 决策变量。我的模型是一个现实生活中的分配问题——所以我需要用实际的资源和任务名称来索引我的变量,以便为决策者提供解决方案。使用元组的 OPL 很容易做到这一点。但是,我对音乐会技术感到困惑。我有 2 个决策变量(a)一个 2D 变量布尔变量,指示哪个资源已分配给哪个任务,以及(b)一个 1D 布尔指示变量,指示是否在分配解决方案中选择了特定资源。 命名一维变量很简单。我有以下地图,其中包含资源的名称及其经验水平。我使用这个 Map 来迭代变量并将其命名如下:
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;
我有另一个地图,表明 i 和 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.
任何想法将不胜感激!
【问题讨论】:
标签: c++ mathematical-optimization cplex