24小时热门版块排行榜    

查看: 516  |  回复: 3

TNT19053

新虫 (初入文坛)

[求助] MATLAB大神请帮忙看看 已有1人参与

我现在在做一个优化方法的迭代,所写的程序如下:
o1=zeros(1,3);o2=zeros(1,2);
A=[0.81         0.28         0.96
0.91         0.55         0.49
0.13         0.96         0.80
0.91         0.96         0.14
0.63         0.16         0.42
0.10         0.97         0.92 ];
B=[0.79         0.68
0.96         0.76
0.66         0.74
0.04         0.39
0.85         0.66
0.93         0.17 ];
Ad=[0.81         0.28         0.96 ];
Bd=[0.79         0.68 ];
for ai=[0.3966         0.5259         0.6586         0.4097         0.6999         0.3936];
    switch ai
        case ai==0.3966;
            Ai=[0.81         0.28         0.96];
            Bi=[0.79         0.68];
        case ai==0.5259;
            Ai=[0.91         0.55         0.49];
            Bi=[0.96         0.76];
        case ai==0.6586;
            Ai=[0.13         0.96         0.80];
            Bi=[0.66         0.74];
        case ai==0.4097;
            Ai=[0.91         0.96         0.14];
            Bi=[0.04         0.39];
        case ai==0.6999;
            Ai=[0.63         0.16         0.42];
            Bi=[0.85         0.66 ];
        otherwise ai==0.3936;
            Ai=[0.10         0.97         0.92];
            Bi=[0.93         0.17];
    end
c=-[o1 Bd];
a=[-A B;ai*Ai -Bi];
b=zeros(7,1);
aeq=[Ad o2];
beq=1;
lb=zeros(5,1);
[x,fval,exitflag]=linprog(c,a,b,aeq,beq,lb,[])
end
我想对矩阵ai依次取值进行一个循环,当ai取不同值的时候还有不同的变量,例如ai取第一个值时,即ai=0.3966时,   Ai=[0.81         0.28         0.96], Bi=[0.79         0.68];
依次类推,但是我不知道怎么写这个程序才能让ai在取不同值时选择不同的Ai,Bi进行计算,还有就是怎么让最后的fval显示到一个矩阵中?
计算的结果应该是
0.7581
0.7581
0.7581
0.6384
0.7581
0.7477
我计算了很多次,只有最后一个才是相等的,
求大神帮忙看看,谢谢了;
金币不太多,还希望见谅。
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

文刀星

木虫 (小有名气)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
TNT19053: 金币+15, ★★★很有帮助, 谢谢你,问题都解决了 2015-09-25 16:11:26
o1=zeros(1,3);o2=zeros(1,2);
A=[0.81         0.28         0.96
0.91         0.55         0.49
0.13         0.96         0.80
0.91         0.96         0.14
0.63         0.16         0.42
0.10         0.97         0.92 ];
B=[0.79         0.68
0.96         0.76
0.66         0.74
0.04         0.39
0.85         0.66
0.93         0.17 ];
Ad=[0.81         0.28         0.96 ];
Bd=[0.79         0.68 ];
fval=zeros(6,1);

ai=[0.3966         0.5259         0.6586         0.4097         0.6999         0.3936];
Ai=[0.81         0.28         0.96;
    0.91         0.55         0.49;
    0.13         0.96         0.80;
    0.91         0.96         0.14;
    0.63         0.16         0.42;
    0.10         0.97         0.92];
  
Bi=[0.79         0.68;
    0.96         0.76;
    0.66         0.74;
    0.04         0.39;
    0.85         0.66;
    0.93         0.17];
for i=1:6;
   
c=-[o1 Bd];
a=[-A B;ai(i)*Ai(i, -Bi(i,];
b=zeros(7,1);
aeq=[Ad o2];
beq=1;
lb=zeros(5,1);
[x,fval(i),exitflag]=linprog(c,a,b,aeq,beq,lb,[]);
end
fval=
-0.7581
   -0.7581
   -0.7581
   -0.6384
   -0.7581
   -0.7477
你要实现的那两个功能这个程序可以,但是结果对不对就看你的参数及方法了!
2楼2015-09-25 14:32:44
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

文刀星

木虫 (小有名气)

怎么会出现笑脸?笑脸的地方用替代
3楼2015-09-25 14:34:28
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

文刀星

木虫 (小有名气)

靠,用:)替代
4楼2015-09-25 14:34:57
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 TNT19053 的主题更新
信息提示
请填处理意见