在GAMS代码中多次使用一段代码

时间:2019-05-26 12:05:16

标签: gams-math

有必要在GAMS代码中重复使用以下代码(我在程序的不同行中将这段代码复制了大约10次或多次,并且使该程序非常不可读。

loop(k,
         loop(s$flag,
                 if( AG(s,k)=TG(s),

                         TG(s)= (TGT(s,k)+2*TGT(s,k-1)+3*TGT(s,k-2))/3  ;
                          flag=0;  );
                );
);

是否有命令或方法可以更轻松地使用这段代码?而不是在整个程序中多次复制?

非常感谢!

1 个答案:

答案 0 :(得分:2)

使用$onecho $offecho设置重复的代码:

$onecho > %gams.scrdir%myfile.rsp

loop(k,
     loop(s$flag,
             if( AG(s,k)=TG(s),

                     TG(s)= (TGT(s,k)+2*TGT(s,k-1)+3*TGT(s,k-2))/3  ;
                      flag=0;  );
            );
);

$offecho

%gams.scrdir%仅将文件保存到临时目录。 (然后在运行后将其删除,并避免使主目录混乱。您可以将其更改为所需的任何路径。)

要在您的代码中使用它:

$include %gams.scrdir%myfile.rsp

请注意,$onecho仅将代码存储在文件中;在您使用$include进行调用之前,GAMS不会使用该代码。