Bintprog,选择标准

时间:2015-02-11 22:55:09

标签: matlab integer-programming

我有二进制整数编程问题,想要用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},如果选择1和2(连接到3),则表示4可以到达。我能做些什么才能得到我想要的结果?

编辑: 节点3的作用类似于交换机,只有在连接到它的至少2个节点处于活动状态时才能启用。发生这种情况时,可以到达最后一个节点。例如,如果1,2是活动的,则可以达到4。如果1,4是活跃的,则可以说同样,也可以达到2。 3显然不应该是解决方案。

1 个答案:

答案 0 :(得分:0)

让我们举个例子:

您希望根据不等式f=x1+x2+x3+x4x1+x3>1x2+x3>1x1+x2+x3+x4>1(-A,-b有效地更改{{1}来最小化x3+x4>1转到<=)。

Matlab提供>x1=x2=x4=0,它填满了所有不等式,并提供了x3=1

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

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