【问题标题】:Display commend in ampl在ampl中显示命令
【发布时间】:2019-06-08 13:20:04
【问题描述】:

我在 ampl 中有一个二维变量,我想显示它。我想更改索引的顺序,但我不知道该怎么做!我输入了我的代码、数据和输出,我描述了我想要什么样的输出。 这是我的代码:

param n;
param t;
param w;
param p;
set Var, default{1..n};
set Ind, default{1..t};
set mode, default{1..w};
var E{mode, Ind};
var B{mode,Var};
var C{mode,Ind};
param X{mode,Var,Ind};
var H{Ind};

minimize obj: sum{m in mode,i in Ind}E[m,i];
s.t. a1{m in mode,  i in Ind}: sum{j in Var} X[m,j,i]*B[m,j] -C[m,i]       <=E[m,i];
 solve;
  display C;
data;
param w:=4;
param n:=9;
param t:=2;
param X:=
[*,*,1]: 1    2   3  4 5 6 7 8 9   :=
1   69  59  100 70  35  1   1   0   0
2   34  31  372 71  35  1   0   1   0
3   35  25  417 70  35  1   0   0   1
4   0   10  180 30  35  1   0   0   0
[*,*,2]: 1    2   3  4 5 6 7 8 9   :=
1   64  58  68  68  30  2   1   0   0
2   44  31  354 84  30  2   0   1   0
3   53  25  399 85  30  2   0   0   1
4   0   11  255 50  30  2   0   0   0

这段代码使用glpksol的输出类似于tis:

C[1,1].val = -1.11111111111111
C[1,2].val = -1.11111111111111
C[2,1].val = -0.858585858585859
C[2,2].val = -1.11111111111111
C[3,1].val = -0.915032679738562
C[3,2].val = -1.11111111111111
C[4,1].val = 0.141414141414141
C[4,2].val = 0.2003367003367

但我希望结果是这样的:

C[1,1].val = -1.11111111111111
C[2,1].val = -0.858585858585859
C[3,1].val = -0.915032679738562
C[4,1].val = 0.141414141414141
C[1,2].val = -1.11111111111111
C[2,2].val = -1.11111111111111
C[3,2].val = -1.11111111111111
C[4,2].val = 0.2003367003367

有什么想法吗?

【问题讨论】:

    标签: ampl glpk


    【解决方案1】:

    您可以在.run 文件中使用for 循环和printf 命令:

    for {i in Ind}
        for {m in mode}
            printf "C[%d,%d] = %.4f\n", m, i, C[m,i];
    

    甚至:

    printf {i in Ind, m in mode} "C[%d,%d] = %.4f\n", m, i, C[m,i];
    

    我没有得到与你相同的数值结果,但无论如何输出都有效:

    C[1,1] = 0.0000
    C[2,1] = 0.0000
    C[3,1] = 0.0000
    C[4,1] = 0.0000
    C[1,2] = 0.0000
    C[2,2] = 0.0000
    C[3,2] = 0.0000
    C[4,2] = 0.0000
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-18
      • 2021-08-27
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多