1

我是 GLPK 新手,我想测试我的简单模型,我使用此注释生成不同的随机数据:

param seed:=gmtime();
param u{(i,j) in E}:=(round(seed*Uniform01())) mod 40 ;

我想求解模型100次并获得目标函数最优值的平均值。

我不知道如何编写迭代表达式以在 .mod 文件中重复求解模型。请你帮助我好吗?

这是我的模型:

###  VARIABLES  ###
var x{(i,j) in E} >= 0, <= u[i,j];
###  OBJECTIVE  ###
maximize Val: sum {(1,j) in E} x[1,j];
###  CONSTRAINTS  ###
subject to Balance {i in V diff {1,n}}:
  sum {(j,i) in E} x[j,i] = sum {(i,k) in E} x[i,k];
solve;
4

1 回答 1

1

我还在“ https://lists.gnu.org/mailman/listinfo/help-glpk ”中问了这个问题,我从 Heinrich Schuchardt 那里得到了这个答案,它有效。“亲爱的沙海耶,

glpsol 不能自行迭代多个模型或数据集。

https://en.wikibooks.org/wiki/GLPK/Scripting_plus_MathProg 展示了如何使用脚本语言多次调用 glpsol。

您可以像这样传递随机数生成器的种子值

glpsol --seed SEEDVALUE

在 awk 中,您可以使用函数 rand() 创建随机数。”

要完成模型,我们唯一需要的是添加以下注释:

param n >=1  integer; # Number of nodes
set V := 1..n;  # Set of nodes
set E within (V cross V);  # Set of arcs

这是一个最大流量问题。

于 2015-07-31T13:43:06.963 回答