我希望使用任何开源解决程序将cplex .mod和.dat文件转换为glpk .mod和.dat (单独的模型和数据文件),然后用不同的数据文件编译模型,最好使用glpsol。据我所知,glpsol没有为opl cplex .mod文件提供读取命令。我不想通过oplrun导出mps或lp文件,然后转换为glpk .mod文件,因为cplex不是开源的,lp/mps格式不分别转换模型和数据文件。
发布于 2019-10-15 12:51:03
这里有一个shell脚本glp-convert,运行glpsol .mod -> .lp等--
#!/bin/bash
# glp-convert to=lp *.mps
# see also [LPsolve doc on file formats](http://lpsolve.sourceforge.net/5.5/formulate.htm)
# note that glpk .mod is gmpl, not ampl
to=lp
help() {
cat <<!
--------------------------------------------------------------------------------
glp-convert [to=glp / lp / mps / freemps] file*.glp / file*.lp / file*.mod / file*.mps
converts e.g. file*.mod to file*.lp, gmpl to cplex
default: to=lp, cplex format
--------------------------------------------------------------------------------
!
exit
}
case $1 in
to=* )
export "$1"
shift
esac
[[ -f $1 ]] ||
help
glpread() { # .mod -> --model etc.
case ${1%.gz} in
*.glp ) echo --glp ;;
*.lp ) echo --lp ;; # cplex
*.mod ) echo --model ;; # gmpl math prog lang
*.mps ) echo --freemps ;;
* ) exec echo >&2 "? $1 should be .glp .lp .mod or .mps"
esac
}
#...............................................................................
for file
do
base=${file##*/}
base=${base%%.*}
echo "
-- $file > $base.$to"
glpsol --check \
`glpread $file` $file \
--w$to $base.$to \
--log $base.convertlog
done发布于 2016-04-07 19:40:37
虽然大多数求解者(例如CPLEX和GLPK)都会理解(免费)mps或类似的文件(只包含纯粹的优化问题)。所有其他特性,如数据库连接、输出工具或分离的数据文件,只能在专用的数学/优化编程语言(如OPL和GMPL)中使用。
虽然从数学编程语言到mps或相关的单向转换器是很常见的,但我还没有看到任何可以将一种数学编程语言转换成另一种语言的导入/导出函数或解析器。
我想您必须自己完成从opl语法到gmpl语法的翻译工作,才能包含结构和特性。由于Cplex和GLPK解决器在复杂问题上的性能不同,因此在开始将模型代码迁移到不同的编程语言之前,请先检查是否可以在GLPK中解决导出的.mps文件(在合理的时间内)。
https://stackoverflow.com/questions/36465232
复制相似问题