24小时热门版块排行榜    

查看: 528  |  回复: 4

troyzz

木虫 (初入文坛)

[求助] Matlab二次规划语言,高分求大神帮忙修改

在网上看了一遍关于配料比优化的论文,完全按照论文内容试着编了一下,可是无法运行,求大神帮忙改一下。论文就不附上了,有涉嫌侵权嫌疑,把从里面摘抄的一部分附上。
1 function f=myfun(X)
2 f=0.35*X(1)+0.002*X(2)+0.02*X(3)+0.025*X(4) +0.035*X(5)+6*X(6);
3 goal=170;
4 weight=170;
5 X0=[400;170;100;550;1200;6];
6 b=[0;0;0;0;0;0;0;-500;600];
7 Aeq=[0.3226 1 0.4808 0.3774 0.3704 0];
8 beq=990;
9 lb=[300;130;50;500;1000;315];
10 ub=[500;210;200;1 000;1400;12];
11 A=[0.2 -1 0.2 0 0 0;
-0.4 1 -0.4 0 0 0;
0 0 0 -0.65 0.35 0;
0 0 0 0.6 01.4 0;
-14.6 52.71 -14.6 0 0 0;
0.01 0 0 0 0 -1;
-0.02 0 0 0 0 1;
-1 0 -1 0 0 0;
1 0 1 0 0 0];
12 [X,fval,attainfactor,exitflag]=fgoalattain(xy,X0,goal,weight,A,b,Aeq,beq,lb,ub)[ Last edited by troyzz on 2013-5-18 at 12:07 ]
回复此楼

» 本帖附件资源列表

  • 欢迎监督和反馈:小木虫仅提供交流平台,不对该内容负责。
    本内容由用户自主发布,如果其内容涉及到知识产权问题,其责任在于用户本人,如对版权有异议,请联系邮箱:xiaomuchong@tal.com
  • 附件 1 : 程序语言.docx
  • 2013-05-17 16:43:10, 31.2 K

» 猜你喜欢

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

Fighting~~
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

ausir

木虫 (正式写手)

【答案】应助回帖

感谢参与,应助指数 +1
这里面有几个问题:

1. 把 myfun 这个用户自定义函数单独存在一个.m文件中。后面在 fgoalattain中调用;
2. ub 的最后一项比 lb 对应的数值小,ub中是12, lb中是315;
3. ub 矩阵中的写法,1000 写作 1 000,这个导致识别错误;
4. 矩阵A的第4行第5列的数值到底是多少? 01.4? 可以按照1.4来计算,但是计算迭代到700次时依然无法收敛,系统自动停止运算,没有结果。
5. 最后的关键,第12行的函数中,根本就没有提到你自己定义的函数 myfun,而是使用了没有任何定义的 xy。根本不会有任何运算。
6. 关于fgoalattain函数的调用语法问题,在myfun 前面要加一个 @符号或使用 'myfun' 。运算结果一样。都无法取得附件中中所要求的结果。
以上看法供参考。
2楼2013-05-18 13:35:58
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

ausir

木虫 (正式写手)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★
troyzz: 金币+8, 有帮助, 谢谢你的解答 2013-05-19 11:53:01
xzhdty: 谢谢参与 2013-05-19 12:00:29
引用回帖:
2楼: Originally posted by ausir at 2013-05-18 13:35:58
这里面有几个问题:

1. 把 myfun 这个用户自定义函数单独存在一个.m文件中。后面在 fgoalattain中调用;
2. ub 的最后一项比 lb 对应的数值小,ub中是12, lb中是315;
3. ub 矩阵中的写法,1000 写作 1 000, ...

补充说明一下: 我在计算时,把Ub的最后一项设置为1200,这样就大于lb中的315,能够进行运算。但是无法保证是否是真实的需要,请楼主斟酌。
3楼2013-05-18 13:38:06
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

troyzz

木虫 (初入文坛)

引用回帖:
3楼: Originally posted by ausir at 2013-05-18 13:38:06
补充说明一下: 我在计算时,把Ub的最后一项设置为1200,这样就大于lb中的315,能够进行运算。但是无法保证是否是真实的需要,请楼主斟酌。...

原来是复制过程中出现很多错误,我又仔细的看了一下那篇论文,并参考了您的意见,自己演算了一遍,附上修改后的语言还是不行,其实我对fgoalattain不熟悉。
function f=myfun(X)
f=0.35*X(1)+0.002*X(2)+0.02*X(3)+0.025*X(4) +0.035*X(5)+6*X(6);
goal=170;
weight=170;
X0=[400;170;100;550;1200;6];
b=[0;0;0;0;0;0;0;-500;600];
Aeq=[0.3226 1 0.4808 0.3774 0.3704 0];
beq=990;
lb=[300;130;50;500;1000;3.5];
ub=[500;210;200;1000;1400;12];
A=[0.2 -1 0.2 0 0 0;
   -0.4 1 -0.4 0 0 0;
   0 0 0 -0.65 0.35 0;
   0 0 0 0.6 -0.4 0;
   -14.6 52.708 -14.6 0 0 0;
   0.01 0 0 0 0 -1;
   -0.02 0 0 0 0 1;
   -1 0 -1 0 0 0;
   1 0 1 0 0 0];
[X,fval,attainfactor,exitflag]=fgoalattain(@myfun,X0,goal,weight,A,b,Aeq,beq,lb,ub,nonlcon)
Fighting~~
4楼2013-05-18 15:01:59
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

troyzz

木虫 (初入文坛)

引用回帖:
3楼: Originally posted by ausir at 2013-05-18 13:38:06
补充说明一下: 我在计算时,把Ub的最后一项设置为1200,这样就大于lb中的315,能够进行运算。但是无法保证是否是真实的需要,请楼主斟酌。...

我已经解决了,把程序分成了两个,一、二行保存为myfun.m,组成嵌入式,谢谢你的解答。
Fighting~~
5楼2013-05-19 11:52:02
已阅   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 troyzz 的主题更新
信息提示
请填处理意见