AMPL 中的临时变量

Temporary variable in AMPL

AMPL有没有办法声明和使用临时变量?我的意思是编程中使用的 "regular" 变量(而不是模型变量),特别是在 .run 文件中,例如在 .run 文件中保存重复使用的字符串:

some_file = sprintf(foo%u.txt, 3);  # Temporary variable
print "Hello World" > some_file;
print "Hello again" > some_file;

如果它在您要解决的优化中没有变化,那么它就是一个参数。您可以使用 let 更改参数值,如下所示:

reset;
param blah symbolic;
let blah := "hello world";
print blah;
let blah := "this parameter has changed";
print blah;

AMPL中参数默认为数字;字符串参数需要显式声明为 symbolic.

请注意,我已经在第一个赋值的单独语句中声明了参数。如果我要在声明中分配一个值,例如 param blah symbolic := "hello world";,那么当我尝试更改该值时它会失败。