- clc;
- clear all;
- data2=xlsread('data.xls',1); %导入原始数据
- data1=data2'; %对原始数据转置,注意数据为横向排列
- X=[data1(2:4,1:31)]; %定义投入指标(2-4行)
- Y=[data1(5,1:31)]; %定义期望产出(5行)
- Z=[data1(6:7,1:31)]; %定义非期望产出(6-7行)
- D=X'; %投入指标转置
- E=Y'; %期望产出转置
- F=Z'; %非期望产出转置
- n=size(X',1);m=size(X,1);s=size(Y,1);q=size(Z,1);
- A=zeros(1,n+m+s+q+1);b=0;
- LB=zeros(n+m+s+q+1);UB=[];
- LB(n+m+s+q+1)=-Inf;
- for i=1:n;
- f=[zeros(1,n) -D(i,:) zeros(1,s) zeros(1,q) 1];
- Aeq=[X eye(m) zeros(m,s) zeros(m,q) -X(:,i)
- Y zeros(s,m) -eye(s) zeros(s,q) -Y(:,i)
- Z zeros(q,m) zeros(q,s) eye(q) -Z(:,i)
- zeros(1,n) zeros(1,m) E(i,:) F(i,:) 1];
- beq=[zeros(m,1)
- zeros(s,1)
- zeros(q,1)
- 1];
- w(:,i)=linprog(f,A,b,Aeq,beq,LB,UB);
- end
- w;
- lambda=w(1:n,:);
- s_minus=w(n+1:n+m,:);
- s_plusg=w(n+m+1:n+m+s,:);
- s_plusb=w(n+m+s+1:n+m+s+q,:);
- theta=w(n+m+s+q+1,:)' %这就是你要的效率
原始数据见附件data:
data.xls
(24 KB, 需要: 1 个论坛币)


雷达卡






京公网安备 11010802022788号







