1
查找经由整数规划的最优二进制矩阵
我试图实现在optimal binary matrix溶液用Matlab函数intlinprog
到测试输入作为在下面的代码在MATLAB
a=[450;400;250;200]; % test input
b=[750;500]; % test input
n = 4; % length of a
m = 2; % length of b
oness=ones(m,1);
f = (kron(a,oness))'; % objective function
cont1=kron(eye(n),oness');
cont2=-cont1;
cont3=-kron(a',eye(m));
A=[cont1;cont2;cont3];
bb=[ones(n,1);-zeros(n,1);-b];
lb = zeros(m*n,1);
ub = [ones(m*n,1)]; % enforces binary
intcon= [1,2,3,4,5,6,7,8]; % all variable should be integers
Aeq = [];
beq = [];
x = intlinprog(f,intcon,A,bb,Aeq,beq,lb,ub)
然而,我收到消息
Intlinprog
停止,因为没有整数点满足约束条件。
该测试输入的明显最佳解决方案是x = [0;1;1;0;1;0;0;0]
。
但是,如果我通过intcon=[]
删除完整性约束,我会得到一个最佳解决方案。为什么函数不能找到积分约束的最小解?
尝试随机生成的测试输入。您可能选择了相应的多面体不包含任何整数点的测试输入。 –
我在我现在已经修复的问题定义中有一个错误。该代码现在可以正确输出。我发布新代码作为答案。非常感谢@RodrigodeAzevedo的真诚支持。 – Mustafa