MATLAB中fmincon函数出现问题,求大神帮助
近期做毕设,用到此函数。我的需求是在一个循环体内有一个待优化函数f有5个参数,其中有两个参数mar和mbr是固定的,每循环一次改变一次。剩下的三个变量PA,PB,PR.是...
近期做毕设,用到此函数。我的需求是 在一个循环体内有一个待优化函数f有5个参数,其中有两个参数mar和mbr是固定的,每循环一次改变一次。剩下的三个变量PA,PB,PR.是待优化的参数。 而我的约束条件没有非线性的。
这个是fmincon函数的调用形式。 我的问题是如果我没有非线性约束条件,但是有其它的参数需要传递。那么我在 ‘Nlc’(也就是非线性约束函数)这个位置写什么?我的程序如下
下面为待优化函数
我执行后显示
由于我以前几乎没有用MATLAB,对基本的知识可能还有很多不知道。
希望有大神能帮我看看,给我点帮助,万分感谢 展开
这个是fmincon函数的调用形式。 我的问题是如果我没有非线性约束条件,但是有其它的参数需要传递。那么我在 ‘Nlc’(也就是非线性约束函数)这个位置写什么?我的程序如下
下面为待优化函数
我执行后显示
由于我以前几乎没有用MATLAB,对基本的知识可能还有很多不知道。
希望有大神能帮我看看,给我点帮助,万分感谢 展开
1个回答
展开全部
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。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询