登录论坛

查看完整版本 : [MATLAB数学相关] 运筹学:指派问题?


zplwg
2010-04-05, 18:32
运行如下m文件,则:fval=23,但fv=8,两者不等;

但:如果把e的内容换一个,即:e=[2 15 13 4;10 4 14 15;9 14 16 13;7 8 11 9];,则fval=fv=28


这个m文件问题出在哪里?为什么fval不等于fv?



e=[4 6 5 8;6 10 7 8;7 8 11 9;9 3 8 4];
a=e';
f=a(:);
o=ones(1,4);
z=zeros(1,4);
y=eye(4);
aeq=[o,z,z,z;z,o,z,z;z,z,o,z;z,z,z,o];
aeq=[aeq;y,y,y,y];
beq=ones(8,1);
lb=zeros(16,1);
[x,fval,exitflag,output,lambda]=linprog(f,[],[],aeq,beq,lb);
xv=reshape(x,4,4);
xx=xv';
xx0=round(xx);
xe=xx0./e;
xe=xx0.*e;
fv=sum(sum(xe));