[已解决] MATLAB中函数的表达

[复制链接]
阿战与一博 发表于 2021-4-7 16:41:58
我的目标函数为 min Z = 0.1*f1 + 10*f2 + 10*f3
其中,函数的具体表达为:f1 = max{g1,g2,g3}
                                      g1 = x1*5 + x2 + x3*2
                                      g2 = x4*3 + x5*7
                                      g3 = x1*3 + x4*5 + x5*2

                                      f2 = x1 + x2 + x3 + x4 +x5
                                      f3 = (x1*3 + x2*2 + x3*6 + x4 + x5*4)/5

自变量x的取值范围为[0,1],利用fmincon函数进行求解,编写的fun代码如下:
g1 = @(x) x(1)*5 + x(2) + x(3)*2;
g2 = @(x) x(4)*3 + x(5)*7;
g3 = @(x) x(1)*3 + x(4)*5 + x(5)*2;
f1 = max(g1,g2,g3);
f2 = @(x) x(1) + x(2) + x(3) + x(4) + x(5);
f3 = @(x) (x(1)*3 + x(2)*2 + x(3)*6 + x(4) + x(5)*4)/5;
fun = 0.1*f1 + 10*f2 + 10*f3;


运行后,系统报错为:
错误使用 max
数据类型无效。第一个参数必须为数值或逻辑值。

出错 Q (line 33)
f1 = max(g1,g2,g3);


请问各位大神,我如何将我的函数表达式以正确的形式表达出来,万分感谢!!!

最佳答案


TouAkira 发表于 2021-4-7 17:42:19
改成
f1 = @( x ) max( [ g1( x ), g2( x ), g3( x ) ] );
回复此楼

2 条回复


TouAkira 发表于 2021-4-7 17:42:19
改成
f1 = @( x ) max( [ g1( x ), g2( x ), g3( x ) ] );
回复此楼

阿战与一博 发表于 2021-4-8 10:53:50
TouAkira 发表于 2021-4-7 17:42
改成
f1 = @( x ) max( [ g1( x ), g2( x ), g3( x ) ] );

解决了,感谢,感谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
热门教程
站长推荐
快速回复 返回顶部 返回列表