我正在使用 IBM CPLEX 通过 C++ API 对约束程序进行建模。
我已经声明了一个 bool var 数组:
IloEnv env;
IloBoolVarArray bVars(env);
然后我将 3 个变量添加到数组中并为它们分配名称,如下所示:
bVars.add(IloBoolVar(env,"a"));
bVars.add(IloBoolVar(env,"b"));
bVars.add(IloBoolVar(env,"c"));
我的问题是:
我是否需要知道该数组中变量的索引(0,1 或 2)才能在表达式中引用/使用该变量?
我似乎找不到一种方法来使用分配的名称“a”、“b”或“c”来引用变量。
最佳答案
当您对 .lp 文件执行“exportModel”时,将使用构造函数中变量的“名称”。它对于交互式调试很有用,但对于在代码中访问并不有用,而且根本不需要它。如果您想在表达式中使用数组的元素,那么您需要知道索引。它不是关联数组。但是,您还有很多其他选择。您可以将它们分配给 C++ 变量。
IloBoolVar a(env, "a");
IloBoolVar b(env, "b");
IloBoolVar c(env, "c");
IloBoolVar 类型是实现句柄,因此如果您也需要的话,也可以将值存储在数组中。
IloBoolVarArray bVars(env);
bvars.add(a);
bvars.add(b);
bvars.add(c);
在这种情况下,bvars[0] 和 a 表示相同的变量。您还可以使用 std::map 或 hash-table如果您需要按名称随机访问,则存储变量。
关于c++ - IBM CPLEX - 如何获取对命名变量的引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9316845/