CPLEX错误:数据元素“;xyz";已经设置好了

CPLEX错误:数据元素“;xyz";已经设置好了,cplex,flow,opl,Cplex,Flow,Opl,我在使用流控制在CPLEX opl中编码时发现一个错误。当我运行配置文件时,我遇到了错误:数据元素“x”已经被设置。(资源=2.dat)。我已从复制了查询,因为我正在尝试解决相同的错误 我有一系列问题: 1。如果一个人在模型中有一个已定义的变量(例如“int x=1;”),并使用相同的变量加载外部数据(使用.dat文件或addDataSource()),那么他/她会得到一个错误“数据元素“x”已设置。”。如何指示OPL忽略此类情况,或者覆盖现有的x值。我只是希望代码不要退出这里 2。如果模型中有

我在使用流控制在CPLEX opl中编码时发现一个错误。当我运行配置文件时,我遇到了错误:数据元素“x”已经被设置。(资源=2.dat)。我已从复制了查询,因为我正在尝试解决相同的错误

我有一系列问题:

1。如果一个人在模型中有一个已定义的变量(例如“int x=1;”),并使用相同的变量加载外部数据(使用.dat文件或addDataSource()),那么他/她会得到一个错误“数据元素“x”已设置。”。如何指示OPL忽略此类情况,或者覆盖现有的x值。我只是希望代码不要退出这里

2。如果模型中有“int x=…;”而外部数据源不提供它,则在生成步骤中会出现错误“外部数据元素“x”未定义”。如何忽略这些错误?如果外部数据不提供,它看起来可以被视为“int x;”

3。如果模型中没有变量的任何定义,但外部数据有,则会引发错误“Element”x“not defined.”。同样的问题,如何忽略这些错误,避免退出

我将感谢你对我的帮助。下面是我的小示例代码和.dat文件说明

int a = 5;
range g1 = 1..a;
int x[g1] = ...;
int y[g1] = ...;

minimize sum (i in g1) 3*x[i];

subject to {
forall (i in g1)
  3*x[i] + 4*y[i] <= 300;
}

main{
var iteration=1;  
var piece = 5;

    while(iteration<=3)
    {
        var src = new IloOplModelSource("practice.mod");
        var def = new IloOplModelDefinition(src);    
        var opl = new IloOplModel(def,cplex);
        var filename=iteration;
        var data = new IloOplDataSource(filename+".dat");
        opl.addDataSource(data);
        var details=opl.dataElements;


        opl.generate();
        if(cplex.solve())
        {
            writeln(filename+"->"+1);
        }
        else
        {
            writeln(filename+"->"+0);
        }
        iteration++;
    }
}
2.dat

x = [218,60,156,221,211];
y = [0,0,0,0,0];
 x = [218,60,156,221,211];
 y = [1,2,1,5,1];
x = [218,60,156,221,211];
y = [2,3,5,2,6];
3.dat

x = [218,60,156,221,211];
y = [0,0,0,0,0];
 x = [218,60,156,221,211];
 y = [1,2,1,5,1];
x = [218,60,156,221,211];
y = [2,3,5,2,6];
  • 如果您有多个同名数据,OPL应该使用哪一个?第一个?第一个碰巧有正确类型的?最后一个?为了避免所有歧义,触发错误是正确的做法

  • 如果你不提供你所说要提供的所有数据,这个程序就无能为力了。所以你的问题2没有答案

  • 在OPL中,在使用变量之前不声明它们是不可能的。语言的设计没有考虑到这一点

  • 如果您有多个同名数据,OPL应该使用哪一个?第一个?第一个碰巧有正确类型的?最后一个?为了避免所有歧义,触发错误是正确的做法

  • 如果你不提供你所说要提供的所有数据,这个程序就无能为力了。所以你的问题2没有答案

  • 在OPL中,在使用变量之前不声明它们是不可能的。语言的设计没有考虑到这一点


  • 你找到问题的答案了吗?你找到问题的答案了吗?