全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 MATLAB等数学软件专版
16056 7
2014-10-21
悬赏 10 个论坛币 已解决
clear
X=[30  60  55  40 70
   25  40  70  30 90
   130 150 120 70 180
];
Y=[35 43 76 52 63
   60 80 53 42 71
];

n=size(X',1);m=size(X,1);s=size(Y,1);
A=[-X' Y']; b=zeros(n,1);
LB=zeros(m+s,1);UB=[];
for i=1:n;
  Aeq=[X(:,i)' zeros(1,s)]; beq=1;
  f=[zeros(1,m)-Y(:,i)'];
  w(:,i)=LINPROG(f,A,b,Aeq,beq,LB,UB);
Eii=Y(:,i)'*w(m+1:m+s,i);
for k=1:n;            
f=[zeros(1,m) Y(:,k)'];
Aeq=[X(:,k)' zeros(1,s)
    Eii*X(:,i)'-Y(:,i)'];
beq=[1
  0];
v=LINPROG(f,A,b,Aeq,beq,LB,UB);
E(i,k)=(Y(:,k)'*v(m+1:m+s))/(X(:,k)'*v(1:m));
  end
end
E
Mean(E)
[Y I]=sort(mean(E));
fliplr(I)



matlab运行上述程序时,出现如下错误,如何解决呢?不知道如何更正
??? Error using ==> minus
Matrix dimensions must agree.

最佳答案

myzrl20 查看完整内容

matlab运行上述程序时,出现如下错误,如何解决呢?不知道如何更正 ??? Error using ==> minus Matrix dimensions must agree. 矩阵的维度在数学运算符减号的两边不区配:zeros(1,m)的维度为1x3, Y(:,i)'的维度为1x2 f=[zeros(1,m)-Y(:,i)']; 如果是减号运算,[]是不需要,如果需要[],意味着矩阵的组合; Aeq=[X(:,k)' zeros(1,s) Eii*X(:,i)'-Y(:,i)']; 同理。 所以楼主需要将减号去掉。 那么这个线性规划程序 ...
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2014-10-21 21:37:22
matlab运行上述程序时,出现如下错误,如何解决呢?不知道如何更正
??? Error using ==> minus
Matrix dimensions must agree.
矩阵的维度在数学运算符减号的两边不区配:zeros(1,m)的维度为1x3, Y(:,i)'的维度为1x2
f=[zeros(1,m)-Y(:,i)']; 如果是减号运算,[]是不需要,如果需要[],意味着矩阵的组合;

Aeq=[X(:,k)' zeros(1,s)
    Eii*X(:,i)'-Y(:,i)']; 同理。

所以楼主需要将减号去掉。

那么这个线性规划程序就能跑起来。

-------------------------------------------------------------------------

clear
X=[30  60  55  40  70
   25  40  70  30  90
   130 150 120 70  180
];
Y=[35 43 76 52 63
   60 80 53 42 71
];
n=size(X',1);m=size(X,1);s=size(Y,1);E=zeros(n,n);w=zeros(n,n);
A=[-X' Y']; b=zeros(n,1);
LB=zeros(m+s,1);UB=[];
for i=1:n
    Aeq=[X(:,i)' zeros(1,s)]; beq=1;
    f=[zeros(1,m) Y(:,i)'];
    w(:,i)=linprog(f,A,b,Aeq,beq,LB,UB);
    Eii=Y(:,i)'*w(m+1:m+s,i);
    for k=1:n      
        f=[zeros(1,m) Y(:,k)'];
        Aeq=[X(:,k)' zeros(1,s)
            Eii*X(:,i)' Y(:,i)'];
        beq=[1
          0];
        v=linprog(f,A,b,Aeq,beq,LB,UB);
        E(i,k)=(Y(:,k)'*v(m+1:m+s))/(X(:,k)'*v(1:m));
    end
end
mean(E)
[Y,I]=sort(mean(E));
fliplr(I)
%

-------------------------------------------------------------------------
运行结果如下:
Optimization terminated.
Optimization terminated.
Optimization terminated.
Optimization terminated.
Optimization terminated.
Optimization terminated.
Optimization terminated.
Optimization terminated.
Optimization terminated.
Optimization terminated.
Optimization terminated.
Optimization terminated.
Optimization terminated.
Optimization terminated.
Optimization terminated.
Optimization terminated.
Optimization terminated.
Optimization terminated.
Optimization terminated.
Optimization terminated.
Optimization terminated.
Optimization terminated.
Optimization terminated.
Optimization terminated.
Optimization terminated.
Optimization terminated.
Optimization terminated.
Optimization terminated.
Optimization terminated.
Optimization terminated.
>> E
E =
   1.0e-09 *
    0.1030    0.0695    0.0817    0.0001    0.0000
    0.1532    0.0049    0.0554    0.0000    0.1323
    0.1575    0.0024    0.0009    0.1030    0.0029
    0.0000    0.0234    0.0814    0.0347    0.0000
    0.2348    0.0527    0.0236    0.0010    0.0000
>> w
w =
    0.0006    0.0070    0.0022    0.0001    0.0058
    0.0291    0.0141    0.0018    0.0052    0.0014
    0.0020    0.0001    0.0062    0.0120    0.0026
    0.0000    0.0000    0.0000    0.0000    0.0000
    0.0000    0.0000    0.0000    0.0000    0.0000

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-10-21 22:16:49
保存为m文件,运行,找到出错的那一行。
提示说明,某个减号左右两个变量矩阵的size不相同。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-2-4 17:42:13
楼主 你好,请问你的问题解决了吗?我也遇到同样的问题,求帮助啊
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-2-5 19:05:22
myzrl20 发表于 2015-2-4 18:53
matlab运行上述程序时,出现如下错误,如何解决呢?不知道如何更正
??? Error using ==> minus
Matrix di ...
请教一下,你用的是哪版Matlab,我copy了你的代码过去但是提示还是Error,我还是Matlab菜鸟,能不能请你帮我处理个数据?感激不尽!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-2-6 00:02:26
nuanuan727 发表于 2015-2-5 19:05
请教一下,你用的是哪版Matlab,我copy了你的代码过去但是提示还是Error,我还是Matlab菜鸟,能不能请你帮 ...
matlab 2014a

帮处理数据就算了。
帮看看具体错误和调试程序还可以。
你把那段代码保存的m文件发给我,这样更明白。

另,如果实在对matlab处理规划问题不够熟悉。
可以用用lindo或lingo软件,那是专门处理数学建模的,可以处理线性、非线性规划问题。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群