matlab代码如下:
clear;close all;
aa=[38 40 42 44 46]; %尺寸i
b=[1 2 3]; %方式j
d=[54 84 91 60 29]; %尺寸i的需求
a=[2 0 0
2 1 0
0 2 1
0 1 1
0 0 1];
len=4; %切割台长,最多放模具数量
h=35; %最高层数
m=size(aa,2); %尺寸i的总个数=5
n=size(b,2); %切割方式j的总个数=3
y=binvar(n,1); %是否用方式j
z=intvar(n,1); %用方式j的层数
%目标函数:
w=sum(y)+sum(sum(a*z));
C=[];
for i=1:m
s=sum(a(i,:)*z(1,:));
C=[C,s>=d(i)];
end %满足需求
for j=1:n
C=[C,sum(a(:,j))<=len*y(j,1)];
end %长度限制
for j=1:n
C=[C,z(j,1)<=h*y(j,1)];
end %高度限制
result=optimize(C,w);
if result.problem== 0
value(y)
value(z)
value(w)
else
disp('求解过程中出错');
end
运行结果为:
【Dual infeasible due to empty column 'x5'.
Presolve time = 0.00 sec. (0.00 ticks)
求解过程中出错】
请问应该怎么改,谢谢!