【发布时间】:2018-01-27 02:05:16
【问题描述】:
我想启动一个 mxn 二进制矩阵。矩阵每一列的总和等于给定值 s(j),对于 j=1..n。另外,矩阵每一行的求和应该在给定的范围内:lhs是dl(i),rhs是du(i),对于i=1..m。
现在我只能随机生成二进制列,每个列的和等于该列的s(j),例如以下代码。
xij = zeros(m,n);
for j=1:n
randRows=randperm(m); %a row vector containing a random permutation of the integers from 1 to m inclusive.
rowsWithOne=randRows(1:sj(j)); %row indices having 1, and sum up to sj
xij(rowsWithOne,j)=1;
end
但是,xij 通常不满足水平约束。我在想我应该创建一个矩阵首先满足行约束lhs(下界)dl(i),然后,列约束s(j),最后填充偏移量以满足rhs du(i),但我没有知道如何在 Matlab 中实现它。有没有创建 xij 的想法?
提前致谢。
【问题讨论】:
-
实际上,了解您的真正约束在这里会有所帮助...
-
一些示例
dl、du、sj和示例预期结果将是有益的。
标签: matlab