AMPL书第9章第163页给出了从文件中读取单个参数的示例:
例如,如果您想阅读我们的简单生产模型的周数和每周可用的小时数(图4-4),
param T > 0;
param avail {1..T} >= 0;
从包含week_data.txt
的文件4
40 40 32 40
然后您可以发出命令read T, avail[1], avail[2], avail[3], avail[4] <week_data.txt;
此命令在带有错误colon missing where expected
的GLPK中失败。建模语言GNU MathProg语言引用仅包含用于读取表格数据的table data IN
。GLPK能从文件中读取单个参数吗?
发布于 2018-07-23 15:41:45
AMPL和GMPL是相关的功能语言。GMPL包含AMPL语法的子集,但在表语句等几个方面有所不同。
读取单个参数的一种方法是将数据写入具有特定语法的文件,例如,下面的内容显示一个参数和一个表:
param T := 4;
param avail :=
1 0
2 1
3 1
4 0;
end;
要验证语法,请考虑文件problem.mod
中的代码
param T > 0;
param avail {1..T} >= 0;
var use {1..T} >= 0;
maximize usage: sum {t in 1..T} avail[t];
subject to constraint {t in 1..T}: use[t] <= avail[t];
solve;
end;
结果表明,它起了作用:
> glpsol -m problem.mod -d problem.dat
GLPSOL: GLPK LP/MIP Solver, v4.65
Parameter(s) specified in the command line:
-m problem.mod -d problem.dat
Reading model section from problem.mod...
13 lines were read
Reading data section from problem.dat...
9 lines were read
Generating usage...
Generating constraint...
Model has been successfully generated
glp_mpl_build_prob: row usage; constant term 2 ignored
GLPK Simplex Optimizer, v4.65
5 rows, 4 columns, 4 non-zeros
Preprocessing...
~ 0: obj = 2.000000000e+00 infeas = 0.000e+00
OPTIMAL SOLUTION FOUND BY LP PREPROCESSOR
Time used: 0.0 secs
Memory used: 0.1 Mb (110236 bytes)
Model has been successfully processed
发布于 2018-07-13 17:57:46
可以使用table语句从CSV文件或SQL表中读取参数。
您可以使用数据文件传递参数,例如,请参阅用AWK和Visual编写数据文件的示例。
https://stackoverflow.com/questions/51269771
复制相似问题