matlab非线性约束条件function [c,ce] = nonlcon1(x)
非线性优化时要把非线性约束条件编成m文件:function[c,ce]=nonlcon1(x),,然后发现条件里需要一些其他参数,比如说:c(1)=a(1)*x(1)+a...
非线性优化时要把非线性约束条件编成m文件:function [c,ce] = nonlcon1(x) ,,然后发现条件里需要一些其他参数,比如说:c(1)=a(1)*x(1)+a(2)*cos(x(2));;;这里a是之前算出来的该怎么加到这个m文件里去。我试过function [c,ce] = nonlcon1(x,a) 但不行,怎么弄
展开
1个回答
展开全部
有以下几种方式:
1、用全局变量,不建议;
2、传递附加参数:把非线性约束条件定义成函数
function [c,ce] = nonlcon1(x,a)
并且调用fmincon的时候用:
fmincon(FUN,X,A,B,Aeq,Beq,LB,UB,@nonlcon1,options,a)
其中,附加参数a在options后面,options以及前面的参数都不能缺,如果不需要,可以用空数组([ ])占位。
3、使用嵌套函数,也就是说把约束条件作为主函数的嵌套函数,大致结构如下:
function main
a = 1;
fmincon(FUN,X,A,B,Aeq,Beq,LB,UB,@nonlcon1)
function [c,ce] = nonlcon1(x)
c(1)=a(1)*x(1)+a(2)*cos(x(2));
...
end
end
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询