GMPL 生成参数的通用方法

GMPL generic way to produce params

你好,有没有办法在 GMPL 中生成参数,例如 io 有一个函数 min:c[i]*x[i] 并约束看起来像 A[i][j]*x[i]=b[i]。其中 A[i][j]=1/(i+j-1) 且 i,j=1,2....,n。 c[i]=b[i]=sum(j=1,...,n)1/(i+j-1) 其中 i=1,...,n。 所以有一个问题是有没有办法从等式中生成矩阵 A?或者我需要在数据部分制作这个矩阵手册吗?还有一个问题是在不修改 objective 函数的情况下以 2 个数字的精度找到 (n) 这个问题的最大大小吗?

param n := 3;
set I := 1..n;

param A{i in I, j in I} := 1/(i+j-1); 
param c{i in I} := sum{j in I} 1/(i+j-1);
# or better (may be):
# param c{i in I} := sum{j in I} A[i,j];
display A,c;

end;

输出应如下所示:

Reading model section from x.mod...
9 lines were read
Display statement at line 8
A[1,1] = 1
A[1,2] = 0.5
A[1,3] = 0.333333333333333
A[2,1] = 0.5
A[2,2] = 0.333333333333333
A[2,3] = 0.25
A[3,1] = 0.333333333333333
A[3,2] = 0.25
A[3,3] = 0.2
c[1] = 1.83333333333333
c[2] = 1.08333333333333
c[3] = 0.783333333333333

GMPL 是 AMPL 的子集。您可能需要阅读 AMPL 书籍以了解有关语法的更多信息。

恐怕我不明白你的第二个问题。