【问题标题】:Test a model with random data on GLPK在 GLPK 上使用随机数据测试模型
【发布时间】:2015-11-14 18:12:46
【问题描述】:

我是 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;

【问题讨论】:

  • 您是否可以提供更完整的模型(工作示例)?我不知道如何完成缺失的行。

标签: random glpk


【解决方案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() 创建随机数。"

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

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

这是一个最大流量问题。

【讨论】:

    猜你喜欢
    • 2015-03-04
    • 2021-12-23
    • 2017-01-26
    • 2012-07-18
    • 1970-01-01
    • 2016-07-22
    • 2014-07-28
    • 2021-09-23
    • 2018-10-14
    相关资源
    最近更新 更多