首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以将MathProg MIP文件转换为SCIP认可的格式?

是否可以将MathProg MIP文件转换为SCIP认可的格式?
EN

Stack Overflow用户
提问于 2014-07-10 02:22:20
回答 1查看 1K关注 0票数 3

我一直在用GLPK来解决一些混合整数规划问题。下面是一个MathProg格式的示例输入文件:

代码语言:javascript
复制
set REACTIONS;
set REACTANTS;
param Ys {i in REACTANTS, j in REACTIONS};
param Gamma {i in REACTANTS, j in REACTIONS};
param eps;
param delt;
var w {i in REACTANTS} >=-delt <=delt;
var R0 {i in REACTIONS} >=0 <=1, integer;
var Rn {i in REACTIONS} >=0 <=1, integer;
minimize z:  sum{i in REACTIONS} -Rn[i];
s.t. const1{i in REACTIONS} : sum{k in REACTANTS} w[k]*Gamma[k,i] <= delt*(1-R0[i]);
s.t. const2{i in REACTIONS} : -sum{k in REACTANTS} w[k]*Gamma[k,i] <= delt*(1-R0[i]);
s.t. const3{i in REACTIONS} : Rn[i] <= 1-R0[i];
s.t. const5{i in REACTIONS} : sum{k in REACTANTS} w[k]*Gamma[k,i] <= delt*(1-Rn[i])-eps;
s.t. const6{i in REACTIONS, j in REACTIONS: i <> j} : sum{k in REACTANTS} w[k]*(Ys[k,i]-Ys[k,j]) <= delt*(1-Rn[i]+Rn[j]+R0[j]);
data;
set REACTIONS:= 1 2 3 4 5 6;
set REACTANTS:= 1 2 3 4 5 6;
param Ys:   1   2   3   4   5   6:=
1    1  0   0   0   0   0
2    1  0   0   0   0   0
3    0  1   1   0   0   0
4    0  0   0   1   0   0
5    0  0   0   1   0   0
6    0  0   0   0   1   1;
param Gamma:    1   2   3   4   5   6:=
1    -1 1   0   0   0   1
2    -1 1   1   0   0   0
3    1  -1  -1  0   0   0
4    0  0   1   -1  1   0
5    0  0   0   -1  1   1
6    0  0   0   1   -1  -1;
param eps:=0.1;
param delt:=10;
end;

对于这类更大的问题,我一直遇到性能问题,而且由于SCIP声称要比MIP的GLPK快几倍,所以似乎值得研究。但是,当涉及到输入文件格式时,我还无法理解文档的头绪。工商及科技局网页说它支持AMPL格式,GLPK的主页认为MathProg是AMPL的一个子集。试图通过scip -f file.nl将上述文件输入SCIP3.1.0,将返回以下错误:

代码语言:javascript
复制
read problem <file.nl>
============

no reader for input file <file.nl> available

我不确定这是因为我没有构建带有AMPL支持的SCIP,还是其他什么东西。我在构建带有AMPL支持的SCIP时发现了这篇博客文章,但是这些说明似乎已经过时了,因为SCIP3.1.0的源代码zip不包含interfaces文件夹。

所以,我有两个问题:

  1. 有可能让SCIP识别我的MathProg输入吗?
  2. 如果没有,是否有人建议如何将其转换成公认的格式?自动化的方法会更好,因为我真的不想学习另一种格式,但是手动方法总比什么都不学要好。

谢谢你的帮助,为我的无知道歉!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-10 08:53:41

正如我在上面的评论中指出的,Ampl接口仍然包含在SCIP发行版中,您应该能够编译它并阅读您引用的优秀博客文章中记录的问题。

如果您想尝试不同的文件格式,我会看到两个选项:

  1. 使用glpk将您的问题转换为可由SCIP识别的文件格式。我找到了方法glp_write_mps()glp_write_lp。可同时读取.lp.mps-files。确保正确使用这些文件扩展名,因为SCIP不识别.lp-format中的文件,而是以.txt结尾。
  2. 使用Zimpl来解决您的问题。ZimplAmpl的两种格式非常相似,参见文档中的示例和进一步参考。Zimpl中的问题描述可以转换为.lp-format或由SCIP直接读取,如果您使用默认的ZIMPL=true-option编译ZIMPL=true-option。
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24666531

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档