CBC - know “why” a program is infeasible

六眼飞鱼酱① 提交于 2021-01-28 03:42:11

问题


I use CBC to solve different integer linear programming problems. For some of them, the set of constraints is such that there is no solution. In this case, I get something like this:

Problem is infeasible - 0.30 seconds
Infeasible - objective value -6832.50000000

Is there any way CBC can tell me somehow "why" the problem is infeasible? For example, I would be happy to have a minimal set of constraints that are incompatible.


回答1:


I'm pretty sure, this functionality is not implemented in CBC.

Alternative software

There is support for this concept in Cplex and Gurobi though. For the latter i can confirm, that this works quite well (called Irreducible Inconsistent Subsystem (IIS)). Gurobi is also available without costs if you are in an academic setting (your access-domain needs to be recognized as university) and your project qualifies as academic project (always better to check out the terms of usage yourself).

Custom implementation

If you want to implement this yourself, have a look at:

O. Guieu and J.W. Chinneck (1999), "Analyzing Infeasible Mixed-Integer and Integer Linear Programs", INFORMS Journal on Computing, vol. 11, no. 1, pp. 63-77.

or

Ulrich Junker. 2004. QUICKXPLAIN: preferred explanations and relaxations for over-constrained problems. In Proceedings of the 19th national conference on Artifical intelligence (AAAI'04), Anthony G. Cohn (Ed.). AAAI Press 167-172.

The latter is implemented in this Ruby wrapper for cbc



来源:https://stackoverflow.com/questions/37593986/cbc-know-why-a-program-is-infeasible

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!