使用 gams-c++ api 访问多维变量的条目

Accessing entries of multidimensional variables using the gams-c++ api

我正在用我的 C++ 程序生成以下 gams 程序

variable x(*) /1.lo = -1,1.up = 1,2.lo = -1,2.up = 1/;
variable obj; equation eqobj; eqobj.. obj =e= x['1']+x['2'];
parameter ms, ss, lbd, ubd, cpu;
model mod /all/;
option decimals = 8;
solve mod minimizing obj using minlp;
lbd=mod.objest; ubd=obj.l;
ms=mod.modelstat; ss=mod.solvestat; cpu=mod.resusd;

并使用 gams-c++ api 让 gams 解决它。之后,我想用这种方法在c++中获取结果:

auto value = m_job.outDB().getVariable(var).findRecord().level();

job是我的GAMSJob,用来解决上面的程序,var是一个包含变量名的字符串,我想获取它的值。 这种方法非常适合一维变量,例如当我的变量如下所示时

variable x;
x.up = 1;
x.lo = 0;

我在上面的代码中将 "x" 作为 var 传递。

我现在尝试使用 "x['1']" 之类的字符串访问多维变量的条目,但总是返回 0。获取我想要的值的正确方法是什么,即多维变量的条目?

我猜你想遍历 x 的所有记录? tutorial 中实际上有一个二维变量的示例:

for (GAMSVariableRecord rec : m_job.outDB().getVariable("x"))
    cout << "x(" << rec.key(0) << "," << rec.key(1) << "):" << " level=" << rec.level() << " marginal=" << rec.marginal() << endl;