- 阅读权限
- 255
- 威望
- 0 级
- 论坛币
- 990 个
- 通用积分
- 0
- 学术水平
- 0 点
- 热心指数
- 0 点
- 信用等级
- 0 点
- 经验
- 338 点
- 帖子
- 19
- 精华
- 0
- 在线时间
- 26 小时
- 注册时间
- 2008-3-11
- 最后登录
- 2022-12-5
|
感谢各位高手的继续关注。
现在matlab的笨方法如下:
matlab笨方法:
c1=[0.2 0.3 0.5]*[0.2 0.6 0.7;0.3 0.5 0.4;0.4 0.4 0.7];a=[0.3 0.5 0.6];b=[0.4];aeq=[1 1 1];beq=[1];[xc1,fval1]=linprog(-c1,a,b,aeq,beq,zeros(3,1));
c2=[0.2 0.3 0.5]*[0.2 0.6 0.7;0.4 0.4 0.7;0.3 0.5 0.4];a=[0.3 0.5 0.6];b=[0.4];aeq=[1 1 1];beq=[1];[xc2,fval2]=linprog(-c2,a,b,aeq,beq,zeros(3,1));
c3=[0.2 0.3 0.5]*[0.3 0.5 0.4;0.2 0.6 0.7;0.4 0.4 0.7];a=[0.3 0.5 0.6];b=[0.4];aeq=[1 1 1];beq=[1];[xc3,fval3]=linprog(-c3,a,b,aeq,beq,zeros(3,1));
c4=[0.2 0.3 0.5]*[0.3 0.5 0.4;0.4 0.4 0.7;0.2 0.6 0.7];a=[0.3 0.5 0.6];b=[0.4];aeq=[1 1 1];beq=[1];[xc4,fval4]=linprog(-c4,a,b,aeq,beq,zeros(3,1));
c5=[0.2 0.3 0.5]*[0.4 0.4 0.7;0.2 0.6 0.7;0.3 0.5 0.4];a=[0.3 0.5 0.6];b=[0.4];aeq=[1 1 1];beq=[1];[xc5,fval5]=linprog(-c5,a,b,aeq,beq,zeros(3,1));
c6=[0.2 0.3 0.5]*[0.4 0.4 0.7;0.3 0.5 0.4;0.2 0.6 0.7];a=[0.3 0.5 0.6];b=[0.4];aeq=[1 1 1];beq=[1];[xc6,fval6]=linprog(-c6,a,b,aeq,beq,zeros(3,1));
fvalall=[fval1,fval2,fval3,fval4,fval5,fval6];
x=[xc1 xc2 xc3 xc4 xc5 xc6];
然后选取fvalall中最小的元素虽对应的x中的列向量就是所要求的最优解;
现在的问题是这样子一个一个输入命令太复杂了,原来目函数中的矩阵A是3行3列的,所以我们只需输入3的阶乘也就是6个目标函数,就可以了,但如果是10,20,30的阶乘怎么办呢?
所以这里需要一个循环函数,小弟在此绊住了,需要大家的帮助,thx!
|
-
总评分: 经验 + 9
论坛币 + 9
查看全部评分
|