我在计算多目标非线性约束时,遇到变量不支持使用点索引,请问应该如何解决?
x0=[1;1;2;4]';%初始点
lb=[55;75;1000;2];
ub=[80;110;3000;20];
[xopt,fopt]=fminimax(@AB,x0,[],[],[],[],[],lb,ub,@fun);
%[xopt,fopt]=fgoalattain(@AB,x0,[],[],[],[],[],lb,ub,@fun)
无法执行赋值,因为此类型的变量不支持使用点进行索引。
出错 fminimax (line 290)
options.FinDiffType = optimget(options,'FinDiffType',defaultopt,'fast',allDefaultOpts);
出错 Untitled13 (line 5)
[xopt,fopt]=fminimax(@AB,x0,[],[],[],[],[],lb,ub,@fun);
你的变量类型不支持,应该在使用该变量之前进行强制转化
像这个就可以运行
function f=mutiplesubjiect(x)
f(1)=3*x(1)-2*x(2);
f(2)=-4*x(1)-3*x(2);
clc,clear
x0=[0;0];
a=[2 3;2 1];
b=[18;10];
lb=[0;0];
[x,favl]=fminimax('mutiplesubjiect',x0,a,b,[],[],lb,[])
x =
0
6
favl =
-12 -18
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632
%% 1. V带传动多目标优化设计的目标函数文件
function f=AB(x)
f(1)=0.000049*(x(2)^2-x(1)^2)*(x(4)-1);
f(2)=0.00000982*(x(2)^2-x(1)^2)/(x(3)*x(4)*(x(2)^3-x(1)^3));
%% 2. V带传动多目标优化设计的约束函数文件
function[c,ceq]=fun(x)
c(1)=20+x(1)-x(2);
c(2)=2.5*(x(4)+1)-30;
c(3)=x(3)/(3.14*(x(2)^2-x(1)^2)^2);
c(4)=(0.00222*x(3)*(x(2)^3-x(1)^3))/(x(2)^2-x(1)^2)^2;
c(5)=(0.0266*x(3)*x(4)*(x(2)^3-x(1)^3))/(x(2)^2-x(1)^2)^2;
ceq=[];
%% 3. V带传动多目标优化设计的调用命令
x0=[1;1;2;4]';%初始点
lb=[55;75;1000;2];
ub=[80;110;3000;20];
[xopt,fopt]=fminimax(@AB,x0,[],[],[],[],[],lb,ub,@fun);
%[xopt,fopt]=fgoalattain(@AB,x0,[],[],[],[],[],lb,ub,'Nlc',@fun)
您好,谢谢您,我是插入了这三段代码之后出现了错误。
非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!
速戳参与调研>>>https://t.csdnimg.cn/Kf0y
请问问题解决了吗,一样不明白