MATLAB中fmincon函数出现问题,求大神帮助

近期做毕设,用到此函数。我的需求是在一个循环体内有一个待优化函数f有5个参数,其中有两个参数mar和mbr是固定的,每循环一次改变一次。剩下的三个变量PA,PB,PR.是... 近期做毕设,用到此函数。我的需求是 在一个循环体内有一个待优化函数f有5个参数,其中有两个参数mar和mbr是固定的,每循环一次改变一次。剩下的三个变量PA,PB,PR.是待优化的参数。 而我的约束条件没有非线性的。

这个是fmincon函数的调用形式。 我的问题是如果我没有非线性约束条件,但是有其它的参数需要传递。那么我在 ‘Nlc’(也就是非线性约束函数)这个位置写什么?我的程序如下

下面为待优化函数

我执行后显示

由于我以前几乎没有用MATLAB,对基本的知识可能还有很多不知道。
希望有大神能帮我看看,给我点帮助,万分感谢
展开
 我来答
tianxiawulang
推荐于2016-03-12 · TA获得超过2.7万个赞
知道大有可为答主
回答量:4732
采纳率:89%
帮助的人:2631万
展开全部

1、首先,你的参数写错位了——A后面应该有b吧?缺少一个参数,是造成目前报错的直接原因。

 

2、没有非线性约束,则该位置的参数也写成空矩阵 []。

 

3、传递附加参数的做法,除了你现在使用的参数补位方法外,目前更多的使用匿名函数或嵌套函数的做法。

 

匿名函数:

amr=...;
bmr=...;
fmincon(@(x)EE(x,amr,bmr),....)

嵌套函数:

function main
amr=...;
bmr=...;
fmincon(@EE,....)

    function y=EE(x)
    ....  % 此处可使用amr、bmr等诸函数中定义的变量

    end
end
追问
谢谢你,问题解决了!   不过我现在做这个还有好多其他问题啊,能不能留个QQ什么的联系方式,请教下你。万分感谢····
追答
【优化函数里的beq代表的总功率,我想画一张EEmax关于beq的图,我把beq这个参数改为一个变量的时候就报错, Row dimension of Aeq is inconsistent with length of beq】,注意beq和Aeq的行数应该相等,那样才能构成约束Aeq*x=beq。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式