利用模型输出,解决Yalmip建模+Cplex求解的约束出错问题

4 篇文章 0 订阅
2 篇文章 2 订阅

在进行优化求解过程中,难免会遇到这种情况:
Row ‘c373’ infeasible, all entries at implied bounds.
那么应该怎么办呢?
当用Yalmip建模+Cplex求解过程中,由于Yalmip的建模方式与Cplex有一定的不同,如图:

saveampl(constraint,object,'mymodel');

得到结果为:
在这里插入图片描述
从图中可知,由于没有准确的行编号,利用其对Cplex求解过程中出现的某行出现的问题进行准确定位不太现实。
其实,在‘YALMIP建模+CPLEX求解,让优化问题更简单’文章中已经给出了答案。
其实完全可以输出Cplex求解时使用的模型,其方法为:

ops=sdpsettings('solver','cplex');%设置求解方式
[model,recoveryalmip,diagnostic,internalmodel]=export(co,-object,ops);%转为cplex模型
milpt=Cplex('milp for htc');
milpt.Model.sense='minimize';
milpt.Model.obj=model.f;
milpt.Model.lb=model.lb;
milpt.Model.ub=model.ub;
milpt.Model.A=[model.Aineq;model.Aeq];
milpt.Model.lhs=[-inf*ones(size(model.bineq,1),1);model.beq];
milpt.Model.rhs=[model.bineq;model.beq];
milpt.Model.ctype=model.ctype;
milpt.writeModel('ab.lp');%输出cplex模型(注意大小写)
milpt.solve();%模型求解

利用writeModel输出模型为:
在这里插入图片描述
利用Cplex输出模型的行编号,我们可以准确定位至出错的行数,对照约束进行修改便可解决问题。

博文不易,欢迎关注’一个交通人’
在这里插入图片描述

  • 7
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 23
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值