2

我正在尝试使用以下形式求解方程组:

a5 + a6 + a7 + f5 + f6 + f7 = 11;
b5 + b6 + b7 + e5 + e6 + e7 = 100;
c5 + c6 + c7 + d5 + d6 + d7 = 100;

a5 + b5 + c5 + d5 + e5 + f5 = 11;
a6 + b6 + c6 + d6 + e6 + f6 = 100;
a7 + b7 + c7 + d7 + e7 + f7 = 100;

其中所有变量和数字都是二进制文件。

有没有办法在 Matlab 中做到这一点?

例如,通过用十进制值替换二进制数:

a5 + a6 + a7 + f5 + f6 + f7 = 3;
b5 + b6 + b7 + e5 + e6 + e7 = 4;
c5 + c6 + c7 + d5 + d6 + d7 = 4;

a5 + b5 + c5 + d5 + e5 + f5 = 3;
a6 + b6 + c6 + d6 + e6 + f6 = 4;
a7 + b7 + c7 + d7 + e7 + f7 = 4;

并以某种方式告诉 Matlab 未知数应该是整数并且来自区间 [0:1]?


这是 A x = b 的形式:

A = [1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1;
0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0;
0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0;
1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0;
0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0;
0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1];

b = [3 4 4 3 4 4];

那么下一步是什么?

4

1 回答 1

0

bintprog,如果你有优化工具箱。

由于可能有多种解决方案,我将选择总和最小的解决方案。

>> A = [1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1;
0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0;
0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0;
1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0;
0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0;
0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1];

>> b = [3 4 4 3 4 4];

>> bintprog(ones(1,18),[],[],A,b)
Optimization terminated.
ans =
     0
     1
     1
     1
     1
     1
     1
     1
     1
     1
     0
     0
     0
     0
     1
     0
     1
     0
于 2012-06-10T20:46:03.317 回答