有必要在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; );
);
);
是否有命令或方法可以更轻松地使用这段代码?而不是在整个程序中多次复制?
非常感谢!
答案 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不会使用该代码。