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) 但不行,怎么弄 展开
 我来答
tianxiawulang
推荐于2018-04-13 · TA获得超过2.7万个赞
知道大有可为答主
回答量:4732
采纳率:89%
帮助的人:2631万
展开全部

有以下几种方式:

1、用全局变量,不建议;

 

2、传递附加参数:把非线性约束条件定义成函数

function [c,ce] = nonlcon1(x,a)

并且调用fmincon的时候用:

fmincon(FUN,X,A,B,Aeq,Beq,LB,UB,@nonlcon1,options,a)

其中,附加参数aoptions后面,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
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式