AMPL 求和变量运算符
AMPL Sum variables operator
我正在尝试使用 AMPL 解决一组问题并添加它们的 objective 值。但是,求和运算符似乎不起作用,只会不断更新为最新值。
set CASES := {1,2,3,4,5,6};
model modelFile.mod;
option solver cplex;
option eexit -123456789;
var total;
let total := 0;
for {j in CASES}
{
reset data;
data ("data" & j & ".dat")
solve;
display total_Cost;
let total := total + total_Cost;
display total;
}
示例输出:
CPLEX 12.6.3.0: optimal solution; objective 4.236067977
2 dual simplex iterations (0 in phase I)
total_Cost = 4.23607
total = 4.23607
CPLEX 12.6.3.0: optimal solution; objective 5.656854249
5 dual simplex iterations (0 in phase I)
total_Cost = 5.65685
total = 5.65685
其中 total_cost
是来自优化问题的 objective 值
由于 AMPL 是一种 algebraic modeling language 而不是通用编程语言,因此其中的变量表示在求解过程中确定的优化变量。所以每次调用 solve
时,优化变量 total
都会被重置。这里你需要的是一个参数,它不像变量,在优化过程中不会改变:
param total;
我终于意识到这是由于 AMPL 的新关键字 "reset data" 造成的。通过将关键字更改为 "update",代码有效。
我正在尝试使用 AMPL 解决一组问题并添加它们的 objective 值。但是,求和运算符似乎不起作用,只会不断更新为最新值。
set CASES := {1,2,3,4,5,6};
model modelFile.mod;
option solver cplex;
option eexit -123456789;
var total;
let total := 0;
for {j in CASES}
{
reset data;
data ("data" & j & ".dat")
solve;
display total_Cost;
let total := total + total_Cost;
display total;
}
示例输出:
CPLEX 12.6.3.0: optimal solution; objective 4.236067977
2 dual simplex iterations (0 in phase I)
total_Cost = 4.23607
total = 4.23607
CPLEX 12.6.3.0: optimal solution; objective 5.656854249
5 dual simplex iterations (0 in phase I)
total_Cost = 5.65685
total = 5.65685
其中 total_cost
是来自优化问题的 objective 值
由于 AMPL 是一种 algebraic modeling language 而不是通用编程语言,因此其中的变量表示在求解过程中确定的优化变量。所以每次调用 solve
时,优化变量 total
都会被重置。这里你需要的是一个参数,它不像变量,在优化过程中不会改变:
param total;
我终于意识到这是由于 AMPL 的新关键字 "reset data" 造成的。通过将关键字更改为 "update",代码有效。