GAMS 模型的问题

Problems with GAMS model

我一直在体验 GAMS,但我仍然不知道我在做什么。 有人可以看看这个短模型并尝试为我指明正确的方向吗? 我在方程式的编译中遇到问题,得到其中的一些: 维度不同 - 符号引用 more/less 声明的指数 作为常量输入的不受控集

Sets
        i months / 1, 2, 3 /
        j months / 1, 2, 3 /;

Parameters
         cp(i)  production cost in month i
         /        1     1.08
                  2     1.11
                  3     1.10
                                   /

         rh(i)  number of necessary workers in month i
         /        1     3
                  2     4
                  3     6
                                     /

        cap(i)  production capacity in month i
         /        1     25
                  2     20
                  3     25
                                       /
         q(j)  number of motors to deliver in month j
         /        1     10
                  2     15
                  3     25
                                 /

Scalar ca  cost to store motors for a month /0.15/ ;

variables
    mc(i,j) cost of production of motors in month i to be delivered in month j
    x(i,j)  number of motors produced in month i to be delivered in month j;


free variables
    wf workforce

    z cost of production
    hr human resources;

Equations
    cost cost 
    human_resources human resources
    r1 restriction1
    r2 restriction2 ;

cost .. z  =e=  sum((i,j), (cp(i)+(j-i)*ca)*x(i,j)) ;
human_resources .. hr =e= sum(i, sum(j, rh(i)*x(i, j))) ;
*lower than
r1..   sum(j, x(i,j))  =l=  cap(i) ;
*greater than
r2.. sum(i, x(i,j))  =g=  q(j) ;

Model
    motors 'temp' /all/;

Solve motors using mip minimizing mc;

Display mc, x;

这可行,但请检查解决方案。我添加了正变量 x 因为否则你会产生负数。 主要问题是您正在优化已声明但从未在方程式中使用的变量。此外,您正在优化的变量不能有维度(我认为)。 然后,对于约束 r1 和 r2,您需要添加一个索引,因为它们必须每个月进行验证,因此 r1(i) 和 r2(j)。他们其实是一个"family of constraints"。 您不能减去月份的索引(无法解释原因),但可以减去它们在集合中的顺序。
最后,在获得解决方案后计算 mc(i,j) 作为参数。

Sets
        i months / 1, 2, 3 /
        j months / 1, 2, 3 /;

Parameters
         cp(i)  production cost in month i
         /        1     1.08
                  2     1.11
                  3     1.10
                                   /

         rh(i)  number of necessary workers in month i
         /        1     3
                  2     4
                  3     6
                                     /

        cap(i)  production capacity in month i
         /        1     25
                  2     20
                  3     25
                                       /
         q(j)  number of motors to deliver in month j
         /        1     10
                  2     15
                  3     25
                                 /

Scalar ca  cost to store motors for a month /0.15/ ;

variables
*    mc(i,j) cost of production of motors in month i to be delivered in month j
    x(i,j)  number of motors produced in month i to be delivered in month j;

positive variable x;
free variables
    wf workforce

    z cost of production
    hr human resources;

Equations
    cost cost
    human_resources human resources
    r1(i) restriction1
    r2(j) restriction2 ;

cost .. z  =e=  sum((i,j), (cp(i)+(ord(j)-ord(i))*ca)*x(i,j)) ;
human_resources .. hr =e= sum(i, sum(j, rh(i)*x(i, j))) ;
*lower than
r1(i)..   sum(j, x(i,j))  =l=  cap(i) ;
*greater than
r2(j).. sum(i, x(i,j))  =g=  q(j) ;

Model
    motors 'temp' /all/;

Solve motors using mip minimizing z;

Parameter mc(i,j);
mc(i,j)= (cp(i)+(ord(j)-ord(i))*ca)*x.l(i,j);
Display mc, x.l;