GMPL通用方式产生参数

时间:2018-03-27 14:37:37

标签: linear-programming glpk

你好有没有办法在GMPL中生成params,例如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?或者我是否需要在数据部分制作此矩阵手册?还有一个问题是,在没有修改目标函数的情况下,如果精确到2个数字,有一个很好的方法可以找到(n)这个问题的最大大小吗?

1 个答案:

答案 0 :(得分:0)

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书籍以了解有关语法的更多信息。

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