在 GAMS 中执行 SetGlobal
SetGlobal in execute in GAMS
考虑我要执行到参数(paramter1 和parameter2)。我执行以下操作:
$onEcho > Textfile.txt
par = parameter1 rng = parameter1!A1
par = parameter2 rng = parameter2!A1
$offEcho
execute_unload 'export.gdx', parameter1 parameter2;
但是我可以不把那行写两次,而是这样做:
$setGlobal Parameter parameter1 parameter2
$onEcho > Textfile.txt
par = %parameter% rng = %parameter%!A1
$offEcho
execute_unload 'export.gdx', %parameter%;
但是,此代码不起作用。我怎样才能在一个地方指定我的参数而不是多次写入它们?
在 GAMS 中你可以定义 macros, but for your purpose, $batInclude 可能会更好:
$onEchoV > execUnload.inc
$echo par = %1 rng = %1!A1 > Textfile.txt
execute_unload 'export.gdx', %1;
$offEcho
$batInclude execUnload.inc parameter1
$batInclude execUnload.inc parameter2
编辑:现在,我更好地理解了你的问题,在评论中讨论之后,这里有一个使用 put facility:
的新解决方案
$setGlobal Parameter parameter1, parameter2
Set exportPars / %Parameter% /;
File fx / 'Textfile.txt' /;
put fx;
loop(exportPars,
put 'par = ' exportPars.tl:0 ' rng = ' exportPars.tl:0 '!A1' /;
);
execute_unload 'export.gdx', %Parameter%;
考虑我要执行到参数(paramter1 和parameter2)。我执行以下操作:
$onEcho > Textfile.txt
par = parameter1 rng = parameter1!A1
par = parameter2 rng = parameter2!A1
$offEcho
execute_unload 'export.gdx', parameter1 parameter2;
但是我可以不把那行写两次,而是这样做:
$setGlobal Parameter parameter1 parameter2
$onEcho > Textfile.txt
par = %parameter% rng = %parameter%!A1
$offEcho
execute_unload 'export.gdx', %parameter%;
但是,此代码不起作用。我怎样才能在一个地方指定我的参数而不是多次写入它们?
在 GAMS 中你可以定义 macros, but for your purpose, $batInclude 可能会更好:
$onEchoV > execUnload.inc
$echo par = %1 rng = %1!A1 > Textfile.txt
execute_unload 'export.gdx', %1;
$offEcho
$batInclude execUnload.inc parameter1
$batInclude execUnload.inc parameter2
编辑:现在,我更好地理解了你的问题,在评论中讨论之后,这里有一个使用 put facility:
的新解决方案$setGlobal Parameter parameter1, parameter2
Set exportPars / %Parameter% /;
File fx / 'Textfile.txt' /;
put fx;
loop(exportPars,
put 'par = ' exportPars.tl:0 ' rng = ' exportPars.tl:0 '!A1' /;
);
execute_unload 'export.gdx', %Parameter%;