我是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;
答案 0 :(得分:1)
我也在&#34; https://lists.gnu.org/mailman/listinfo/help-glpk&#34;中提出了这个问题, 我从Heinrich Schuchardt那里得到了这个答案并且它有效。 &#34;亲爱的Shaghayegh,
glpsol不能自行迭代多个模型或数据集。
https://en.wikibooks.org/wiki/GLPK/Scripting_plus_MathProg 演示了如何使用脚本语言多次调用glpsol。
您可以像这样传递随机数生成器的种子值
glpsol - 选择SEEDVALUE
在awk中,您可以使用函数rand()创建随机数。&#34;
要完成模型,我们唯一需要的是添加以下注释:
param n >=1 integer; # Number of nodes
set V := 1..n; # Set of nodes
set E within (V cross V); # Set of arcs
这是最大流量问题。