首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cplex java api ifThen结构

cplex java api ifThen结构
EN

Stack Overflow用户
提问于 2014-08-04 05:34:55
回答 1查看 563关注 0票数 0

我正在尝试在cplex中对一个具有IF-THEN结构的约束进行建模。在2d数组(m x m+n)中,如果sum_ofRows(m行)是1,那么sum_ofColumns(m列)应该是0。在cplex java api中,IF-THEN结构将两个约束cplex.ifThen(Iloconstraint arg0,Iloconstraint arg2)作为参数。1)如何创建约束而不将其添加到模型中,这意味着不使用cplex.addEq(1,variable),而是将其作为约束存储在某个地方?2)我们有一个表达式,然后我们添加相等或不等式检查,它也会自动添加到模型中,对吗?

代码语言:javascript
复制
    for(int i=0; i<m; i++){
                drArrRow[i] =  cplex.linearNumExpr();
                    for(int j=0; j<m;j++){
                        drArrRow[i].addTerm(1, x[i][j]);

                    }
                    cplex.addEq(1, drArrRow[i]);
                }

            //second part "then"
               for(int j=0; j<m; j++){
                   drArrCol[j] =  cplex.linearNumExpr();
                    for(int i=0; i<m;i++){
                        drArrCol[i].addTerm(1, x[i][j]);

                    }
                    cplex.addEq(1, drArrCol[j]);
                }

    //cplex.ifThen(constraint, constraint);
    //Here i got stuck

谢谢!

这是一个正确的答案吗?

代码语言:javascript
复制
            IloLinearNumExpr[] drArrCol= new IloLinearNumExpr[m];
            IloLinearNumExpr[] drArrRow= new IloLinearNumExpr[m];
            IloConstraint[] drColConstr= new IloConstraint[m];
            IloConstraint[] drRowConstr= new IloConstraint[m];
            // first part "if"  
            for(int i=0; i<m; i++){
                drArrRow[i] =  cplex.linearNumExpr();
                    for(int j=0; j<m;j++){
                        drArrRow[i].addTerm(1, x[i][j]);

                    }
                    drColConstr[i] = cplex.eq(1, drArrRow[i]);
                }

            //second part "then"
               for(int j=0; j<m; j++){
                   drArrCol[j] =  cplex.linearNumExpr();
                    for(int i=0; i<m;i++){
                        drArrCol[j].addTerm(1, x[i][j]);

                    }
                    drRowConstr[j] = cplex.eq(1, drArrRow[j]);
                }
             //end of 3 constraint 

               for(int i=0; i<m; i++){
                        cplex.ifThen(drRowConstr[i], drColConstr[i]);
                    }
EN

回答 1

Stack Overflow用户

发布于 2015-05-05 00:45:00

看起来你有了正确的答案。我以前在没有将约束添加到模型中的情况下使用过约束,它的工作方式与您在代码中编写的一样。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25109351

复制
相关文章

相似问题

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