2015-02-11 172 views
0

我有一个二进制整数规划问题,并希望与bintprog来解决它。Bintprog,选择标准

A = [1 0 1 0; 0 1 1 0; 1 1 1 1; 0 0 1 1]; 
f=[1 1 1 1]; 
b=[1 1 1 1]; 
[x,xfval,exitflag,output]=bintprog(f,-A,-b); 

溶液bintprog给我是x={3},但我想解决方案是x={1,2}这意味着图4是可到达的,如果1和2(其连接到3)都被选中。我能做些什么来获得我想要的结果?

编辑: 节点3动作一样,如果使连接到它的至少2个节点是活动的,只能被启用的开关。发生这种情况时,可以到达最后一个节点。例如,如果1,2有效,则可以达到4。如果1,4有效,可以达到2,也可以这样说。 3显然不应该是解决方案。

+0

现在还不清楚你问什么。作为编辑说你的问题很可能是不一样的你上面的代码示例。你应该扩展你的问题,特别是在你将它转换成二进制编程问题的部分。 – Trilarion 2015-02-12 14:19:30

回答

0

让我们把你的例子:

你希望尽量减少f=x1+x2+x3+x4受到不平等x1+x3>1x2+x3>1x1+x2+x3+x4>1x3+x4>1(-A,-B有效地改变<=>)。

Matlab给出了x1=x2=x4=0x3=1,满足所有不等式并给出f=1

想要x1=x2=1x3=x4=0作为解决方案吗?那么,这违反了最后的不平等(x3+x4>1),只会给f=2

如果您需要此解决方案,您必须提供不同的参数f, A, b

+0

嗨,我刚编辑我的问题进一步解释。 – maostah 2015-02-12 14:11:26