Matlab:二进制线性规划

Matlab: Binary Linear Programming

我正在尝试使用二进制整数编程在 Matlab 上求解一些方程。 我有 3 组方程式:

  1. Ma.X=1
  2. Mp.X<=1
  3. Mr.X<=m*

其中,Ma是大小为5*12的已知矩阵

X 未知,大小为 12*1

另外 Mp 是大小为 5*12

的已知矩阵

Mr 是一个大小为 4*12 的已知矩阵。

方程式中的1是一个单位矩阵,在两个集合(1&2)中大小都是5*1

m* 是给定的已知矩阵,大小为 4*1

我正在尝试使用命令 bintprog 但如何放置 1 个等式和 2 个不等式 获取 X 的值。此外,我没有要插入的函数 f,我只有一组方程式。给定 X 个值为 1 或 0 的未知值。

我试过这个命令bintprog([],Ma,One51,Mp,One51) 但它给了我 The problem is infeasible. 零答案矩阵。

请帮我在 Matlab 上解决这个问题

bintprog 的正确语法是 X = bintprog(f,A,b,Aeq,beq)

如果你没有f(这意味着你只想要任何可行点),你可以将它设置为[]。但是,对于其他人,您的语法有点错误。

我假设您的约束中的 + 实际上是 *,否则矩阵代数就没有意义了。

试试这个:

X = bintprog([],[Mp;Mr],[ones(5,1);mstar],Ma,ones(5,1))

如果即使那样它告诉你这个问题是不可行的;没有 X 可以满足您的所有约束,这也可能是真的。