900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > matlab如何求解sbm模型 非期望产出的SBM模型代码问题

matlab如何求解sbm模型 非期望产出的SBM模型代码问题

时间:2023-08-26 17:18:22

相关推荐

matlab如何求解sbm模型 非期望产出的SBM模型代码问题

clc,clear all;

load('OUTPUT.mat')

output = OUTPUT

load('INPUT.mat')

input = INPUT

load('UNOUTPUT.mat')

unoutput = UNOUTPUT

[n ,m]=size(output)%n是单元数。m是期望产出数目

[n,k]=size(input)%n是单元数。k是输入数目

[n,m1]=size(unoutput)%n是单元数。m1是非期望产出数目

Do_ccr=[];

Do_bcc=[];

Di_ccr=[];

Di_bcc=[];

for i=1:n

f1=[-1;zeros(n,1)];

A1=[output(i,:)' -output';zeros(k,1) input'];

b1=[zeros(m,1);input(i,:)'];

Aeq1=[0,ones(1,n)];

beq1=1;

lb1=[1;zeros(n,1)];

[x1,fval]=linprog(f1,A1,b1,[],[],lb1,[]);

[x2,fvalvrs]=linprog(f1,A1,b1,Aeq1,beq1,lb1,[]);

Do_ccr(i,1)=1/x1(1,1);

Do_bcc(i,1)=1/x2(1,1);

end;

for i=1:n

f2=[1;zeros(n,1)];%(n+1)*1

A2=[-input(i,:)' input';zeros(m,1) -output'];

b2=[zeros(k,1);-output(i,:)'];

Aeq2=[0,ones(1,n)];

beq2=1;

lb2=zeros(1+n,1);

ub2=ones(1+n,1)

[x3,fval]=linprog(f2,A2,b2,[],[],lb2,[]);

[x4,fvalvrs]=linprog(f2,A2,b2,Aeq2,beq2,lb2,[]);

Di_ccr(i,1)=x3(1,1);

Di_bcc(i,1)=x4(1,1);

end;

sbm_eff=[];

sminus=[];

splus=[];

这是我的非期望产出的SBM模型,做出来的结果与实际有很大差距,请问错在哪里呢?

output=[output,unoutput];

for i=1:n

c=ones(k,1)./input(i,:)';%k*1,k是输入个数

d=ones(m+m1,1)./output(i,:)';%(m+m1)*1,m是期望输出个数

f3=[1;(-1/k)*c;zeros(m+m1,1);zeros(n,1)];%(1+k+m+n)*1

Aeq3=[1,zeros(1,k),(1/(m+m1))*d',zeros(1,n);-input(i,:)',eye(k,k),zeros(k,m),zeros(k,m1),input'

-output(i,:)',zeros(m+m1,k),-eye(m+m1,m+m1),output'];

%Aeq3=[1,(1/m)*d',zeros(1,k),zeros(1,n);-input(i,:)',eye(k,k),zeros(k,m),input'

%-output(i,:)',zeros(m,k),-eye(m,m),output'];

beq3=[1;zeros(k,1);zeros(m+m1,1)];

lb3=zeros(1+k+m+m1+n,1);

options=optimset;

[x5,fvalsbm,exitflag]=linprog(f3,[],[],Aeq3,beq3,lb3,[],[],options);

sbm_eff(i,:)=fvalsbm;

sminus(i,1:k)=x5(2:k+1,1)';

sg(i,1:m)=x5(k+2:k+m+1,1)';

sb(i,1:m1)=x5(k+2+m:k+m+1+m1,1)';

end;

save D:\sbm_05.mat Do_ccr Do_bcc Di_ccr Di_bcc sbm_eff sminus splus

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。